Esiste un libro canonico sulla matematica per i programmatori? [chiuso]


52

Sono un programmatore autodidatta. Onestamente non sono bravo in matematica. Che consiglio puoi dare per migliorare le mie abilità matematiche in modo che non sarò così insicuro con i miei colleghi programmatori? Quali sono i passaggi o le linee guida che puoi consigliare per migliorare le mie capacità matematiche?

Esiste un libro là fuori che è lo standard di fatto per la descrizione delle migliori pratiche, metodologie di progettazione e altre informazioni utili sulla matematica per i programmatori? Che dire di quel libro lo rende speciale?


8
Conosci la geometria? algebra? trigonometria? algebra lineare? calcolo? Quanto sei lontano?
Marcelo,

3
@ adietan63: i suggerimenti saranno solo speculazioni a meno che tu non sia più specifico delle tue attuali conoscenze matematiche.
David Thornley,

1
Vorrei usare Python con PyGame. Se vuoi entrare nel 3D senza troppi problemi, Panda3D di Carnegie Mellon con Disney Studios è molto facile da imparare.
Thorsten Müller,

1
@FrustratedWithFormsDesigner | Java è adatto per l'elaborazione grafica e il gamming o il suo c ++?
adietan63,

5
Potresti dirci qualcosa in più su come i tuoi colleghi programmatori usano la matematica? Darei consigli piuttosto diversi se lavori per una società finanziaria rispetto a un negozio di programmazione. (Se ti fa sentire più sicuro lanciare parole come "spazio di Hilbert" ed "eteroschedasticità" in ufficio, impara sicuramente un po 'di algebra lineare e statistiche avanzate. Non aspettarti di impressionare gli sviluppatori di hoi polloi.)
rajah9

Risposte:


24

Hmm, da quello che dici sembra che tu voglia iniziare molto di base. Niente di male, ho fatto lo stesso. La mia matematica era per lo più a livello di scuola superiore e molto dimenticata.

Inizia con Khan Academy , vai alla sezione prove e vedi quanto lontano puoi arrivare. Questo ti darà una buona idea di cosa puoi fare e da dove iniziare l'apprendimento.

Non preoccuparti di guardare i video. Almeno per me i video sono solo un modo lento per imparare e quelli di Khan sono noiosi. Ci sono molte altre risorse per imparare la matematica di base. Come alcuni dei WikiBooks o ck-12

La domanda viene discussa su Math.StackExchange abbastanza spesso e la ricerca di "risorse gratuite" o "libri gratuiti" ti fornirà molte informazioni e materiale. Lo stesso vale per termini di ricerca come "inizio" o "principiante". O fai la tua domanda lì. Funziona anche nella sottosezione / r / math su reddit. Lì troverai più subreddit, ad esempio per l'apprendimento della matematica.

Fai molta pratica. Non è sufficiente capire un concetto e passare al successivo. Devi sentirti a tuo agio per applicarlo. Non capirai le percentuali se non ti senti a tuo agio con la divisione e la moltiplicazione (come esempio). Questo è vero anche per concetti superiori. Ecco perché per me la sezione pratica di Khan è molto più preziosa dei video.

Come per la programmazione, rimanere in contatto con la comunità ti terrà motivato. Di tanto in tanto accedi a qualche forum e leggi di cosa parla la gente.


Grazie uomo! Destra. Penso di dover partire dalla base per comprendere l'ampia area della matematica.
adietan63,

+100 KhanAcademy è ottimo per rafforzare le basi matematiche. Non c'è niente di sbagliato a partire dalle basi. L'apprendimento autonomo rimuove il "fattore di umiliazione" di non conoscere alcuni dei fondamentali della matematica. Il sistema di valutazione fa un buon lavoro identificando i punti deboli e andando rapidamente oltre i punti deboli.
Evan Plaice,

16

Concrete Mathematics: A Foundation for Computer Science (2nd Edition) sarebbe la mia scelta per un buon libro di matematica che copra varie aree della matematica insieme ad avere un po 'di umorismo per il libro che potrebbe essere utile.


Anche io lo leggo. Un buon libro.
Ando,

2
+1 perché è un ottimo libro. Non sono sicuro se sia qualcosa per qualcuno che si definisce "non bravo in matematica".
vartec,

Sarebbe bello se piuttosto che usare semplicemente la parola "ovvio" Knuth rendesse alcune parti più ovvie. Ma con un duro lavoro tutte le cose possono essere comprese, se uno ha solide basi matematiche da scuola.
gruszczy,

8
Attenzione, questo libro non è sicuramente per i principianti.
MAK,

2
Il trucco è davvero leggerlo. Continuavo a ritrovarmi a voler sfogliarlo come un manuale o un sito Web. Non funziona Parola o concetto inspiegabile? Lo troverai se vai abbastanza indietro. Andando piano per me (mai finito il calcolo - ma più per essere più lento che cattivo in matematica), ma una buona raccomandazione IMO. Spiegano bene le cose. Sii paziente e prenditi il ​​tuo tempo.
Erik Reppen,

10

Di Paul online Notes da Lamar Università è disponibile in formato PDF. È ottimo per riferimenti rapidi e ci sono esempi in ogni pagina. Se mai avessi voluto aggiornarmi su un argomento o afferrare qualcosa, tendo a tornare su questo sito.

Ecco il set:

Algebra (Math 1314): completa Note
elenco dei contenuti

  • Preliminari - Proprietà esponente, esponente razionale, esponente negativo, radicale, polinomio, factoring, espressioni razionali, numeri complessi
  • Risoluzione di equazioni e disuguaglianze - Equazioni lineari, Equazioni quadratiche, Completamento del quadrato, Formula quadratica, Applicazioni di equazioni lineari e quadratiche, Riducibile in forma quadratica, Equazioni con radicali, Disuguaglianze lineari, Disuguaglianze polinomiali e razionali, Equazioni e disuguaglianze di valore assoluto.
  • Rappresentazione grafica e funzioni: rappresentazione grafica di linee, cerchi e funzioni a tratti, definizione della funzione, notazione della funzione, composizione della funzione, funzioni inverse.
  • Grafici comuni: parabole, ellissi, iperbole, valore assoluto, radice quadrata, funzione costante, funzioni razionali, spostamenti, riflessioni, simmetria.
  • Funzioni polinomiali: suddivisione di polinomi, zeri / radici di polinomi, ricerca di zeri di polinomi, rappresentazione grafica di polinomi, frazioni parziali.
  • Funzioni esponenziali e logaritmiche - Funzioni esponenziali, funzioni logaritmiche, risoluzione di funzioni esponenziali, risoluzione funzioni logaritmiche, applicazioni.
  • Sistemi di equazioni - Metodo di sostituzione, Metodo di eliminazione, Matrice aumentata, Sistemi non lineari.

Calculus I (Math 2413): separato in

  1. Elenco dei contenuti
  2. Appunti
  3. Problemi di pratica
  4. Soluzioni per problemi pratici
  5. Problemi di assegnazione

    • Revisione Algebra / Trig - Funzioni ed equazioni di Trig, funzioni ed equazioni esponenziali, funzioni ed equazioni del logaritmo.
    • Limiti: concetti, definizione, calcolo, limiti unilaterali, continuità, limiti relativi all'infinito, regola degli ospedali
    • Derivati: definizione, interpretazioni, formule derivate, regola del potere, regola del prodotto, regola del quoziente, regola della catena, derivati ​​di ordine superiore, differenziazione implicita, differenziazione logaritmica, derivati ​​delle funzioni di trigger, funzioni esponenziali, funzioni di logaritmo, funzioni di trigger inverse e funzioni di trigger iperboliche .
    • Applicazioni di derivati: tassi correlati, punti critici, valori minimi e massimi, funzioni di aumento / diminuzione, punti di flesso, concavità, ottimizzazione
    • Integrazione - Definizione, Integrali indefiniti, Integrali definiti, Regola di sostituzione, Integrali definitivi di valutazione, Teorema fondamentale del calcolo
    • Applicazioni di integrali: valore medio delle funzioni, area tra curve, solidi di rivoluzione, lavoro.

Calculus II (Math 2414) Note complete

Calculus III (Math 2415) Note complete

Linear Algebra (Math 2318) Note complete

Equazioni differenziali (Math 3301) Note complete

È possibile controllare il sito per il resto degli elenchi di argomenti.


1
Non riesco a credere che questo non abbia più voti. Paolo è un dio.
n0pe

8

Mi rendo conto che questo non è un libro, ma penso che potrebbe essere un buon modo per ampliare il tuo pensiero sulla matematica. Prova a risolvere i problemi di Project Euler .

Ad esempio, il primo è :

Se elenchiamo tutti i numeri naturali al di sotto di 10 che sono multipli di 3 o 5, otteniamo 3, 5, 6 e 9. La somma di questi multipli è 23.

Trova la somma di tutti i multipli di 3 o 5 al di sotto di 1000.


Le domande di Project Euler sono sicuramente basate sulla matematica, ma il problema che ho avuto con loro era che erano così avanzate così rapidamente che l'unico modo in cui ero in grado di risolverle era con algoritmi di forza bruta (a meno che non avessi barato). Dicono che dovresti essere in grado di trovare una soluzione elegante che funzioni in meno di 60 secondi per tutte le domande.
Mike,

4
@ Mike, non penso che cercare problemi simili e cercare di capire i concetti sottostanti abbastanza bene da attaccare il problema è barare. Stai imparando di più "tradendo" in questo modo, quindi non facendo tutte quelle ricerche.
Doug T.

1
Ne ho fatti molti e questo ha migliorato le mie capacità di programmazione. Sebbene per quanto riguarda la matematica stessa, impari principalmente molti trucchi, ma non aggiungi molto alle conoscenze fondamentali come Calculus o Algebra. Ma ti aggiunge la motivazione a fare matematica.
Thorsten Müller,

1
@thorsten: mia moglie (il matematico della famiglia) pensa che la matematica sia SOLO un mucchio di trucchi accurati. :-)
Peter K.

