Quelles sont les formules mathématiques quelque peu communes que vous avez apprises qui vous ont permis d'écrire de meilleurs algorithmes et de devenir un meilleur programmeur?
Exemple: J'ai appris à propos de la formule de distance des ongles: sqrt((x1-x2)^2+(y1-y2)^2)
qui m'a aidé à comprendre comment trouver des objets en comparant 2 facteurs.
L'algèbre booléenne a déjà été mentionnée, mais je voulais fournir des exemples pratiques.
L'algèbre Boolean se rend très souvent utile lorsque vous travaillez avec des expressions booléennes complexes (dans if
déclarations par exemple).
Couple d'expressions et de lois utiles:
Distribution
A & (B | C) = (A & B) | (A & C)
Un | (B & C) = (A | B) & (a | c)
Alors la prochaine fois que vous trébuchez sur une telle expression:
if((A || B) && (A || C) && (A || D) && (A || E)) { ... }
Vous pouvez facilement le réduire pour:
if(A || (B && C && D && E)) { ... }
La loi sur la négation et de Morgan
! (! A) = un
! (A & B) =! A | ! B
! (A | B) =! A &! B
Disons que vous avez une telle déclaration:
if(!A && !B && !C) {..}
et vous devez construire le contraire. L'écriture:
if(!(!A && !B && !C)) {...}
travaillerait, mais ne semble pas aussi cool que cet équivalent:
if(A | B | C) {...}
D'après mon expérience, des formules mathématiques sont utilisées pour des calculs très spécifiques, qui peuvent ou non s'appliquer à votre projet.
Si vous devez calculer quelque chose, il existe généralement une fonction dans une bibliothèque ou un exemple de code source autour qui peut le calculer pour vous. Par exemple, la fonction PMT () d'Excel (), qui calcule les paiements nécessaires pour rembourser une dette à x% sur les périodes y. Voulez-vous vraiment avoir à savoir comment cela le calcule, ou est-il suffisant de simplement appeler le bâtiment intégré?
Au cours des 10 dernières années, je ne pense pas avoir besoin d'utiliser quoi que ce soit de la bibliothèque de mathématiques autre que le CEIL (), Min () et Max (), qui montre que même si les ordinateurs ont été conçus pour résoudre des problèmes à base de mathématiques , l'utilisation commune aujourd'hui est la prise de décision autour du flux de données.
Prenons, par exemple, Facebook, qui a une quantité massive de code. Il y a probablement des mathématiques quelque part quelque part, mais je suppose principalement dans l'API Crypto, qui est probablement une bibliothèque système. Mais l'accès à la base de données, les décisions d'autorisation, le renforcement de la page et le routage de l'information n'utilisent probablement pas beaucoup de mathématiques.
Oui, il y a des marchés qui ont besoin de beaucoup de mathématiques, de physique, d'ingénierie - mais dans ces industries, votre discipline principale est plus susceptible d'être mathématiques/économie, physique, ingénierie, etc., vos questions seraient donc "Comment puis-je écrire formule f(x) dans la langue y? '
Un meilleur usage de votre temps, de l'OMI, serait d'enquêter sur des algorithmes (y compris la grosse notation) et des modèles de conception.
Il n'y a pas de formule qui peut vous faire un meilleur programmeur.
Les compétences liées aux mathématiques peuvent vous faire un meilleur programmeur:
J'aimerais mentionner Série Taylor qui sont tout à fait utiles pour obtenir des approximations rapides de fonctions "plus lourdes". Par exemple sin(x)
environ 0 peut être approximativement avec x-(x*x*x/6)
.
En général, l'idée qu'il existe des façons intelligentes de se rapprocher des choses rapidement, au lieu de les calculer au dernier chiffre significatif (bien que pour les fonctions élémentaires, la plupart des processeurs modernes contiennent des implémentations rapides au fil du mal, il peut donc utiliser que Taylor peut ne pas être significatif. gain de vitesse).
Les formules de base des statistiques sont bonnes à savoir. J'ai utilisé régression linéaire au moins plusieurs fois.
Les lois de Morgan, sur la transformation de Boolean "et" et "ou" par rapport aux négations, et quelques nordbations plus élémentaires sur la logique booléenne (telles que la double négation).
règle de trois (type de multiplication croisée)
+1 pour les formules de statistiques de base.
J'ai vu beaucoup de gars avec difficulté à appliquer cette règle simple sur le code de base.
La programmation est un champ très large. La formule mathématique dépend de la zone de programmation dans laquelle vous êtes. Si vous êtes dans les graphiques, la programmation de jeux Vous devez connaître plus de trigonométrie, géométrie. La programmation du jeu peut être davantage classée dans des zones telles que la physique, le rendu, le shader .. et la liste se passe. Donc, si vous êtes un expert simulateur de physique, vous devriez connaître des choses liées à la physique.
[.____] Si vous êtes en sécurité, vous devez être un expert en théorie numérique.
[.____] En général, vous pouvez y aller une combinaison de ceux-ci et quel que soit votre intérêt. L'apprentissage ne fait jamais mal.
T (n) = à (n/b) + f (n), a> = 1, b> 1
Théorème maître est bon de savoir pour la programmation. Il vous permet de résoudre les relations de récurrence qui peuvent vous aider à trouver la complexité des algorithmes récursifs. Ceci est particulièrement important lors de la rédaction d'un algorithme de style "Divide-et-Conquer". À peu près parlant, vous pouvez utiliser le théorème principal pour obtenir la complexité si vous connaissez la complexité de chaque "étape" et le facteur de ramification.
J'ai vu trop d'écoles enseignant "écrire une boucle pour résumer tous les chiffres entre x et y" au lieu d'algorithmes sont géniaux "
Aussi ... - https://docs.google.com/viewer?url=http://courses.csail.mit.edu/6.042/fall10/mcs-ftl.pdf
loi des cosinules, très important pour beaucoup de problèmes géométriques,
détermination surtout d'angle.
Plus particulièrement, celles que j'ai utilisées avec fréquence relative:
Il y en a plus, et j'en ai utilisé beaucoup d'entre eux à un moment ou à un autre, mais ce sont les 3 que je peux me rappeler d'avoir utilisé un coup d'œil. Ils sont également infiniment utiles si vous pouvez garder leur intention À l'esprit lors de l'écriture de l'unité ou des tests d'intégration.
((ceux de branches sont plus d'un type "appliqué"
Il est difficile de donner des directions générales, car cela dépend fortement du champ de votre choix. Mais ce qui précède couvre les bases de nombreux diplômes d'ingénieur. Mind You, ces catégories se chevauchent souvent (trigonométrie + matrice ops., Calcul et matrix ops., Et ainsi de suite.).
J'ai toujours un manuel mathématique à proximité. L'une est souvent incertaine de quelque chose et cela aide à l'avoir présenté de manière organisée.
Cela pourrait être un peu simple, mais G=(V,E)
est un bon à garder à l'esprit. En d'autres termes, un graphique est un ensemble de sommets et de bords. Les graphiques sont tout simplement utiles pour représenter beaucoup de choses.