План курса «Математическое моделирование» Направление: 09.02.07 «Информационные системы и программирование» Объём: 24 часа лекций + 48 часов практических занятий = 72 часа Форма итоговой аттестации: зачёт --- 1. О чём этот предмет? Математическое моделирование – это искусство переводить реальные задачи на язык математики, решать их с помощью компьютера и анализировать результаты. Для программиста это ключевой навык: любая серьёзная программа (от игры до банковской системы) использует математические модели. Чему вы научитесь: · строить математические модели для практических задач; · выбирать подходящий численный метод; · реализовывать алгоритмы вручную и на Python; · оценивать точность и достоверность результатов. Зачем это нужно: чтобы понимать, как работают алгоритмы внутри готовых библиотек, уметь самостоятельно создавать вычислительные модули и принимать обоснованные решения на основе данных. --- 2. Темы лекций (24 часа) № Тема лекции (2 часа) Краткое содержание 1 Введение в математическое моделирование Понятие модели. Этапы моделирования: постановка задачи, формализация, выбор метода, реализация, анализ. Примеры из IT. 2 Погрешности вычислений Источники погрешностей: неустранимая, метода, округления. Абсолютная и относительная погрешность. Правила записи приближённых чисел. 3 Решение нелинейных уравнений (часть 1) Отделение корней. Метод половинного деления: алгоритм, сходимость, оценка числа итераций. 4 Решение нелинейных уравнений (часть 2) Метод простых итераций, метод Ньютона (касательных). Сравнение скорости сходимости. 5 Решение систем линейных уравнений (СЛАУ) Метод Гаусса (прямой ход, обратный ход). Метод простых итераций. Метод Зейделя. Условия сходимости. 6 Интерполяция функций Постановка задачи. Интерполяционный многочлен Лагранжа. Погрешность интерполяции. 7 Аппроксимация. Метод наименьших квадратов Отличие аппроксимации от интерполяции. Линейная и квадратичная аппроксимация. Построение эмпирических формул. 8 Численное интегрирование Формулы прямоугольников, трапеций, Симпсона. Оценка погрешности. Правило Рунге. 9 Численное дифференцирование Простейшие формулы численного дифференцирования. Погрешность. Применение в обработке данных. 10 Решение обыкновенных дифференциальных уравнений Задача Коши. Метод Эйлера (явный и неявный). Модифицированный метод Эйлера. Метод Рунге-Кутты 4-го порядка. 11 Имитационное моделирование Метод Монте-Карло: генерация случайных чисел, оценка площадей, моделирование случайных процессов. 12 Основы теории массового обслуживания Понятие СМО. Входящий поток, очередь, каналы обслуживания. Показатели эффективности: загрузка, длина очереди, время ожидания. Формулы для простейшей СМО. 13 Оптимизация и линейное программирование Постановка задачи оптимизации. Графический метод для двух переменных. Транспортная задача. Понятие о симплекс-методе. 14 Обзор современных инструментов моделирования Обзор библиотек Python (NumPy, SciPy, Matplotlib), сред моделирования (AnyLogic). Подготовка к итоговому проекту. Курс лекций может незначительно корректироваться в зависимости от темпа усвоения материала. --- 3. Темы практических занятий (48 часов) Практики проводятся в компьютерном классе (Python, Excel) или с использованием калькуляторов для ручных расчётов. Каждое занятие рассчитано на 2 академических часа. № практики Тема Содержание работы 1 Построение простейших моделей Разбор примеров перевода словесной задачи в математическую формулу. Составление блок-схемы этапов моделирования. 2 Вычисление погрешностей Определение абсолютной и относительной погрешности. Оценка погрешности арифметических операций. 3 Метод половинного деления (вручную) Решение уравнения x^3 - x - 1 = 0 с точностью 0.1. Заполнение таблицы итераций. 4 Метод половинного деления (программирование) Написание программы на Python, реализующей метод. Сравнение с ручным расчётом. 5 Метод Ньютона и простых итераций Ручной расчёт для уравнения x^2 - 2 = 0. Реализация на Python. Сравнение скорости сходимости. 6 Решение СЛАУ методом Гаусса Решение системы 3×3 вручную. Составление алгоритма, реализация на Python. 7 Итерационные методы для СЛАУ Метод простых итераций и Зейделя. Исследование сходимости на примере. 8 Интерполяция многочленом Лагранжа Построение интерполяционного многочлена для табличных данных. Вычисление значения в промежуточной точке. 9 Метод наименьших квадратов Построение линейной и квадратичной аппроксимации по экспериментальным данным в Excel и Python. 10 Численное интегрирование (вручную) Вычисление определённого интеграла методами прямоугольников, трапеций, Симпсона с заданным шагом. 11 Численное интегрирование (Python) Реализация функций интегрирования. Оценка погрешности по правилу Рунге. 12 Численное дифференцирование Вычисление производной таблично заданной функции. Сравнение с аналитическим значением. 13 Метод Эйлера для ОДУ (вручную) Решение задачи Коши y' = y, y(0)=1 с шагом 0.1. Построение таблицы. 14 Метод Эйлера и Рунге-Кутты (Python) Реализация методов, сравнение с точным решением, визуализация. 15 Метод Монте-Карло Оценка числа π методом случайных точек. Моделирование бросания игральной кости. 16 Расчёт показателей СМО Вычисление загрузки сервера, длины очереди, времени ожидания для заданных λ и μ. 17 Имитационная модель очереди Написание программы, моделирующей очередь в магазине/на сервере. Сбор статистики. 18 Графический метод линейного программирования Решение задачи о максимизации прибыли с двумя переменными. Построение области допустимых решений. 19 Транспортная задача Решение транспортной задачи методом северо-западного угла и методом потенциалов (упрощённо). 20 Комплексная работа: модель траектории снаряда Использование метода Рунге-Кутты для расчёта траектории с сопротивлением воздуха. Построение графиков. 21 Обработка экспериментальных данных Построение аппроксимирующей функции, оценка точности, прогнозирование. 22 Подготовка к итоговому проекту Выбор темы, постановка задачи, обсуждение плана реализации. 23 Работа над проектом Консультации, отладка программ, оформление результатов. 24 Защита проектов Представление проекта: модель, метод, программа, анализ результатов. Примечание: если нет возможности использовать компьютеры на каждой практике, часть работ выполняется вручную (как указано), но для специальности 09.02.07 желательно как можно больше программировать. --- 4. Система оценивания Итоговая оценка складывается из нескольких компонентов. В течение семестра вы будете получать баллы за следующие виды работ: Текущий контроль (60% итоговой оценки) · Практические работы – 40%. Каждая выполненная и защищённая практическая работа оценивается по 5-балльной шкале. Средний балл за все практики умножается на коэффициент. · Домашние задания – 10%. Выборочно задаются после некоторых тем. Проверяется правильность, аккуратность, самостоятельность. · Контрольная работа (рубежный контроль) – 10%. Проводится после 6-й лекции. Включает задачи на погрешности, решение уравнений, СЛАУ, интерполяцию. Итоговый контроль (40% итоговой оценки) · Зачёт в форме защиты индивидуального или группового проекта (математическая модель + программа + отчёт). Требования к проекту: · сформулирована задача; · построена математическая модель; · выбран и реализован численный метод; · приведены результаты и их анализ. Критерии оценки на зачёте · «Зачтено» – проект выполнен полностью, модель адекватна, программа работает, студент отвечает на вопросы по теме. · «Не зачтено» – проект отсутствует или грубо нарушены ключевые этапы моделирования. Важно: пропуски практических занятий отрабатываются в течение семестра. Без выполненных практик студент не допускается до зачёта. --- 5. Рекомендуемая литература и ресурсы 1. Бахвалов Н.С., Жидков Н.П., Кобельков Г.М. Численные методы. – М.: БИНОМ, любое издание. 2. Турчак Л.И., Плотников П.В. Основы численных методов. – М.: Физматлит. 3. Самарский А.А., Гулин А.В. Численные методы. – М.: Наука. 4. Интернет-ресурсы: · NumPy User Guide · SciPy Lecture Notes · Python Programming for Mathematician