Курсовая работа

Курсовая по прикладной математике и информатике в Бауманке: модель, алгоритм, эксперимент и проверка ошибки

Как писать курсовую по прикладной математике и информатике в Бауманке: формализовать задачу, построить модель, реализовать алгоритм и проверить точность.

Содержание +

Курсовая по прикладной математике и информатике в МГТУ им. Баумана должна показывать переход от реальной или математической задачи к формальной модели и вычислительному результату. Код здесь важен, но он не должен скрывать математику.

В МГТУ им. Н.Э. Баумана направление 01.03.02 «Прикладная математика и информатика» реализуется как отдельная образовательная программа. В Мытищинском филиале официально опубликована программа «Прикладная математика» с учебным планом и методическими материалами.

Официальная страница:
https://mf.bmstu.ru/sveden/education/programs/prikladnaya-matematika-suos-01.03.02.html

Начните с формализации

Плохо:

«Исследование алгоритмов оптимизации».

Сильнее:

«Сравнение градиентного и квазиньютоновского методов на классе выпуклых задач при одинаковом критерии остановки».

Теперь понятны:

  • класс задач;
  • методы;
  • критерий;
  • эксперимент.

Постановка задачи

Запишите:

  • пространство переменных;
  • ограничения;
  • целевую функцию;
  • параметры;
  • критерий решения.

Читатель должен понимать задачу без запуска вашего кода.

Допущения

Модель всегда упрощает объект.

Например:

  • линейность;
  • независимость;
  • стационарность;
  • постоянный коэффициент;
  • отсутствие шума.

Каждое допущение влияет на область применимости.

Размерность

Если модель физическая или экономическая, проверьте единицы.

Нельзя складывать величины разных размерностей.

Размерностный анализ часто ловит ошибку раньше численного метода.

Аналитический частный случай

Если существует простое решение, используйте его как контроль.

Например:

  • одномерный случай;
  • симметрия;
  • линейная модель;
  • малый размер.

Если программа не воспроизводит очевидный случай, дальнейший эксперимент ненадёжен.

Алгоритм

Опишите:

1. вход;
2. начальное приближение;
3. шаг;
4. критерий остановки;
5. выход.

Не вставляйте исходный код вместо алгоритма.

Псевдокод

Он помогает показать логику независимо от языка.

Используйте математические переменные и операции.

Не переписывайте Python построчно.

Корректность

Для известного алгоритма укажите условия, при которых он работает.

Например:

  • выпуклость;
  • гладкость;
  • положительная определённость;
  • связность графа.

Не используйте теорему вне её предпосылок.

Сложность

Разделяйте:

  • теоретическую асимптотику;
  • реальное время;
  • память.

O(n log n) не гарантирует, что метод быстрее другого на малом n.

Численный метод

Если задача решается приближённо, определите ошибку.

Например:

  • абсолютная;
  • относительная;
  • норма;
  • residual.

Не пишите «решение точное», если используется дискретизация.

Сетка

Для дифференциального уравнения проверьте чувствительность к шагу.

Например:

h, h/2, h/4.

Если ответ сильно меняется, решение ещё не стабилизировалось.

Сходимость

Покажите, как ошибка уменьшается.

График log(error) против log(h) может помочь оценить порядок.

Но объясните оси.

Критерий остановки

Например:

||x(k+1)-x(k)|| < epsilon.

Выбор epsilon влияет на:

  • точность;
  • время;
  • число итераций.

Не ставьте 1e-12 автоматически.

Машинная точность

Очень маленький epsilon может быть бессмысленным из-за floating point.

Покажите, где дальнейшее уменьшение порога не улучшает ответ.

Устойчивость

Метод может быть математически корректным, но численно нестабильным.

Проверьте чувствительность к небольшому возмущению входа.

Не оценивайте алгоритм только на идеальных данных.

Обусловленность

Если матрица плохо обусловлена, небольшая ошибка входа может сильно изменить результат.

Рассчитайте condition number, если это соответствует курсу.

Обсудите влияние на точность.

Линейная система

Для Ax=b можно сравнить:

  • прямой метод;
  • итерационный;
  • sparse solver.

