2009-05-14 10 views
9

Mimo że uważam się za jednego z lepszych programistów na moim kursie CompSci, fascynują mnie ludzie, którzy są naprawdę dobrzy w matematyce. Muszę powiedzieć, że kiedykolwiek miałem zadanie matematyczne lub egzamin, moje podejście było bardzo formułowane, tzn. Gdy napotkam problem, który wygląda jak A, muszę użyć metody B, a wynik powinien wyglądać jak C, albo popełniłem błąd. Naprawdę tylko wiem, jak rozwiązać problemy, które poprawiłem.Jak poprawić swoje umiejętności matematyczne, aby stać się lepszym programistą?

Naprawdę chciałbym poświęcić trochę czasu tego lata, aby lepiej zrozumieć problemy matematyczne i ich rozwiązania, aby zanurkować głębiej w dziedziny algorytmiki i złożoności obliczeniowej.

Jakieś wskazówki?

Odpowiedz

26

Brzmi jak masz przyzwoite umiejętności matematycznych - zrozumieć mechanikę i może trochę z intuicją za to, czego nauczyłem się - ale że jesteś trochę krótki na dobrego rozwiązywania problemów umiejętności, zwłaszcza, że ​​mówisz "Naprawdę tylko wiem, jak rozwiązać problemy, które [wcześniej spotkałem]".

Aby to naprawić, powinienem rzucić okiem na Project Euler. Nie ma zdecydowanie zalecanego sposobu rozwiązania tych problemów i często wymagają one syntezy wielu obszarów wiedzy w celu skutecznego rozwiązania każdego z nich. Będziesz mieć swoje ciastko i zjesz je - stając się lepszym programistą/matematykiem i lepszym ogólnym rozwiązywaniem problemów, widząc, jak przynieść wiele rzeczy do walki przeciwko konkretnemu problemowi. Zyskasz głębszy wgląd w to, jak rzeczy, które wydają się zupełnie inne, mogą faktycznie pasować do siebie w jednolitej całości. (Dotyczy to w szczególności wielu dziedzin matematyki.)

Wreszcie, cieszę się, że pragniesz zostać lepszym praktykiem swojego rzemiosła! Gdyby wszyscy wykazywali ten sam poziom ambicji, nie mogę oprzeć się wrażeniu, że oprogramowanie w ogóle byłoby o wiele lepsze.

+0

+1 dla łącza ProjectEuler. Szukałem czegoś takiego przez jakiś czas. –

0

Myślę, że to zależy. Jedną z książek, które podobały mi się w czytaniu - która zaczyna się od ponownego przeczytania w matematyce - jest Programming Game AI by Example Matta Bucklanda.

Szybki google wyprodukował this book, ale znowu to zależy od tego, jakiego rodzaju programujesz lub planujesz.

Osobiście uważam, że nie można pomylić się z dobrym zrozumieniem fizyki i matematyki algebraicznej.

2
  1. Praktyka praktyka praktyka
  2. korzystać z usług, które są korepetycje ogólnie dostępne w większości szkół wyższych (to zazwyczaj będzie darmowe jak i płatne za korzystanie z czesnego pieniędzy).
0

Przypomina mi o dniach studenckich. Szybko nauczyłem się, że łatwiej jest postawić problem matematyczny i znaleźć numeryczne lub Monte Carlo rozwiązanie, niż rozwiązać problem analitycznie (tj. Sposób, w jaki bezkomputerowy profesor matematyki będzie na tablicy). Działa to w przypadku problemów numerycznych i generalnie nie pomoże ci tak dobrze, jak zdać matematyczny egzamin ekonomiczny.

Innym sposobem na matematykę na komputerze jest użycie Mathematica lub podobnego, ale to sprawia, że ​​wiele problemów matematycznych jest tak łatwa do rozwiązania, że ​​tak naprawdę niczego się nie nauczysz. Integracja dowolnie złożonych funkcji ręcznie jest nauką rakietową. Integracja dowolnych funkcji (analitycznie!) W Mathematica nie jest trudniejsza niż użycie calc.exe

Polecam ponowne wynalezienie koła i napisanie samodzielnej biblioteki o otwartym kodzie źródłowym w wybranym przez ciebie języku kędzierzawych klamr, nakierowanym na twoją ulubioną gałąź matematyki stosowanej, niezależnie od tego, czy jest to program wstępny czy liniowy. Biblioteki Math API słyną z diabelnie trudnych do napisania czarnych skrzynek, których nikt już nie będzie mógł dotknąć. Przykładem jest wtyczka statystyczna w programie Excel, która nie wygląda na to, aby ktokolwiek poprawił się od dziesięcioleci. Kto kiedykolwiek napisze bibliotekę matematyczną, nauczy się tony.