1
Il modo in cui di solito incontro i problemi di Eulero è che prima provo di solito una forza bruta e la ottimizzo. Questo da solo ha insegnato molti fatti matematici che non ho mai saputo. La lettura successiva dei forum sulle soluzioni di solito consente di ottenere ulteriori approfondimenti matematici.
Sistema

8

Consiglio sempre la matematica discreta di Kenneth Rosen e le sue applicazioni . Copre molti argomenti diversi (come qualsiasi buon libro di matematica discreta farà) con un buon equilibrio tra teoria e applicazione. Ha anche molte barre laterali interessanti per i matematici e gli informatici che hanno originato i concetti trattati.


Grazie! ma quali sono i prerequisiti prima di studiare matematica discreta ecc.
adietan63,

1
@ adietan63: Algebra è tutto ciò che direi è necessario . La mia università ci ha permesso di prendere la matematica discreta prima del calcolo o delle statistiche, ma certamente non sarebbe male prenderli per primi.
Bill the Lizard,

@ adietan63: potresti anche dare un'occhiata ad alcuni dei libri di matematica di Head First se hai bisogno di un aggiornamento, o guardare alcune lezioni video online gratuite.
Bill the Lizard,

@Bill Grazie! Forse mi sento sotto pressione nell'apprendere queste cose perché voglio imparare molte cose nella programmazione in un breve periodo di tempo. Forse lo prenderò uno alla volta. Penso che questo faccia parte del processo di apprendimento. grazie ancora!
adietan63,

