Gosto da resposta do e-mail, mas vou fornecer uma perspectiva alternativa.
Na otimização, é impossível aprender realmente o campo sem entender a análise real. Mesmo antes de abordar questões numéricas, é necessário entender noções de convergência de seqüências, porque você vai provar em classes que os algoritmos convergem. Você terá que entender conceitos como continuidade e diferenciabilidade em mais do que um nível superficial. Consequentemente, a análise real é um pré-requisito para os cursos de programação não linear.
Minha tese se refere a métodos para resolver equações diferenciais ordinárias. Problemas de convergência, especificamente coisas como "se eu reduzir minha tolerância a erros local, minha solução numérica calculada se aproxima da verdadeira solução das equações que estou resolvendo" são novamente problemas que requerem análise real. O desenvolvimento da teoria para questões de convergência exigiu que eu (contra os desejos de meus consultores) fizesse dois semestres de análise real. (Valeu a pena com alguns manuscritos.)
No entanto, eu sei que existem pessoas por aí que sobrevivem muito bem em métodos numéricos e HPC sem ter aulas de matemática pura. Realmente depende do nicho que você deseja ocupar.
Se você deseja desenvolver novos métodos, as aulas teóricas são úteis. As aulas de teoria também são úteis para a alfabetização matemática geral; ler documentos de matemática se torna muito, muito mais fácil.
Se você deseja aplicar métodos numéricos específicos a problemas, as classes de métodos numéricos são mais úteis. Acredito que essa perspectiva é de onde vem o eeismail e é uma situação mais comum para os engenheiros. (Aviso: nos conhecemos e nos graduamos no mesmo departamento.)
Quanto ao HPC, a impressão que tive é que a experiência é a melhor professora. Fiz um curso de programação paralela e foi um pouco útil, mas a principal mensagem da turma era tentar as coisas e ver se elas funcionavam. Se for importante para a sua pesquisa de tese, você terá experiência em HPC. Se não for, você não o fará e provavelmente não terá importância até que você queira trocar de marcha e resolver problemas de HPC. Minha tese não foi especialmente intensa em termos de HPC, pelo menos em termos do que eu programa, por isso não precisei adquirir esse conjunto de habilidades.
Para finalizar, você provavelmente deve se concentrar em obter informações sobre questões relacionadas ao seu problema de tese, ter em mente o que acha que deseja fazer no futuro e decidir qual histórico geral e amplo você precisa para se comunicar com outros pesquisadores na área. comunidade em que você gostaria de participar. Seu doutorado será uma das últimas oportunidades para você ter aulas, e se você acha que deseja aprender teoria matemática (ou qualquer outro assunto, na verdade), aprendê-la por conta própria é consideravelmente mais difícil sem estabelecer algum tipo de instrução básica. proficiência primeiro.
HPC é uma mistura de matemática, computação, ciência da computação e aplicativos. Você precisa entender todos eles para ter realmente sucesso a longo prazo. No entanto, você não precisa necessariamente atingir o mesmo nível de proficiência em todos eles.
No argumento de computação versus matemática, para um engenheiro, eu argumentaria que as questões de implementação numérica são mais importantes a princípio. Se você esperar até aprender a teoria matemática e começar a implementação, poderá passar um longo tempo trabalhando em coisas que, embora sem dúvida úteis, podem não afetar diretamente sua pesquisa de tese.
Então, eu me inclinaria a entender os aspectos computacionais primeiro e depois voltar e preencher os buracos na teoria matemática. Os problemas de hardware também podem ser aprendidos - mas muito de como isso afeta o software também depende da plataforma; portanto, novamente, pode não ser o primeiro item da sua agenda.
Outros podem, naturalmente, discordar de mim; como você afirmou, isso é mais uma peça de opinião do que uma questão de fato.
fonte
Faça o máximo de cursos possível em ambos. Eu fiz e não me arrependo.
Supondo que você esteja interessado em uma carreira de pesquisa, pode ter sucesso com qualquer combinação dos dois. Encontre colaboradores cujo conhecimento complementa o seu. Conheço uma quantidade significativa de matemática no que se refere à precisão e estabilidade dos métodos numéricos, mas muito menos sobre o HPC. Eu tenho colaboradores que conhecem muito bem o HPC, portanto, trabalhando juntos, podemos obter métodos numéricos inovadores em grandes máquinas. Eu faço as contas e eles fazem o cálculo, na maior parte.
Dito isto, acho que a matemática
considerando que os tópicos de HPC
Essa é uma generalização excessiva e certamente atrairá comentários discordantes. Mas acho que há verdade nisso.
fonte
Eu concordo com o e-mail e com o Oxberry. Decidi escrever uma resposta porque você parece estar enfrentando as mesmas perguntas que eu estava tentando encontrar uma resposta no ano passado. Também me formei em engenharia mecânica (e odiava, especialmente mecânica sólida), passei muito tempo trabalhando com métodos numéricos em CFD ou otimização. Agora estou fazendo meu mestrado em Matemática Aplicada e Ciências da Computação. Do meu ponto de vista, primeiro você precisa decidir o que deseja fazer no futuro. Se você deseja entrar em modelagem ou desenvolvimento de métodos numéricos, definitivamente deve ir para a matemática. Passei dois anos trabalhando com os métodos de volume finito e elementos finitos sem conhecer a base profunda e agora que estou tendo aulas de matemática aplicada, tudo faz muito mais sentido para mim. Percebo como os métodos funcionam exatamente e não estou mais andando cegamente apenas experimentando tudo. Isso economiza muito tempo e esforço. Mas se você decidir desenvolver o software e tópicos relacionados, poderá se concentrar na parte do HPC. Na minha experiência, existem muitos pacotes otimizados e prontos para uso em muitos aplicativos numéricos. Portanto, não será a melhor ideia gastar muito tempo desenvolvendo meu próprio software, então decidi trabalhar mais na parte de matemática.
fonte
Não acredito em uma dicotomia teoria / aplicação, mas também é importante abordar campos de uma maneira que não esteja completamente fora de contexto. Creio que entendo a teoria que fornece uma intuição geral sobre o problema que é muito valioso, pois impede que você tenha que se concentrar em concreto após concreto (ou seja, uma implementação em particular versus outra) e permite que você veja o cenário geral. Esse entendimento, no entanto, não surge do vácuo, e você não pode COMEÇAR nesse nível. Não é assim que o cérebro funciona. Você não pode chegar ao conceito de floresta sem nunca ter visto uma árvore!
Isso não quer dizer que a teoria também tenha um papel subserviente nessa questão. Quer dizer que o entendimento teórico fornece uma economia mental significativa ao considerar uma classe de problemas, mas ela não pode existir sem os concretos que a impulsionam (pelo menos nas teorias computacionais).
Então, para responder à sua pergunta: se tudo o que você está interessado é na implementação, esse é o resultado, mas não em melhorar / alterar essa implementação, a teoria não será tão importante. Se, no entanto, você deseja produzir o seu próprio, está em desvantagem competitiva com aqueles que entendem melhor a teoria. A menos, é claro, que você produza o seu próprio ao longo dos anos, que seja melhor :)
fonte