1

pójdę z tych pól:

dyskretnego matematyki, Algebra liniowa, Kombinatoryka, Prawdopodobieństwo i statystyka, teoria grafów, logika matematyczna.

To da ci przyczepność na większości pól CS. Jeśli chcesz, aby przejść do specjalnych dziedzin, trzeba zanurzyć się w niektórych obszarach szczególnie:

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

Będziesz oczywiście odkryli te wpisy: blogs to freshen up my math in practice i math programming and learning. Będą mieli trochę rad.

Poza tym dostaniesz kilka dobrych podstawowych książek o algebrze liniowej i logice. Sedgewick ma kilka dobrych książek na temat algorytmów z podstawowymi pojęciami matematycznymi. John Vince ma jeden na match concepts for computer graphics.

0

Przejdź do witryny internetowej www.projecteuler.net. Znajdziesz trudne problemy. Spróbuj rozwiązać je, a pewnego dnia będziesz z siebie dumny. Powodzenia

8

Ostatecznie musisz "spędzić trochę czasu w siodle" i wybrać coś interesującego, a następnie nauczyć się z niego korzystać. Interesowałem się matematyką programowania gier i podjąłem książkę New Riders na ten temat - nie pamiętam w tej chwili imienia. Miał koncepcje i ćwiczenia, aw miarę postępów przez to czułem, że nie tylko rozumiem koncepcje i teorię, ale także, jak zastosować ją w praktyce.

Możesz rzucić okiem na niektóre z tych powiązanych pytań. Jest kilka dobrych odpowiedzi. Nie wszystkie mogą mieć zastosowanie w twoim przypadku, ale niektóre będą.

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

wdrożenia. Dużo.

Rachunek i algebra liniowa to zły sposób na życie. Pomogą ci w tym metody numeryczne (zostały zaimplementowane w komputerach), ponieważ jeśli możesz je wdrożyć, możesz zaimplementować wszystko, co jest związane z matematyką.

Oto kilka tematów, które polecam zacząć szukać. Wdrożyłem przynajmniej jeden rodzaj każdego z nich i pomogli mi zrozumieć nie tylko matematykę, ale także jak programować niektóre trudne problemy matematyczne.

Poszukiwanie korzeni. Rozwiązywanie układów liniowych i innych manipulacji macierzami (takimi jak dekompozycja LU i wydajne algorytmy wyznaczania). Rozwiązywanie układów nieliniowych. Metoda najmniejszych kwadratów (ciągłe i dyskretne). Interpolacja (głównie polynony Lagrange'a i prosta interpolacja macierzy). Numeryczna integracja (myślę, że ta jest najłatwiejsza ... Newton-Cotes, Chebyshev-Gauss, Gauss-Laguerre, itp.) Numeryczne równania różniczkowe zwyczajne (RungeKutta i metody wielostopniowych)

przedmioty teraz niektórzy non-numeryczne:

Operacyjny Badania/Linear programowanie/Optymalizacja: start z Simplex z notacji macierzowej (ja osobiście nazywają to Complex), a następnie spróbuj BranchAndBound i przygody yourselfinto programowania dynamicznego ..

Teoria liczb ma pewne zainteresowania Aplikacje, w szczególności zabezpieczenia i kryptografia

Samodzielnie zaimplementuj klasę Vector3D.

Korzystaj także z wykresów, w tym z najkrótszych algorytmów ścieżek i wyszukiwań. Uważam to za najważniejszą strukturę danych.

Jeśli chcesz rzucić wyzwanie, zagłęb się w Optymalizację: Teoria kolejki. Podejmowanie decyzji. Optymalizacja kolonii mrówek.

Mam nadzieję, że dałem ci trochę wglądu i nie przestraszyłem cię! :)

+0

Myślę, że jest to naprawdę przyzwoita odpowiedź, a nie -1 godna, choć można ją skrócić. Nauka rozwiązywania problemów matematycznych za pomocą obliczeń może dać ci wiele informacji na temat samego problemu. Informatyka dotyczy wglądu, a nie liczb. – temp2290

1

Praktyka, praktyka i praktyka to odpowiedź.Mój dzieciak miał problem z matematyką i udało mi się przezwyciężyć ten problem, czyniąc z niego nawyk, że prawie codziennie ćwiczy matematykę przez 30 minut, czyli mniej niż połowę czasu, jaki spędza grając w gry Wii. Ta praktyka została zrealizowana za pomocą tego narzędzia z www.ourflashcards.com. Nie reklamuję tego narzędzia i obiecuję, że poczujesz to samo.

Powiązane problemy