7
Prego. Inoltre, la sensazione di "Voglio imparare molte cose nella programmazione in un breve periodo di tempo" non scompare mai davvero. :)
Bill the Lizard,

4

Mentre leggere un libro di matematica discreto 1000 è una buona soluzione, potrebbe non essere il percorso ottimale se il tempo è un vincolo. Se vuoi avere un'idea di quanta matematica dovresti avere senza approfondire, dai un'occhiata all'appendice A dell'introduzione del libro dell'algoritmo (cormen) : http://www.acmsolver.org/books/ Introduzione% 20to% 20Algorithms,% 202i% 20Ed% 20-% 20Thomas% 20H.% 20Cormen.pdf

Ho letto l'appendice e mi ha dato una migliore comprensione di quali argomenti matematici dovrei rivedere di più. Una volta che sai cosa aspettarti, dai un'occhiata a:

http://www.amazon.com/Journey-into-Mathematics-Introduction-Proofs/dp/0486453065/ref=sr_1_15?ie=UTF8&qid=1308591694&sr=8-15 inserisci qui la descrizione dell'immagine

Secondo me, imparare a provare (soprattutto per induzione) è una pietra miliare nella comprensione degli algoritmi di analisi . Sfortunatamente, la maggior parte degli algoritmi e persino dei corsi di matematica CS non si concentrano troppo sulla prova. presumono già che tu ne sia un esperto, quindi non vanno oltre alcune pagine. Il viaggio nel libro di matematica è molto piccolo e di facile lettura. Utilizza anche problemi di CS e il loro aspetto matematico. Altri buoni argomenti da imparare sono l' aritmetica della matrice , la probabilità , il conteggio e la teoria dei grafi .

