Ich mag die Antwort von aeismail, aber ich werde eine alternative Perspektive bieten.
Bei der Optimierung ist es unmöglich, das Gebiet wirklich zu lernen, ohne die wirkliche Analyse zu verstehen. Noch bevor Sie sich mit numerischen Problemen befassen, müssen Sie die Begriffe der Konvergenz von Sequenzen verstehen, da Sie in Klassen beweisen werden, dass Algorithmen konvergieren. Sie müssen Konzepte wie Kontinuität und Differenzierbarkeit mehr als nur oberflächlich verstehen. Folglich ist eine echte Analyse eine Voraussetzung für Kurse in nichtlinearer Programmierung.
Meine Arbeit befasst sich mit Methoden zur Lösung gewöhnlicher Differentialgleichungen. Konvergenzprobleme, insbesondere Dinge wie "Wenn ich meine lokale Fehlertoleranz reduziere, nähert sich meine berechnete numerische Lösung der wahren Lösung der Gleichungen, die ich löse", sind wiederum Probleme, die eine echte Analyse erfordern. Um die Theorie für Konvergenzprobleme zu entwickeln, musste ich (gegen den Willen meiner Berater) zwei Semester echte Analyse absolvieren. (Es hat sich mit ein paar Manuskripten ausgezahlt.)
Ich weiß jedoch, dass es Leute gibt, die mit numerischen Methoden und HPC recht gut überleben, ohne reinen Mathematikunterricht zu nehmen. Es hängt wirklich von der Nische ab, die Sie besetzen möchten.
Wenn Sie neue Methoden entwickeln möchten, sind Theorieklassen hilfreich. Theorieunterricht ist auch hilfreich für die allgemeine mathematische Kompetenz; Das Lesen von Mathepapieren wird viel, viel einfacher.
Wenn Sie bestimmte numerische Methoden auf Probleme anwenden möchten, sind numerische Methodenklassen hilfreicher. Ich glaube, aus dieser Perspektive kommt aeismail, und für Ingenieure ist dies eine häufigere Situation. (Haftungsausschluss: Wir kennen uns und haben die gleiche Abteilung absolviert.)
Was HPC betrifft, habe ich den Eindruck, dass Erfahrung der beste Lehrer ist. Ich nahm an einem parallelen Programmierkurs teil, der ein wenig nützlich war, aber die Hauptbotschaft der Klasse war, Dinge auszuprobieren und zu sehen, ob sie funktionierten. Wenn es für Ihre Abschlussarbeit wichtig ist, erhalten Sie Erfahrung in HPC. Wenn dies nicht der Fall ist, werden Sie es nicht tun, und es wird wahrscheinlich keine Rolle spielen, bis Sie die Gänge wechseln und HPC-Probleme angehen möchten. Meine Diplomarbeit war nicht besonders HPC-lastig, zumindest was mein Programm betrifft, so dass ich diese Fähigkeiten nicht erlernen musste.
Zum Abschluss sollten Sie sich wahrscheinlich darauf konzentrieren, Hintergrundinformationen zu Themen zu erhalten, die sich auf Ihr Diplomarbeitsproblem beziehen, sich vor Augen halten, was Sie in Zukunft tun möchten, und entscheiden, welchen allgemeinen Hintergrund Sie für die Kommunikation mit anderen Forschern in der EU benötigen Community, der Sie beitreten möchten. Ihre Promotion wird eine der letzten Gelegenheiten für Sie sein, Unterricht zu nehmen, und wenn Sie glauben, dass Sie Mathe-Theorie (oder wirklich irgendein Fach) lernen möchten, ist es erheblich schwieriger, sie selbst zu lernen, ohne eine Grundvoraussetzung zu schaffen Kompetenz zuerst.
HPC ist eine Mischung aus Mathematik, Computer, Informatik und Anwendungen. Sie müssen in der Lage sein, alle zu verstehen, um auf lange Sicht wirklich erfolgreich zu sein. Sie müssen jedoch nicht unbedingt in allen das gleiche Niveau erreichen.
Im Argument Berechnung versus Mathematik würde ich für einen Ingenieur argumentieren, dass die numerischen Implementierungsprobleme zunächst wichtiger sind. Wenn Sie warten, bis Sie die mathematische Theorie gelernt haben, und dann mit der Implementierung beginnen, arbeiten Sie möglicherweise lange an Dingen, die zwar zweifellos nützlich sind, sich aber möglicherweise nicht direkt auf Ihre Abschlussarbeit auswirken.
Ich würde mich also zunächst dazu neigen, die rechnerischen Aspekte zu verstehen, und dann zurückgehen und die Lücken in der mathematischen Theorie ausfüllen. Hardwareprobleme können ebenfalls erlernt werden - aber viele Auswirkungen auf Software hängen auch von der Plattform ab. Daher ist dies möglicherweise nicht der erste Punkt auf Ihrer Tagesordnung.
Andere mögen mir natürlich nicht zustimmen; Wie Sie sagten, ist dies eher eine Stellungnahme als eine sachliche Frage.
quelle
Nehmen Sie an so vielen Kursen wie möglich teil. Ich habe es getan und ich bereue es nicht.
Angenommen, Sie interessieren sich für eine Forschungskarriere, können Sie mit jeder Mischung aus beiden erfolgreich sein. Finden Sie Mitarbeiter, deren Wissen Ihr Wissen ergänzt. Ich kenne eine beträchtliche Menge Mathematik in Bezug auf Genauigkeit und Stabilität numerischer Methoden, aber viel weniger über HPC. Ich habe Mitarbeiter, die HPC sehr gut kennen, sodass wir gemeinsam innovative numerische Methoden auf großen Maschinen ausführen können. Ich rechne und sie rechnen größtenteils.
Das heißt, ich denke, dass Mathe
während HPC- Themen
Dies ist eine Übergeneralisierung und wird sicherlich nicht übereinstimmende Kommentare anziehen. Aber ich denke, das stimmt.
quelle
Ich stimme sowohl Aeismail als auch Oxberry zu. Ich habe beschlossen, eine Antwort zu schreiben, weil Sie anscheinend vor denselben Fragen stehen, auf die ich letztes Jahr versucht habe, eine Antwort zu finden. Ich habe auch Maschinenbau studiert (und es gehasst, besonders Festkörpermechanik) und viel Zeit damit verbracht, mit numerischen Methoden in CFD oder Optimierung zu arbeiten. Jetzt mache ich meinen Master in Angewandter Mathematik und Computerwissenschaften. Aus meiner Sicht müssen Sie zunächst entscheiden, was Sie in Zukunft tun möchten. Wenn Sie sich mit der Modellierung oder Entwicklung numerischer Methoden befassen möchten, sollten Sie sich auf jeden Fall der Mathematik widmen. Ich habe zwei Jahre lang mit Finite-Volumen- und Finite-Elemente-Methoden gearbeitet, ohne die tiefe Basis zu kennen, und jetzt, wo ich Unterricht in angewandter Mathematik nehme, ist alles für mich viel sinnvoller. Mir ist klar, wie die Methoden genau funktionieren, und ich gehe nicht mehr blind, sondern experimentiere nur mit allem. Das spart viel Zeit und Mühe. Wenn Sie sich jedoch für die Entwicklung von Software und verwandten Themen entscheiden, möchten Sie sich möglicherweise auf den HPC-Teil konzentrieren. Nach meiner Erfahrung gibt es viele Pakete, die optimiert und für viele numerische Anwendungen einsatzbereit sind. Daher ist es nicht die beste Idee für mich, viel Zeit mit der Entwicklung meiner eigenen Software zu verbringen, also habe ich beschlossen, mehr am mathematischen Teil zu arbeiten.
quelle
Ich glaube nicht an eine Theorie / Anwendung-Dichotomie, aber es ist auch wichtig, Felder auf eine Weise anzugehen, die nicht völlig aus dem Zusammenhang gerät. Das Verständnis der Theorie vermittelt Ihnen meiner Meinung nach eine allgemeine Vorstellung von dem Problem, das sehr wertvoll ist, da Sie sich nicht auf Beton nach Beton konzentrieren müssen (dh eine bestimmte Implementierung im Vergleich zu einer anderen), und Sie können das Gesamtbild betrachten. Dieses Verständnis entsteht jedoch nicht aus einem Vakuum heraus, und Sie können auf dieser Ebene nicht BEGINNEN. So funktioniert das Gehirn nicht. Sie können nicht zum Konzept eines Waldes gelangen, ohne jemals einen Baum gesehen zu haben!
Das heißt nicht, dass die Theorie auch in dieser Frage eine untergeordnete Rolle spielt. Es ist zu sagen, dass theoretisches Verständnis eine signifikante mentale Ökonomie bietet, wenn man eine Klasse von Problemen betrachtet, aber es kann nicht ohne die Betone existieren, die es antreiben (zumindest in den Computertheorien).
Um Ihre Frage zu beantworten: Wenn Sie nur an der Implementierung interessiert sind, das ist das Ergebnis, aber nicht an der Verbesserung / Änderung dieser Implementierung, ist die Theorie nicht so wichtig. Wenn Sie jedoch Ihre eigenen produzieren möchten, haben Sie einen Wettbewerbsnachteil gegenüber denen, die die Theorie besser verstehen. Es sei denn natürlich, Sie produzieren im Laufe der Jahre Ihre eigenen, die zufällig besser sind :)
quelle