2009-05-14 4 views
9

Même si je me considère comme l'un des meilleurs programmeurs sur mon cours CompSci, je suis fasciné par les gens qui sont vraiment bons en mathématiques. Je dois dire que chaque fois que j'ai eu une tâche mathématique ou un examen, mon approche a été très stéréotypée, c'est-à-dire que si je rencontre un problème, je dois utiliser la méthode B et le résultat devrait ressembler à C. Je ne sais vraiment comment résoudre les problèmes que j'ai révisés. Je voudrais vraiment consacrer un peu de temps cet été à mieux comprendre les problèmes mathématiques et leurs solutions afin de plonger plus profondément dans les domaines de l'algorithmique et de la complexité computationnelle.Comment améliorer mes compétences en mathématiques pour devenir un meilleur programmeur

Des conseils?

Répondre

26

Il semble que vous avez des compétences en mathématiques décentes - vous comprenez la mécanique et peut-être un peu de l'intuition derrière ce que vous avez appris - mais que vous êtes un peu court sur bonne résolution de problèmes compétences, d'autant plus que vous dites "je ne sais vraiment comment résoudre les problèmes que j'ai [précédemment rencontrés]".

Pour résoudre ce problème, jetez un coup d'œil à Project Euler. Il n'y a certainement aucun moyen prescrit pour résoudre ces problèmes, et ils nécessitent souvent une synthèse de plusieurs domaines de connaissances pour s'attaquer à chacun avec succès. Vous aurez votre gâteau et le mangerez aussi - devenir un meilleur programmeur/mathématicien et un meilleur résolveur de problèmes général, en voyant comment apporter beaucoup de choses à l'encontre d'un problème particulier. Et vous comprendrez mieux comment des choses qui semblent complètement différentes peuvent s'imbriquer dans un tout unifié. (Ceci est particulièrement vrai dans de nombreux domaines des mathématiques.)

Enfin, bravo à vous pour votre désir de devenir un meilleur praticien de votre métier! Si tout le monde affiche le même niveau d'ambition, je ne peux m'empêcher de penser que le logiciel en général serait beaucoup mieux. Je me rappelle des jours d'études supérieures.

+0

+1 pour le lien ProjectEuler. J'ai cherché quelque chose comme ça pendant un moment. –

0

Je pense que cela dépend. Un livre que j'ai aimé lire - qui commence par une révision mathématique - est le Programming Game AI by Example de Matt Buckland.

Un google rapide a produit this book, mais encore une fois cela dépend du type de programmation que vous faites ou prévoyez faire.

Personnellement, je ne pense pas que vous pouvez vous tromper avec une bonne compréhension de la physique et des mathématiques algébriques.

