Мне нравится ответ Aeismail, но я собираюсь предоставить альтернативную точку зрения.
При оптимизации невозможно по-настоящему изучить поле, не разбираясь в реальном анализе. Еще до того, как вы приступите к решению численных задач, вам необходимо понять понятия сходимости последовательностей, потому что вы собираетесь доказать в классах, что алгоритмы сходятся. Вам нужно понимать такие понятия, как преемственность и дифференцируемость, более чем на поверхностном уровне. Следовательно, реальный анализ является обязательным условием для курсов по нелинейному программированию.
Моя диссертация относится к методам решения обыкновенных дифференциальных уравнений. Проблемы сходимости, а именно такие вещи, как «если я уменьшу свою локальную устойчивость к ошибкам, то мое вычисленное числовое решение приближается к истинному решению уравнений, которые я решаю», снова являются проблемами, которые требуют реального анализа. Чтобы развить теорию проблем конвергенции, я (вопреки желанию моих консультантов) потребовал провести два семестра реального анализа. (Это окупилось парой рукописей.)
Тем не менее, я знаю, что есть люди, которые неплохо выживают в численных методах и HPC, не посещая чистые уроки математики. Это действительно зависит от той ниши, которую вы хотите занять.
Если вы хотите разработать новые методы, то теоретические занятия полезны. Теоретические занятия также полезны для общей математической грамотности; чтение математических работ становится намного, намного легче.
Если вы хотите применить конкретные численные методы к задачам, классы численных методов более полезны. Я полагаю, что именно с этой точки зрения приходит aeismail, и это более распространенная ситуация для инженеров. (Отказ от ответственности: мы знакомы и закончили тот же факультет.)
Что касается HPC, у меня сложилось впечатление, что опыт - лучший учитель. Я прошел курс параллельного программирования, и это было немного полезно, но главное послание класса состояло в том, чтобы попробовать что-то и посмотреть, сработали ли они. Если это важно для вашей диссертации, вы получите опыт работы в HPC. Если это не так, вы не будете, и это, вероятно, не будет иметь значения, пока вы не захотите переключить передачи и решить проблемы HPC. Мой тезис не был особенно высокопроизводительным, хотя бы с точки зрения того, что я программирую, поэтому мне не нужно было приобретать этот набор навыков.
Чтобы подвести итоги, вам, вероятно, следует сосредоточиться на изучении вопросов, связанных с вашей диссертационной задачей, помнить о том, что, по вашему мнению, вы хотите сделать в будущем, и решить, какие общие, общие сведения вам нужны для общения с другими исследователями в этой области. сообщество, к которому вы хотите присоединиться Ваша докторская степень станет одной из последних возможностей для вас посещать занятия, и если вы думаете, что действительно хотите изучать математическую теорию (или любой предмет, действительно), изучать ее самостоятельно намного сложнее, не устанавливая какой-то базовый мастерство в первую очередь.
HPC - это смесь математики, вычислений, информатики и приложений. Вы должны быть в состоянии понять их все, чтобы быть по-настоящему успешным в долгосрочной перспективе. Тем не менее, вам не обязательно достигать одинакового уровня мастерства во всех из них.
В аргументе «вычисление против математики» для инженера я бы сказал, что вопросы численной реализации на первый взгляд важнее. Если вы подождете, пока не изучите математическую теорию, а затем начнете реализацию, вы можете потратить много времени на работу над вещами, которые, без сомнения, полезны, могут напрямую не повлиять на исследование вашей диссертации.
Итак, я сначала склонялся к пониманию вычислительных аспектов, а затем возвращался назад и заполнял пробелы в математической теории. Проблемы с оборудованием также могут быть изучены, но многое из того, как это влияет на программное обеспечение, также будет зависеть от платформы, поэтому, опять же, это может быть не первым пунктом вашей повестки дня.
Другие могут, конечно, не согласиться со мной; как вы заявили, это скорее вопрос мнения, чем фактический вопрос.
источник
Пройдите столько курсов, сколько сможете в обоих. Я сделал, и я не жалею об этом.
Предполагая, что вы заинтересованы в исследовательской карьере, вы можете добиться успеха с любым сочетанием этих двух факторов. Найдите сотрудников, чьи знания дополняют ваши. Я знаю значительное количество математики, поскольку она касается точности и стабильности численных методов, но гораздо меньше о HPC. У меня есть сотрудники, которые очень хорошо знают HPC, поэтому работая вместе, мы можем использовать инновационные численные методы, работающие на больших машинах. Я делаю математику, а они делают вычисления, по большей части.
Тем не менее, я думаю, что математика
тогда как темы HPC
Это чрезмерное обобщение и, безусловно, привлечет не согласные комментарии. Но я думаю, что в этом есть доля правды.
источник
Я согласен с aeismail и Oxberry. Я решил написать ответ, потому что вы, похоже, сталкиваетесь с теми же вопросами, на которые я пытался найти ответ в прошлом году. Я также специализировался в машиностроении (и ненавидел его, особенно механику твердого тела), я провел много времени, работая с численными методами в CFD или оптимизации. Сейчас я учусь в магистратуре по прикладной математике и вычислительным наукам. С моей точки зрения, вам сначала нужно определиться с тем, что вы хотите сделать в будущем. Если вы хотите заняться моделированием или разработкой численных методов, то вам определенно стоит заняться математикой. Я провел два года, работая с методами конечного объема и конечного элемента, не зная глубоких основ, и теперь, когда я посещаю занятия по прикладной математике, все это имеет для меня гораздо больше смысла. Я понимаю, как именно работают методы, и я больше не хожу вслепую, просто экспериментируя со всем. Это экономит много времени и усилий. Но если вы решите заняться разработкой программного обеспечения и связанными с ним темами, вы можете сосредоточиться на части HPC. По моему опыту, существует множество пакетов, которые оптимизированы и готовы к использованию для множества числовых приложений. Так что для меня не будет лучшей идеей тратить много времени на разработку собственного программного обеспечения, поэтому я решил больше работать над математической частью.
источник
Я не верю в дихотомию теории / приложения, но также важно подходить к полям так, чтобы это не было полностью вне контекста. Понимание теории, я думаю, дает вам общую интуицию по проблеме, которая очень ценна, так как избавляет вас от необходимости фокусироваться на конкретном за конкретным (то есть на одной конкретной реализации в сравнении с другой) и позволяет взглянуть на общую картину. Это понимание, однако, не возникает из вакуума, и вы не можете начать на этом уровне ... это не так, как работает мозг. Вы не можете прийти к понятию леса, даже не увидев дерево!
Нельзя сказать, что теория играет подчиненную роль в этом вопросе. Следует сказать, что теоретическое понимание дает человеку значительную умственную экономию при рассмотрении класса задач, но оно не может существовать без конкретизирующих его бетонов (по крайней мере, в вычислительных теориях).
Итак, чтобы ответить на ваш вопрос: если все, что вас интересует, это реализация, то есть результат, но не улучшение или изменение этой реализации, теория не будет так важна. Однако, если вы хотите производить свои собственные, то вы находитесь в невыгодном положении по сравнению с теми, кто лучше понимает теорию. Если, конечно, вы не производите свои собственные с годами, что оказывается лучше :)
источник