Gli altri due grandi libri di testo popolari: Discrete Math e la sua applicazione dall'EPP (il mio preferito) e l'altro da Rosen.

http://www.amazon.com/Discrete-Mathematics-Applications-Susanna-Epp/dp/0534359450/ref=sr_1_4?ie=UTF8&qid=1308591784&sr=8-4

http://www.amazon.com/Discrete-Mathematics-Applications-Kenneth-Rosen/dp/0073229725/ref=sr_1_1?ie=UTF8&qid=1308591784&sr=8-1

Non ho il piacere di leggere il libro di testo intitolato " Concrete Mathematics ", ma ne ho sempre sentito parlare bene.


1

Francamente, puoi essere un programmatore perfettamente adeguato in molti campi senza una conoscenza fondamentalmente molto forte della matematica. Potresti non essere molto capace quando si tratta di motori di gioco o ottimizzazione del routing di rete, ma a dire il vero, molte applicazioni aziendali sono abbastanza semplici. Tuttavia, ti incoraggio a mantenere viva la speranza e non rinunciare ancora alla matematica.

C'è un mondo di differenza tra la matematica che prendi a un livello inferiore e la matematica che prendi a un livello superiore. È una cosa molto diversa da dire che sei cattivo in Calculus (lo ero - ho fallito Calc I la prima volta che l'ho preso) rispetto a dire che sei cattivo in Graph Theory. Man mano che avanzi nella matematica, l'attenzione non si concentra sul semplice problem solving che è francamente abbastanza noioso e ripetitivo e potrebbe anche essere fatto dal tuo calcolatore grafico. Invece, l'attenzione è rivolta alle capacità di pensiero logico: costruire prove è francamente molto simile alla scrittura di software.

La migliore classe di matematica che abbia mai avuto è stata quella che ho considerato la mia prima "vera" classe di matematica: fondamentalmente un'introduzione alla classe di prove che copriva una serie di aree dalla teoria dei grafi alla teoria dei numeri. Il testo che abbiamo usato è stato grandioso ( Pensiero matematico: risoluzione dei problemi e prove di D'Angelo e Occidente .) Potresti trovare utile solo leggere quel libro per avere alcune idee sulle prove offensive.