2
  1. Pratique Pratique Pratique
  2. Utilisez les services de tutorat qui sont généralement disponibles dans la plupart des universités (ce sera généralement gratuit et payé pour l'utilisation de votre argent frais de scolarité).
0

J'ai rapidement appris qu'il était plus facile de poser un problème mathématique et de trouver une solution numérique ou de Monte Carlo que de résoudre analytiquement le problème (c'est-à-dire la façon dont le professeur de mathématiques sans ordinateur le ferait sur un tableau). Cela fonctionne pour les problèmes numériques et ne vous aidera généralement pas à passer un examen d'économie mathématique.

L'autre façon de faire des maths sur l'ordinateur est d'utiliser Mathematica ou similaire, mais cela rend beaucoup de problèmes mathématiques si faciles à résoudre que vous n'apprendrez vraiment rien. L'intégration de fonctions arbitrairement complexes à la main est une science de fusée. L'intégration de fonctions arbitraires (analytiquement!) Dans Mathematica n'est pas plus difficile que d'utiliser calc.Je recommande de réinventer la roue et d'écrire une bibliothèque libre et autonome dans la langue accolade de votre choix visant votre branche préférée de mathématiques appliquées, qu'il s'agisse de nombres premiers ou de programmation linéaire. Les bibliothèques API Math sont célèbres pour leurs boîtes noires diaboliquement difficiles à écrire, que personne ne pourra plus toucher. Un exemple est le plug-in de statistiques dans Excel, qui ne semble pas avoir été amélioré depuis des décennies. Qui écrit jamais une bibliothèque de mathématiques apprendra une tonne.

1

Je voudrais aller avec ces champs:

mathématiques discrètes, algèbre linéaire, Combinatoire, probabilités et Statistiques, Théorie des graphes, la logique mathématique.

Cela vous donnerait un coup de main sur la plupart des domaines de CS. Si vous voulez aller dans les champs spéciaux, vous devez plonger dans certaines régions en particulier:

Computer graphics -> Linear Algebra 
Gaming -> Linear Algebra, Physics 
Computer Linguistics -> Statistics, Graph Theory 
AI -> Statistics, Stochastics, Logic, Graph Theory 

Vous avez bien sûr trouvé ces entrées: blogs to freshen up my math in practice et math programming and learning. Ils auront quelques conseils. D'autres alors que vous obtenez quelques bons livres de base sur l'algèbre linéaire et la logique. Sedgewick a quelques bons livres sur les algorithmes avec les concepts mathématiques de base. John Vince en a un au match concepts for computer graphics.

0

Accéder au site Web www.projecteuler.net. Vous trouverez des problèmes difficiles. Essayez de les résoudre et vous serez fier de vous un jour. bonne chance

8

En fin de compte, vous devez "passer du temps en selle" et choisir quelque chose d'intéressant, puis apprendre à l'utiliser. Je m'intéressais aux maths de programmation de jeux et j'ai pris le livre New Riders sur le sujet - je ne me souviens pas du nom pour le moment. Il y avait des concepts et des exercices et au fur et à mesure que je progressais, j'ai senti que non seulement je comprenais les concepts et la théorie mais aussi comment la mettre en pratique.

Vous pourriez jeter un oeil à certaines de ces questions connexes. Il y a quelques bonnes réponses là-bas. Ils pourraient ne pas tous être applicables dans votre cas, mais certains le seront.

How can I learn the math necessary for working with computer vision?

How to learn mathematical notation?

https://stackoverflow.com/questions/651865/basic-math-book-for-a-programmer

Learning Applied Statistics with a focus on R

https://stackoverflow.com/questions/568899/user-friendly-math-textbooks

https://stackoverflow.com/questions/509488/recommendations-for-discrete-math-resources

https://stackoverflow.com/questions/488502/best-language-to-program-some-math-free-fast-easy-cool-etc

Learning game programming (part 2) (math)

Math Resources for C/C++ Programmers

https://stackoverflow.com/questions/420500/helpful-math-classes-for-programmers

Math, programming, and learning

1

Mettre en œuvre. Beaucoup.

Le calcul et l'algèbre linéaire est un mauvais choix. Les méthodes numériques vous aideront (elles ont été faites pour être implémentées dans des ordinateurs), parce que si vous pouvez les implémenter, vous pouvez implémenter n'importe quoi mathématique avec un peu d'effort.

Voici quelques sujets que je vous recommande de commencer à chercher. J'ai mis en place au moins un type de chaque et ils m'ont aidé à comprendre non seulement les mathématiques, mais aussi comment programmer des problèmes mathématiques difficiles.

Racine trouvée. Résoudre des systèmes linéaires et d'autres manipulations matricielles (comme la décomposition LU et les algorithmes déterminants efficaces). Résolution de systèmes non linéaires. Méthode des moindres carrés (continue et discrète). Interpolation (polynômes de Lagrange principalement, et interpolation matricielle simple.) Intégration numérique (je pense que celui-ci est le plus facile ... Newton-Cotes, Chebyshev-Gauss, Gauss-Laguerre, etc) Les équations différentielles ordinaires numériques (RungeKutta et méthodes multi-étapes)

maintenant, certains sujets non numériques:

recherche opérationnelle/programmation linéaire/Optimisation: commencer par Simplex avec la notation de la matrice (i appelle personnellement ce complexe), essayez une BranchAndBound et d'aventure yourselfinto programmation dynamique ..

La théorie des nombres a quelques interes applications ting, spécialement sécurité et criptographie

Implémentez vous-même une classe Vector3D. De plus, amusez-vous avec les graphiques, y compris la plupart des algorithmes et des recherches de chemin le plus court. Je considère que c'est la structure de données la plus importante.

Si vous voulez relever un défi, approfondissez la théorie Optimization: Queue. La prise de décision. Optimisation de colonies de fourmis.

J'espère que j'ai donné votre perspicacité et je ne vous ai pas fait peur! :)

+0

Je pense que c'est une réponse vraiment décente et non -1 digne, mais il pourrait être raccourci. Apprendre à résoudre des problèmes mathématiques par des calculs peut vous donner beaucoup de perspicacité dans le problème lui-même. L'informatique concerne la perspicacité, pas les chiffres. – temp2290

1

Pratique, pratique et pratique est la réponse.Mon enfant avait un problème avec les mathématiques et j'ai réussi à surmonter ce problème en prenant l'habitude de pratiquer les maths presque tous les jours pendant 30 minutes, ce qui est moins que la moitié du temps qu'il passe à jouer aux jeux Wii. Cette pratique a été accomplie avec cet outil de www.ourflashcards.com. Je ne fais pas de publicité pour l'outil et je promets que vous ressentirez la même chose à son sujet.