Основные численные методы решения дифференциальных уравнений
Семестр
Целью данной главы учебного пособия является рассмотрение основных численных методов интегрирования дифференциальных уравнений [1,2,3].
Численные методы решения дифференциальных уравнений используются в тех случаях, когда не удается найти их решение в аналитическом виде. Прежде всего, это относится к линейным дифференциальным уравнениям с переменными коэффициентами и нелинейным дифференциальным уравнениям, соответственно описывающим динамику линейных нестационарных и нелинейных систем управления.
С помощью данных методов, прежде всего, решаются задачи исследования систем.
В данной части пособия ограничимся рассмотрением методов решения только для задачи Коши.
Рассмотрим дифференциальное уравнение
. (1.1)
Предположим, что функция дифференцируема в некоторой окрестности точки . Задача Коши для дифференциального уравнения (1.1) формулируется следующим образом: найти решение уравнения (1.1), удовлетворяющее условию .
|
|
Предположим, что известно решение в точке и требуется найти , где – шаг интегрирования. Согласно формуле Ньютона – Лейбница, очевидным является следующее равенство
.
Запишем его следующим образом
.
Учитывая уравнение (1.1), последнее равенство можно записать в виде
. (1.2)
Интеграл в правой части выражения (1.2) приближенно можно вычислить, используя формулу прямоугольников:
.
Здесь . Отбрасывая члены порядка и полагая , , получаем известную формулу Эйлера
, . (1.3)
Аналогичный результат можно получить и другим способом. Для этого разложим функцию в ряд Тейлора в окрестности точки , в результате получим
(1.4)
или
.
В последнем выражении ограничимся двумя первыми слагаемыми в правой части. В результате получаем
, .
Полагаем, что решение в точке известно. Тогда решение в точке можно найти, используя последнюю формулу и учитывая, что :
(1.)
или
, .
Начинать вычислительный процесс необходимо с точки, определяющей начальные условия, то есть .
Вычислительный процесс, построенный по формуле (1.3), имеет локальную погрешность, пропорциональную . Это означает, что на каждом шаге интегрирования имеет место погрешность порядка . Соответственно, при увеличении времени интегрирования общая погрешность решения дифференциального уравнения возрастает.
Повысить точность получаемых результатов можно, если учитывать большее количество членов разложения функции в ряд Тейлора. Однако, для этого необходимо последовательно дифференцировать правую часть дифференциального уравнения (1.1).
Рассмотрим это на конкретном примере.
|
|
Учтем первые четыре члена в ряде Тейлора, в результате получим
.
Как и ранее, полагаем, что решение в точке найдено. Выбирая достаточно малый шаг , находим решение в следующей точке
.
Для реализации этой формулы необходимо знать производные искомого решения , , . Первая производная может быть найдена из дифференциального уравнения (1.1). Это есть его правая часть, . Вторую и третью производные решения – , – можно найти, дифференцируя правую часть уравнения (1.1), рассматривая ее, как сложную функцию. Соответственно имеем
,
, (1.5)
Как видим, такой путь повышения локальной точности решения дифференциального уравнения (1.1) является трудоемким.
Точность вычислений можно повысить при заданном шаге интегрирования и другими способами. В формуле (1.2) интеграл вычисляется по формуле прямоугольников. Вычислим этот интеграл, используя формулу трапеций. В результате будем иметь
.
По формуле Тейлора, справедливо равенство
.
Отбрасывая в последнем выражении члены порядка , и полагая
(1.6)
Здесь .
Погрешность, которая обеспечивается этими формулами, имеет порядок . Формулы (1.6) называются формулами Эйлера – Коши.
1.2. Методы Рунге – Кутта
Полагаем, что функция имеет непрерывные частные производные до -го порядка включительно, тогда решение задачи Коши для уравнения (1.1) будет обладать непрерывными производными до -го порядка включительно. Если значение известно в точке , то справедливо равенство
(1.7)
Как уже отмечалось, значения входящих в данную формулу производных вычисляются последовательным дифференцированием уравнения (1.1), что является достаточно трудоемким процессом.
Для сокращения вычислительной работы Рунге предложил искать значение в виде
, (1.8)
где
,
,
,
…
,
; ; – некоторые постоянные параметры.
Формула Эйлера (1.3) представляет собой частный случай формулы (1.7) при , а формулы (1.6) – при .
Рассмотрим вопрос о выборе параметров , , . Для простоты ограничимся случаем . Введем обозначения
. (1.9)
– ошибка, которая имеет место на шаге интегрирования для получения , при известном .
Из выражения (1.7) следует, что
. (1.10)
Учитывая соотношения (1.5), из равенства (1.9) имеем
,
,
Приведенные выше условия (1.10) будут выполняться, если справедлива следующая система равенств
поскольку , , , , , .
Это – система из шести уравнений с восемью неизвестными, имеющая бесконечное множество решений. Наиболее употребительное решение системы (1.16)
, , ,
, ,
, , .
Эти решения порождают следующие расчетные формулы
,
, (1.11)
.
Соответственно,
. (1.12)
Вычислительная схема, реализуемая по формулам (1.11), (1.12) называется методом Рунге-Кутта 3-го порядка.
При получаем наиболее распространенную вычислительную схему метода Рунге-Кутта
(1.13)
где
Еще раз отметим, что на каждом шаге интегрирования по методам Рунге-Кутта, согласно формуле (1.8) имеем локальную точность вычислений порядка .
Рассмотренные методы интегрирования дифференциального уравнения являются одношаговыми. То есть для построения решения на следующем шаге необходимо знать информацию о значении решения только на предыдущем шаге.
Более быстродействующими являются многошаговые методы. Они используют информацию о поведении решения в нескольких предыдущих точках: .