Nel complesso, ho davvero bisogno di qualcuna della matematica che ho preso al college? No, probabilmente no. Ma avere un background formale mi ha dato migliori capacità di pensiero critico, una migliore immaginazione (in genere ci sono molti modi per risolvere un problema, a volte buono, a volte cattivo, ma un'idea unica può essere utile) e fiducia nel problem solving.


| Grazie uomo! Penso che anche se la matematica non può aiutarti in ogni momento. Forse la sua presenza ti aiuterà nel pensiero critico e migliorerà le tue capacità analitiche?
adietan63,

Francamente, penso che ti piaccia la parola "francamente".
Bukzor,

1

Senti, sono bravo in matematica, ma davvero non lo uso affatto per la programmazione e programmo parecchio. Il mio consiglio è semplicemente di abituarsi a non conoscere abbastanza e di fare in modo che qualcuno faccia i calcoli per te.

Ci sono così tante cose da sapere, non puoi aspettarti di essere bravo in tutte, ma la matematica in particolare non è molto utile.

Certo, potresti averne bisogno perché i tuoi programmi sono qualcosa di scientifico, altrimenti usa quel tempo per imparare qualcosa di più utile.


2
Non sono d'accordo, buone capacità di programmazione sono legate a buone capacità matematiche.
Marcelo,

1
Beh, credo che tu non sia d'accordo. Penso che il disaccordo sia un diritto, ma se ciò ti fa sentire autorizzato a sottovalutare il mio contributo, è davvero rischioso.
Ando,

Privilegi - voto contrario - richiede 125 reputazione; hai già guadagnato questo privilegio.
Marcelo,

1
È stato votato perché concordo sul fatto che non hai bisogno di matematica per diventare un buon programmatore in molte aree. Sebbene non sia fortemente d'accordo sul fatto che la matematica non sia molto utile. Anche se non hai bisogno di matematica nel tuo lavoro quotidiano, guadagni molto imparando alcuni aspetti della matematica e se è solo tanto da capire la notazione big-O.
Thorsten Müller,

1

Osservare le note del corso di alcuni dei corsi (per principianti) della sezione "Logica e calcolo" di ESSLLI (ad esempio, il prossimo programma del 2011 o il programma del 2010 , cercare di più) può essere interessante. Ti darà un'idea degli attuali sviluppi teorici nel campo della programmazione. Quindi puoi decidere di studiare più in profondità le basi in un certo sottocampo toccato in quei corsi.

(Altrimenti, è difficile rispondere alla tua domanda, ci sono così tante "matematiche" diverse, che potresti non avere davvero bisogno o essere interessato. Uno dei motivi per cui i corsi ESSLLI possono rivelarsi interessanti per noi è perché riflettono un po 'di corrente ricerca, quindi si tratta di risolvere alcuni enigmi; e cercare di risolvere un certo enigma è una componente importante nel processo di una reale comprensione di una teoria, di comprendere qual è la cosa interessante che sta dietro.)


1

Se stai studiando correttamente la matematica CS, allora stai guardando cose come la logica matematica e la teoria degli insiemi. Questi sono alcuni aspetti matematici abbastanza coinvolti a sostenerli. Pertanto, se il tuo livello base di matematica è un po 'ropey, allora è meglio iniziare con i fondamenti, prima di passare alle aree più correlate al CS.

Pertanto suggerirei di iniziare con la Matematica ingegneristica di KA Stroud . Ben scritto, facile da seguire e copre le basi e cose più avanzate.


1

Inizia con i fondamenti e poi passa agli specialisti: Mathematician's Delight e How to risolvere it sono due grandi libri per iniziare. La delizia del matematico affronta argomenti matematici fondamentali (ad es. Geometria, algebra, calcolo, ecc.) In un modo amichevole e divertente per l'uomo. Non ho ancora letto Come risolverlo, ma si concentra su come attaccare i problemi di matematica ragionando.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.