2009-05-14 6 views
9

Anche se mi considero uno dei programmatori migliori del mio corso CompSci, sono affascinato da persone che sono veramente brave in matematica. Devo dire che ogni volta che ho avuto un incarico o un esame di matematica il mio approccio è stato molto formidabile, cioè se incontro un problema simile a A, devo usare il metodo B e il risultato dovrebbe assomigliare a C, altrimenti ho fatto un errore. So solo come risolvere i problemi che ho revisionato.Come migliorare le mie abilità matematiche per diventare un programmatore migliore

Mi piacerebbe molto dedicare un po 'di tempo quest'estate a comprendere meglio i problemi matematici e le loro soluzioni al fine di approfondire i campi dell'algoritmo e della complessità computazionale.

Qualche consiglio?

risposta

26

Suona come si dispone di competenze matematiche decente - si capisce la meccanica e forse un po 'di intuizione che sta dietro quello che hai imparato - ma che sei un po' a corto di buon problem-solving abilità, specialmente da quando dici "so solo come risolvere i problemi che ho incontrato [in precedenza]".

Per risolvere il problema, darei un'occhiata a Project Euler. Non esiste sicuramente un modo prescritto per risolvere questi problemi e spesso richiedono una sintesi di più aree di conoscenza per affrontarli con successo. Avrai la tua torta e la mangerai anche tu - diventando un programmatore/matematico migliore e un risolutore di problemi generale, vedendo come portare molte cose a sopportare un particolare problema. E otterrai approfondimenti più approfonditi su come le cose che sembrano completamente diverse possano effettivamente combaciare in un insieme unificato. (Questo è particolarmente vero per molte aree della matematica.)

Infine, grazie per il tuo desiderio di diventare un professionista migliore del tuo mestiere! Se tutti mostrassero lo stesso livello di ambizione, non posso fare a meno di pensare che il software in generale sarebbe molto meglio.

+0

+1 per il collegamento ProjectEuler. Sono stato alla ricerca di qualcosa di simile per un po '. –

0

Penso che dipenda. Un libro che mi è piaciuto leggere - che inizia con una rivisitazione della matematica - è lo Programming Game AI by Example di Matt Buckland.

Un google veloce prodotto this book, ma ancora dipende dal tipo di programmazione che si sta facendo o si prevede di fare.

Personalmente non penso che si possa sbagliare con una buona comprensione della fisica e della matematica algebrica.

