Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
0552 / Курсач / записка1.doc
Скачиваний:
11
Добавлен:
14.02.2023
Размер:
427.52 Кб
Скачать

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]

Соседние файлы в папке Курсач