
- •1. Математическое моделирование технических объектов
- •1.2 Численные методы решения дифференциальных уравнений
- •1.2.1 Метод Эйлера
- •1.2.1 Метод Рунге-Кутта
- •1.2.2 Метод Булирша–Штера
- •1.3 MathCad. Функции решения дифференциальных уравнений и аппроксимация данных.
- •1.3.1 Общая характеристика MathCad.
- •1.3.2 Функции решения дифференциальных уравнений
- •Рекомендации по использованию:
- •1.3.3 Функции для проведения аппроксимации.
- •1.3.3.2 Одномерная сплайн-интерполяция и сплайн-аппроксимация.
- •1.3.3.3 Двумерная линейная сплайн-интерполяция, аппроксимация.
- •2 Алгоритмический анализ задачи
- •2.1 Постановка задачи
- •2.2 Анализ исходных данных и результатов. Описание математической модели
- •3 Описание реализации в пакете MathCad.
- •3.1 Описание реализации базовой модели.
- •3.2 Исследование влияния варьируемого параметра.
1.2 Численные методы решения дифференциальных уравнений
1.2.1 Метод Эйлера
Метод Эйлера – наиболее простой и легко реализуемый, но его точность сильно зависит от величины шага интегрирования (см. описание метода). Применение метода Эйлера для решения одиночного дифференциального уравнения показано в примере 1, где в качестве первообразной выбрана синусоида. График в примере демонстрирует высокую погрешность при заданном числе шагов интегрирования. Изменяя этот параметр и анализируя результат, можно наглядно исследовать влияние шага на точность решения.
Для решения системы дифференциальных уравнений предложен программный блок, реализующий метод Эйлера в общем виде. Им можно воспользоваться при решении других подобных задач. Выражения для производных вычисляются в виде вектора-функции.
Решим задачу Коши для дифференциального уравнения первого порядка
методом
Эйлера.
Пусть
правая часть уравнения равна
Зададим
границы изменения x:
Зададим
число точек и величину шага:
Зададим
начальные условия:
Вычислим
x и y по формулам Эйлера
[3]
1.2.1 Метод Рунге-Кутта
Метод Рунге-Кутта
- модифицированный и исправленный метод
Эйлера, который представляет собой
схемы второго порядка точности. Существуют
стандартные схемы третьего порядка, не
получившие широкого распространения.
Наиболее часто используется и реализована
в различных математических пакетах
стандартная схема четвёртого порядка.
Иногда при выполнении расчётов с
повышенной точностью применяются схемы
пятого и шестого порядков. Построение
схем более высокого порядка сопряжено
с большими вычислительными трудностями.
Методы седьмого порядка должны иметь
по меньшей мере девять стадий, в схему
восьмого
порядка
входит 11 стадий. Хотя схемы девятого
порядка не имеют большой практической
значимости, неизвестно, сколько стадий
необходимо для достижения этого порядка
точности. Аналогичная задача существует
для схем десятого и более высоких
порядков.[3]
rkfixed(y, x1, x2, p, D) – возвращает матрицу первый столбец которой содержит точки, в которых получено решение, а остальные столбцы – решения, первые n-1 производные. Функция возвращает матрицу, состоящую из 1+n строк. Аргументы функции: y – вектор начальных условий (k элементов); x1 и x2 – границы интервала, на котором ищется решение ОДУ; p – число точек внутри интервала (x1, x2), в которых ищется решение; D – вектор, состоящий из k элементов, который содержит первые производные искомой функции. [4]
Rkadapt(y, x1, x2, p, D) – назначение параметров то же, что и для функции rkfixed. Существует несколько модифицированная функцияrkadapt(y,x1,x2, acc,p,D,k,s) – где добавлены параметры k – максимальное число промежуточных точек решения; s – минимально допустимый интервал между точками; acc – погрешность решения (рекомендуется порядка 0.001, т.е. очень малая).[4]
1.2.2 Метод Булирша–Штера
Метод Булирша-Штера - это метод решения системы обыкновенных дифференциальных уравнений первого порядка с гладкими правыми частями. Гладкость правых частей является необходимой для работы метода. Если правые части вашей системы не являются гладкими или содержат разрывы, то лучше использовать метод Рунге-Кутта. В случае же гладкой системы метод Булирша-Штера позволяет добиться существенно большей точности, чем метод Рунге-Кутта.
Принцип работы метода:
Основной идеей
метода является вычисление состояния
системы в точке x+h, как результата
двух шагов длины h/2, четырех шагов длины
h/4, восьми шагов длины h/8 и так далее
с последующей экстраполяцией
результатов. Метод строит рациональную
интерполирующую функцию, которая в
точке h/2 проходит через состояние
системы после двух таких шагов, в точке
h/4 проходит через состояние системы
после четырех таких шагов, и т.д., а
затем вычисляет значение этой функции
в точке h = 0, проводя экстраполяцию.
Гладкость правых частей приводит к
тому, что вычисленное при помощи
экстраполяции состояние системы
оказывается
очень близко к действительному, а
использование рациональной экстраполяции
вместо полиномиальной позволяет ещё
больше повысить точность. Таким образом
проводится один шаг метода, после чего
принимается решение - следует ли изменять
шаг, а если да - то в какую сторону. При
этом используется оценка погрешности,
которую мы получаем в качестве
дополнительного результата при
рациональной экстраполяции. Следует
отметить, что алгоритм решает автономную
систему, т.е. если уравнения системы
содержат время, то необходимо ввести
время в качестве переменной, производная
от которой тождественно равна единице.[3]