2
  1. Pratica pratica pratica
  2. Utilizzare i servizi di tutoraggio che sono generalmente disponibili presso la maggior parte delle università (questo di solito è gratuito ea pagamento per l'utilizzo del denaro tasse scolastiche).
0

Mi ricorda i giorni da studente universitario. Imparai rapidamente che era più facile porre un problema matematico e trovare una soluzione numerica o di monte carlo piuttosto che risolvere il problema analiticamente (cioè il modo in cui il professore di matematica senza computer lavorava su una lavagna). Questo funziona per problemi numerici e generalmente non ti aiuterà tanto quanto superare un esame di economia matematica.

L'altro modo di fare matematica sul computer è usare Mathematica o simili, ma questo rende molti problemi matematici così facili da risolvere che non si impara davvero nulla. L'integrazione di funzioni arbitrariamente complesse a mano è scienza missilistica. L'integrazione di funzioni arbitrarie (analiticamente!) In Mathematica non è più difficile dell'uso di calc.exe

Mi raccomando di re-inventare la ruota e scrivere una libreria open source, autonoma nel linguaggio di parentesi graffa di vostra scelta, mirata al vostro ramo preferito di matematica applicata, sia essa primes o programmazione lineare. Le librerie API matematiche sono famose per le scatole nere diabolicamente difficili da scrivere che nessuno sarà in grado di toccare di nuovo. Un esempio sono le statistiche plug-in in Excel, che non sembra che qualcuno sia migliorato da decenni. Chi scrive mai una biblioteca di matematica imparerà una tonnellata.

1

vorrei andare con questi campi:

Discrete Math, Algebra Lineare, combinatorio, Probabilità e Statistica, Teoria dei Grafi, logica matematica.

Questo ti darebbe un controllo sulla maggior parte dei campi di CS. Se si vuole andare in campi speciali, è necessario immergersi in alcune aree in particolare:

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

Naturalmente voi avete trovato questi dati: blogs to freshen up my math in practice e math programming and learning. Avranno qualche consiglio.

Altro che procurarsi dei buoni libri di base sull'algebra lineare e la logica. Sedgewick ha alcuni buoni libri sugli algoritmi con i concetti matematici di base. John Vince ne ha uno su match concepts for computer graphics.

0

Vai al sito Web www.projecteuler.net. Troverete problemi impegnativi. Cerca di risolverli e sarai orgoglioso di te stesso un giorno. good Luck

8

In definitiva, è necessario "passare un po 'di tempo in sella" e scegliere qualcosa di interessante e poi imparare come usarlo. Mi interessava la matematica della programmazione di giochi e ho raccolto il libro dei New Riders sull'argomento - non ricordo il nome al momento. Aveva concetti ed esercizi e mentre lo avanzavo, sentivo che non solo comprendevo i concetti e la teoria, ma anche come metterla in pratica.

Si potrebbe dare un'occhiata ad alcune di queste domande correlate. Ci sono alcune buone risposte lì. Potrebbero non essere tutti applicabili nel tuo caso, ma alcuni lo saranno.

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

Implementare. Un sacco.

Il calcolo e l'algebra lineare sono una cattiva strada da percorrere. I metodi numerici ti aiuteranno (sono stati creati per essere implementati nei computer), perché se li puoi implementare, puoi implementare qualsiasi cosa relativa alla matematica con un minimo di sforzo.

Ecco alcuni argomenti che consiglio di iniziare a cercare. Ho implementato almeno un tipo di ciascuno e mi hanno aiutato a capire non solo la matematica, ma come programmare in realtà alcuni problemi matematici difficili.

Root finding. Risoluzione dei sistemi lineari e altre manipolazioni di Matrice (come la decomposizione LU e algoritmi di determinanti efficienti). Risoluzione di sistemi non lineari. Metodo a minimi quadrati (continuo e discreto). Interpolazione (principalmente i polinoni di Lagrange e semplice interpolazione di matrice) Integrazione numerica (penso che questa sia la più semplice ... Newton-Cotes, Chebyshev-Gauss, Gauss-Laguerre, ecc.) Equazioni differenziali ordinarie numeriche (RungeKutta e metodi multistep)

soggetti Ora, alcuni non numerici:

ricerca operativa/lineare programmazione/ottimizzazione: iniziare con Simplex con la notazione Matrix (io personalmente chiamo questo complesso), quindi provare un BranchAndBound e l'avventura yourselfinto programmazione dinamica ..

La teoria dei numeri ha alcuni punti applicazioni, specialmente sicurezza e criptografia

Implementare una classe Vector3D.

Inoltre, Divertiti con i grafici, compresi gli algoritmi e le ricerche dei percorsi più brevi. Considero questa la struttura dati più importante.

Se si desidera una sfida per se stessi, approfondire la teoria di ottimizzazione: coda. Il processo decisionale. Ottimizzazione della colonia di formiche.

Spero di aver dato un po 'di intuizione e di non averti spaventato! :)

+0

Penso che questa sia una risposta davvero decente e non -1 degna, anche se potrebbe essere abbreviata. Imparare a risolvere i problemi matematici tramite calcoli può darti molte informazioni sul problema stesso. Il calcolo riguarda l'intuizione, non i numeri. – temp2290

1

Pratica, pratica e pratica è la risposta.Mio figlio ha avuto un problema con la matematica e sono stato in grado di superare questo problema rendendo un'abitudine che pratica la matematica quasi ogni giorno per 30 minuti, ovvero meno della metà del tempo che spende giocando ai giochi Wii. Questa pratica è stata realizzata con questo strumento da www.ourflashcards.com. Non sto facendo pubblicità per lo strumento e prometto che sentirai la stessa cosa al riguardo.

Problemi correlati