Выбор зависит от размера и структуры матрицы.

Разреженность

Не храните огромную sparse-матрицу как dense без необходимости.

Покажите:

  • долю ненулевых;
  • память;
  • время.

Это хороший прикладной результат.

Оптимизация

Для функции задайте:

  • градиент;
  • ограничение;
  • старт;
  • шаг.

Если сравниваете методы, используйте одинаковый критерий завершения.

Локальный минимум

Для невыпуклой задачи результат может зависеть от старта.

Запустите несколько начальных точек.

Не объявляйте найденное решение глобальным минимумом без доказательства.

Стохастический метод

Если алгоритм использует случайность, фиксируйте seed и делайте несколько запусков.

Один удачный запуск не является репрезентативным.

Монте-Карло

Оцените:

  • число выборок;
  • разброс;
  • доверительный интервал.

Ошибка обычно уменьшается медленно.

Не показывайте только одну точечную оценку.

Граф

Для графового алгоритма задайте тип:

  • ориентированный;
  • взвешенный;
  • связный.

Генератор графов должен соответствовать задаче.

Не сравнивайте алгоритмы на совершенно разных структурах без объяснения.

Динамическое программирование

Покажите:

  • состояние;
  • переход;
  • базовый случай;
  • порядок вычисления.

Не ограничивайтесь кодом с массивом dp.

Вероятностная модель

Если используете распределение, объясните:

  • почему оно подходит;
  • параметры;
  • как оценены параметры.

Не подбирайте нормальное распределение просто потому, что оно знакомо.

Статистическая оценка

Разделяйте:

  • параметр;
  • оценку;
  • стандартную ошибку;
  • интервал.

Не называйте выборочное среднее истинным средним.

Симуляция

Симуляция должна иметь:

  • модель;
  • вход;
  • случайность;
  • число повторов;
  • выходную метрику.

Сравните результат с теоретическим ожиданием там, где это возможно.

Реальные данные

Если задача основана на данных, опишите:

  • источник;
  • очистку;
  • пропуски;
  • масштабирование.

Математический метод не компенсирует плохой dataset.

Train/test

Для задач машинного обучения строго разделяйте обучающие и тестовые данные.

Не подбирайте гиперпараметры на тесте.

Baseline

Сравните сложный метод с простым.

Например:

  • среднее;
  • линейная модель;
  • наивный алгоритм.

Если новый метод улучшает метрику на 0,1%, обсудите, оправдана ли сложность.

Метрика

Она должна соответствовать задаче.

Для регрессии:

  • MAE;
  • RMSE.

Для классификации:

  • precision;
  • recall;
  • F1.

Для оптимизации:

  • objective;
  • gap;
  • runtime.

Производительность

Для вычислительного алгоритма измеряйте несколько размеров задачи.

Постройте график:

n -> time.

Сопоставьте с теоретической сложностью.

Повторяемость

Зафиксируйте:

  • версию языка;
  • библиотеки;
  • параметры;
  • seed.

Иначе эксперимент трудно воспроизвести.

Репозиторий

Храните:

  • код;
  • README;
  • requirements;
  • пример запуска;
  • данные или способ их получения.

Курсовая становится значительно прозрачнее.

Практическая глава

Сильная последовательность:

1. постановка;
2. модель;
3. алгоритм;
4. реализация;
5. тестовый пример;
6. эксперимент;
7. ошибка;
8. производительность;
9. ограничения.

Бауманский контекст

ПМИ в МГТУ может быть связана с математическим моделированием, вычислительными методами, обработкой данных и инженерными приложениями.

Конкретный баланс математики и программирования зависит от дисциплины и кафедры.

Защита

Будьте готовы вывести ключевую формулу, объяснить алгоритм, назвать сложность, показать ошибку, benchmark и область применимости.

Сильная курсовая по ПМИ в Бауманке показывает не только полученное число, но и почему математическая модель и вычислительный метод дают этому числу доверие.

Степан Сергеев

Автор – Степан Сергеев

Кандидат физико-математических наук (PhD). Четыре диплома о высшем образовании. Помогаю разобраться в учебных и исследовательских задачах.

Ещё по теме