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

Курсовая по прикладной математике и информатике: как построить модель, выбрать численный метод и доказать корректность результата

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

Содержание +

Курсовая по прикладной математике и информатике должна показывать полный путь от содержательной задачи к математической модели и вычислительному результату. Слабая работа часто начинается сразу с кода или формулы, а связь с исходной задачей остаётся неясной.

Сильная работа отвечает на три вопроса: что моделируется, почему выбран именно этот метод и насколько можно доверять полученному численному результату.

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

Сначала опишите содержательный объект.

Это может быть:

  • теплопроводность;
  • движение;
  • распространение вещества;
  • оптимизация;
  • поток;
  • популяция;
  • финансовый процесс;
  • обработка данных.

После этого задайте, что считается неизвестным и какие величины известны.

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

Допущения

Любая модель упрощает реальность.

Запишите допущения отдельно.

Например:

  • среда однородна;
  • параметры постоянны;
  • процесс стационарный;
  • шум имеет заданное распределение;
  • взаимодействием второго порядка пренебрегаем.

Не прячьте важное упрощение внутри формулы.

Размерность

Проверка единиц помогает ловить ошибки ещё до программирования.

Если слева в уравнении размерность температуры, а справа энергии, модель записана неправильно.

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

Начальные и граничные условия

Дифференциальное уравнение без условий часто не задаёт единственного решения.

Определите:

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

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

Аналитическое решение как эталон

Если для упрощённого случая есть точное решение, используйте его.

Это отличный способ проверить численный алгоритм.

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

Выбор численного метода

Метод выбирается по свойствам задачи.

Учитывайте:

  • устойчивость;
  • порядок точности;
  • вычислительную стоимость;
  • жёсткость;
  • размерность;
  • структуру матрицы.

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

Дискретизация

Покажите переход от непрерывной задачи к конечному набору уравнений.

Для сеточного метода укажите:

  • шаг;
  • узлы;
  • аппроксимацию производных;
  • схему.

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

Погрешность аппроксимации

Объясните порядок метода.

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

Проверьте это экспериментом.

Сходимость по сетке

Один расчёт на одной сетке не доказывает точность.

Запустите несколько вариантов:

  • h;
  • h/2;
  • h/4.

Сравните ключевую величину.

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

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

Некоторые схемы дают красивые числа при одном шаге и полностью разлетаются при другом.

Если метод условно устойчив, соблюдайте ограничение.

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

Система линейных уравнений

Для большой системы выбор решателя важен.

Можно использовать:

  • прямой метод;
  • итерационный;
  • разреженную матрицу.

Не храните огромную разреженную матрицу как плотную, если задача масштабная.

Это может увеличить память на порядки.

Итерационный метод

Определите критерий остановки.

Например:

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

Не завершайте процесс только потому, что после 100 итераций график уже похож.

Невязка и ошибка

Малая невязка уравнения не всегда означает малую ошибку решения относительно точного ответа.

Разделяйте эти понятия.

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

Оптимизация

Если тема оптимизационная, определите:

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

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

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

Градиентный метод

Покажите:

  • градиент;
  • шаг;
  • критерий остановки.

Слишком большой шаг может приводить к расходимости.

Слишком маленький - к медленной работе.

Сравните несколько стратегий, если это часть темы.

Стохастическая модель

Для случайного процесса одной реализации недостаточно.

Проведите несколько запусков.

Покажите:

  • среднее;
  • разброс;
  • доверительный диапазон, если уместно.

Не делайте вывод по одной удачной траектории.

Метод Монте-Карло

Он особенно чувствителен к числу испытаний.

Покажите, как меняется оценка при увеличении выборки.

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

Идентификация параметров

Если параметры модели оцениваются по данным, разделите обучающую часть и проверочную.

Не подбирайте параметры по всем данным и потом на тех же данных не объявляйте модель подтверждённой.

Валидация

Результат нужно сравнить с чем-то независимым:

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

Совпадение собственного кода с самим собой не является валидацией.

Чувствительность

Измените ключевые параметры.

Посмотрите, какой из них сильнее влияет на результат.

Если изменение на 1% меняет ответ вдвое, параметр требует особенно точного задания.

Реализация

Разделите код на функции:

  • ввод;
  • модель;
  • решатель;
  • анализ;
  • визуализацию.

Не смешивайте вычислительное ядро и построение графиков в одном большом скрипте.

Это затрудняет тестирование.

Тесты

Для математического кода полезны:

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

Не ограничивайтесь визуальным сравнением графиков.

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

Если размер задачи большой, измерьте время, память и число итераций.

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

Быстрый неверный алгоритм не является улучшением.

Воспроизводимость

Сохраните код, входные данные, параметры, версии библиотек, seed и инструкцию запуска.

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

Графики

Подписывайте оси, единицы, параметры и сетку или шаг, если это важно.

Не используйте сглаживание, которое скрывает численные колебания.

График должен показывать реальный результат.

Защита

Покажите:

1. содержательную задачу;
2. модель;
3. метод;
4. проверку сходимости;
5. валидацию;
6. результат.

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

Ещё по теме