|
| 1 | +# Отчёт по лабораторной работе: Решение уравнений гиперболического типа ⚡️📊 |
| 2 | + |
| 3 | +## Содержание 📖 |
| 4 | + |
| 5 | +1. [Введение и цели работы 🎓](#1-введение-и-цели-работы-) |
| 6 | +2. [Структура проекта 🛠️](#2-структура-проекта-) |
| 7 | +3. [Ход выполнения работы 🔎](#3-ход-выполнения-работы-) |
| 8 | + - [Используемые методы 📚](#используемые-методы-) |
| 9 | + - [FTCS](#FTCS) |
| 10 | + - [Явная схема Лакса-Вендрофа](#явная-схема-лакса-вендрофа) |
| 11 | + - [Схема Рихтмайера](#схема-рихтмайера) |
| 12 | + - [Схема МакКормака](#схема-маккормака) |
| 13 | + - [Противопотоковый метод первого порядка](#противопотоковый-метод-первого-порядка) |
| 14 | + - [Противопотоковый метод второго порядка](#противопотоковый-метод-второго-порядка) |
| 15 | + - [Решение одномерного уравнения конвекции](#решение-одномерного-уравнения-конвекции) |
| 16 | + - [Решение явным Эйлером](#решение-явным-эйлером) |
| 17 | +4. [Заключение и выводы 📝](#4-заключение-и-выводы-) |
| 18 | + |
| 19 | +## 1. Введение и цели работы 🎓 |
| 20 | + |
| 21 | +Уравнение конвекции (переноса) первого порядка относится к классу гиперболических уравнений и широко используется для описания процессов переноса массы, импульса и энергии в механике сплошной среды и физике плазмы. |
| 22 | +В общем случае аналитическое решение доступно лишь для простых начальных и граничных условий, поэтому на практике большое значение имеют конечно‑разностные методы решения уравнения конвекции на компьютере. |
| 23 | + |
| 24 | +В данной работе исследуется одномерное уравнение конвекции с постоянной скоростью переноса и гладким начальным профилем вида $\phi(x) = cos(0.5\pi x)$, для которого известна точная формула решения в виде сдвига начального профиля вдоль оси координат. |
| 25 | +Это позволяет не только строить численное решение различными конечно‑разностными схемами, но и детально анализировать их устойчивость, дисперсию и численную диффузию путём сравнения с точным решением. |
| 26 | +В процессе выполнения работы были реализованы и исследованы схемы FTCS, Лакса, Лакса–Вендрофа, Рихтмайера, МакКормака, противопотоковые схемы первого и второго порядков, а также неявная схема BTCS для уравнения конвекции, с возможностью выбора числа узлов по пространству и конвекционного числа c. |
| 27 | +Для каждой схемы выполнялась серия численных экспериментов при разных значениях c и на фиксированном интервале времени, строились графики эволюции профиля решения и максимальной ошибки по пространству. |
| 28 | + |
| 29 | + |
| 30 | +**Цели: 🎯** |
| 31 | + |
| 32 | +- Изучить постановку одномерной задачи конвекции с заданным начальным профилем и граничными условиями, получить точное аналитическое решение и использовать его как эталон для оценки численных методов |
| 33 | +- Реализовать набор явных и неявных конечно‑разностных схем для уравнения конвекции: FTCS, Лакса, Лакса–Вендрофа, Рихтмайера (двухшаговый Лакс–Вендроф), МакКормака, противопотоковые схемы 1‑го и 2‑го порядков, BTCS |
| 34 | +- Исследовать влияние конвекционного числа c на устойчивость и точность каждой схемы, проанализировать проявления численной диффузии и дисперсии, а также эффекты практической неустойчивости |
| 35 | +- Сравнить поведение разных методов на одинаковых тестах: оценить скорость роста максимальной ошибки, сохранение формы волны и наличие осцилляций, выделить преимущества и недостатки схем для задач конвекции |
| 36 | + |
| 37 | +## 2. Структура проекта 🛠️ |
| 38 | + |
| 39 | +Вся работа выполнена в виде модульного C++-проекта со следующей структурой: |
| 40 | +``` |
| 41 | +include/ |
| 42 | +├── Base/ # Базовые интерфейсы генераторов/решателей |
| 43 | +├── Labs/ # Заголовки лабораторных заданий |
| 44 | +src/ |
| 45 | +└── Labs/ |
| 46 | + └── LabN/ |
| 47 | + └── TaskK.cpp # Основные реализации по заданиям |
| 48 | +CMakeLists.txt # Конфигурация сборки проекта |
| 49 | +``` |
| 50 | +Реализация поддерживает автоматическое добавление новых заданий, централизованное подключение заголовков и простое масштабирование под разные лабораторные работы. Реализацию всех заголовков заданий можно найти по пути `include/Labs/Special/Lab3/Tasks` |
| 51 | + |
| 52 | +--- |
| 53 | + |
| 54 | +## 3. Ход выполнения работы 🔎 |
| 55 | + |
| 56 | +### Используемые методы 📚 |
0 commit comments