Podoba mi się odpowiedź aeismail, ale przedstawię alternatywną perspektywę.
W optymalizacji nie można naprawdę nauczyć się tej dziedziny bez zrozumienia prawdziwej analizy. Jeszcze zanim rozwiążesz problemy numeryczne, musisz zrozumieć pojęcia zbieżności sekwencji, ponieważ udowodnisz w klasach, że algorytmy są zbieżne. Musisz zrozumieć pojęcia takie jak ciągłość i zróżnicowanie na więcej niż powierzchownym poziomie. W związku z tym rzeczywista analiza jest warunkiem wstępnym dla kursów programowania nieliniowego.
Moja praca dotyczy metod rozwiązywania równań różniczkowych zwyczajnych. Kwestie konwergencji, a konkretnie takie rzeczy, jak „jeśli zmniejszę moją lokalną tolerancję błędów, wówczas moje obliczone rozwiązanie numeryczne zbliża się do prawdziwego rozwiązania równań, które rozwiązuję”, to znowu kwestie wymagające prawdziwej analizy. Opracowanie teorii zagadnień konwergencji wymagało ode mnie (wbrew życzeniom moich doradców) dwóch semestrów prawdziwej analizy. (Opłaciło się kilkoma manuskryptami.)
Wiem jednak, że są ludzie, którzy dość dobrze przeżywają w metodach numerycznych i HPC, nie ucząc się matematyki. To naprawdę zależy od niszy, którą chcesz zająć.
Jeśli chcesz opracować nowe metody, pomocne są zajęcia teoretyczne. Zajęcia z teorii są również pomocne w ogólnej wiedzy matematycznej; czytanie artykułów matematycznych staje się o wiele łatwiejsze.
Jeśli chcesz zastosować określone metody numeryczne do problemów, bardziej pomocne są klasy metod numerycznych. Wierzę, że z tej perspektywy pochodzi eeismail i jest to sytuacja bardziej powszechna dla inżynierów. (Oświadczenie: Znamy się i ukończyliśmy ten sam wydział).
Jeśli chodzi o HPC, mam wrażenie, że doświadczenie jest najlepszym nauczycielem. Wziąłem kurs programowania równoległego i było to trochę przydatne, ale głównym przesłaniem zajęć było wypróbowanie różnych rzeczy i sprawdzenie, czy działają. Jeśli jest to ważne dla twoich badań, zdobędziesz doświadczenie w HPC. Jeśli tak nie jest, nie będziesz i prawdopodobnie nie będzie to miało znaczenia, dopóki nie będziesz chciał zmienić biegów i rozwiązać problemów HPC. Moja praca nie była szczególnie ciężka dla HPC, przynajmniej jeśli chodzi o to, co programuję, więc nie musiałem podnosić tego zestawu umiejętności.
Podsumowując, prawdopodobnie powinieneś skoncentrować się na zapoznaniu się z zagadnieniami związanymi z problemem pracy dyplomowej, pamiętaj o tym, co według Ciebie chcesz zrobić w przyszłości, i zdecyduj, jakie szerokie, ogólne tło musisz komunikować się z innymi badaczami w społeczność, do której chcesz dołączyć. Twój doktorat będzie jedną z ostatnich okazji do wzięcia udziału w zajęciach, a jeśli uważasz, że chcesz nauczyć się teorii matematyki (lub dowolnego przedmiotu, naprawdę), samodzielne nauczenie się jej jest znacznie trudniejsze bez ustalenia jakiejś podstawowej najpierw biegłość.
HPC to połączenie matematyki, obliczeń, informatyki i aplikacji. Musisz być w stanie zrozumieć je wszystkie, aby odnieść prawdziwy sukces na dłuższą metę. Jednak niekoniecznie musisz osiągnąć ten sam poziom biegłości we wszystkich z nich.
W przypadku argumentu obliczenia kontra matematyka, dla inżyniera, argumentowałbym, że numeryczne problemy z implementacją są na początku ważniejsze. Jeśli zaczekasz, aż nauczysz się teorii matematycznej, a następnie zaczniesz wdrażanie, możesz poświęcić dużo czasu na pracę nad rzeczami, które - choć bez wątpienia przydatne - mogą nie mieć bezpośredniego wpływu na twoje badania magisterskie.
Dlatego najpierw skłaniałem się do zrozumienia aspektów obliczeniowych, a potem do tyłu i wypełniania dziur w teorii matematycznej. Można również dowiedzieć się o problemach sprzętowych - ale wiele z tego, jak wpływa to na oprogramowanie, zależy również od platformy, więc znowu może nie być to pierwszy punkt w twoim programie.
Inni oczywiście mogą się ze mną nie zgadzać; jak powiedziałeś, jest to bardziej opinia niż pytanie oparte na faktach.
źródło
Weź udział w jak największej liczbie kursów. Zrobiłem to i nie żałuję tego.
Zakładając, że interesuje Cię kariera naukowa, możesz odnieść sukces z dowolną kombinacją tych dwóch. Znajdź współpracowników, których wiedza uzupełnia Twoją. Znam znaczną ilość matematyki, ponieważ dotyczy ona dokładności i stabilności metod numerycznych, ale znacznie mniej na temat HPC. Mam współpracowników, którzy bardzo dobrze znają HPC, więc dzięki współpracy możemy uzyskać innowacyjne metody numeryczne działające na dużych komputerach. Robię matematykę, a oni w większości obliczają.
To powiedziawszy, myślę, że matematyka
podczas gdy tematy HPC
Jest to nadmierna generalizacja i na pewno przyciągnie nieprzyzwoite komentarze. Ale myślę, że jest w tym prawda.
źródło
Zgadzam się zarówno z eeismail, jak i Oxberry. Postanowiłem napisać odpowiedź, ponieważ wydaje się, że masz do czynienia z tymi samymi pytaniami, na które próbowałem znaleźć odpowiedź w zeszłym roku. Specjalizowałem się również w inżynierii mechanicznej (i nienawidziłem tego, szczególnie mechaniki litej), spędziłem dużo czasu pracując z metodami numerycznymi w CFD lub optymalizacji. Teraz robię mistrzów matematyki stosowanej i nauk obliczeniowych. Z mojego punktu widzenia musisz najpierw zdecydować, co chcesz robić w przyszłości. Jeśli chcesz zająć się modelowaniem lub rozwojem metod numerycznych, zdecydowanie powinieneś pójść w kierunku matematyki. Spędziłem dwa lata pracując z metodami objętości skończonej i elementów skończonych, nie znając głębokiej podstawy, a teraz, kiedy biorę lekcje matematyki stosowanej, wszystko to ma dla mnie o wiele więcej sensu. Zdaję sobie sprawę, jak dokładnie działają te metody i nie chodzę już na ślepo, tylko eksperymentuję ze wszystkim. Oszczędza dużo czasu i wysiłku. Ale jeśli zdecydujesz, że chcesz zająć się tworzeniem oprogramowania i pokrewnych tematów, możesz skupić się na części HPC. Z mojego doświadczenia wynika, że istnieje wiele pakietów, które są zoptymalizowane i gotowe do użycia w wielu aplikacjach numerycznych. Dlatego nie będzie dla mnie najlepszym pomysłem poświęcanie dużo czasu na tworzenie własnego oprogramowania, dlatego postanowiłem więcej pracować nad matematyką.
źródło
Nie wierzę w dychotomię teorii / aplikacji, ale ważne jest również podejście do pól w sposób, który nie jest całkowicie poza kontekstem. Zrozumienie teorii, jak sądzę, zapewnia ogólną intuicję na temat problemu, który jest bardzo cenny, ponieważ powstrzymuje cię od konieczności skupiania się na konkretach po konkretnym (tj. Jednej konkretnej implementacji w porównaniu do drugiej) i pozwala spojrzeć na ogólny obraz. Zrozumienie to jednak nie wynika z próżni i nie możesz POCZĄTKUĆ na tym poziomie ... to nie tak działa mózg. Nie możesz dojść do koncepcji lasu bez zobaczenia drzewa!
Nie oznacza to również, że teoria odgrywa podrzędną rolę w tym pytaniu. To znaczy, że teoretyczne rozumienie zapewnia znaczną oszczędność mentalną przy rozważaniu klasy problemów, ale nie może istnieć bez konkretnych konkrecji (przynajmniej w teoriach obliczeniowych).
Tak więc, aby odpowiedzieć na twoje pytanie: Jeśli wszystko, co cię interesuje, to implementacja, to jest wynik, ale nie poprawa / modyfikacja tej implementacji, teoria nie będzie tak ważna. Jeśli jednak chcesz wyprodukować własny, to znajdujesz się w niekorzystnej sytuacji konkurencyjnej z tymi, którzy lepiej rozumieją teorię. Chyba że oczywiście produkujesz własne przez lata, które okazują się lepsze :)
źródło