Метод Эйлера с уточнением
Для повышения точности метода Эйлера применяют следующий прием. Сначала находят приближенное значение решения по методу Эйлера
,
а затем уточняют его по формуле
Этот метод называется методом Эйлера-Коши, и рекуррентные соотношения для его реализации могут быть записаны в виде:
(7.7)
Метод Эйлера-Коши имеет погрешность порядка O(h2). Геометрическая иллюстрация метода Эйлера-Коши дается на рис. 7.2. Очередное приближение метода Эйлера-Коши соответствует точке пересечения диагоналей параллелограмма, построенного на двух звеньях ломаной метода Эйлера.
Метод Эйлера-Коши является одним из частных случаев методов Рунге-Кутта, которые рассмотрены в следующем пункте.
Рис.7.2
Методы Рунге-Кутта
Рассмотрим наиболее популярный метод решения задачи Коши — метод Рунге-Кутта. Этот метод позволяет строить формулы расчета приближенного решения практически любого порядка точности.
Выведем формулы метода Рунге-Кутта второго порядка точности. Для этого решение представим куском ряда Тейлора, отбрасывая члены с порядком выше второго. Тогда приближенное значение искомой функции в точке x1 можно записать в виде:
. (7.8)
Вторую производную можно выразить через производную функции f(x, y), однако в методе Рунге-Кутта вместо производной используют разность
,
соответственно подбирая значения параметров . Тогда (7.8) можно переписать в виде
, (7.9)
где α, β, γ и δ — некоторые параметры. Рассматривая правую часть (7.9) как функцию аргумента h, разложим её по степеням h:
,
и выберем параметры α, β, γ и δ так, чтобы это разложение было близко к (7.8). Отсюда следует, что
α + β = 1, αγ = 0,5, αδ = 0,5 f(x0, y0).
С помощью этих трех уравнений выразим β, γ и δ через параметр α, тогда получим
(7.10)
Теперь, если вместо (x0, y0) в (7.10) подставить (x1, y1), то получим формулу для вычисления y2 — приближенного значения искомой функции в точке x2.
В общем случае метод Рунге-Кутта применяется на произвольном разбиении отрезка [x0, X] на n частей, т.е. с переменным шагом
(7.11)
Параметр α выбирают равным 1 или 0,5. Запишем окончательно расчетные формулы метода Рунге-Кутта второго порядка с переменным шагом для α = 1:
(7.12)
и α = 0,5:
(7.13)
Дадим геометрическую интерпретацию методов Рунге-Кутта (7.12), (7.13).
На рисунке 7.3 а) иллюстрируется формула (7.12). Сначала по методу Эйлера вычисляется приближенное значение в точке xi + hi/2. В этой точке определяется касательная к интегральной кривой, параллельно которой через точку (xi, yi) проводится прямая до точки пересечения с прямой x = xi + 1. Ордината точки пересечения yi + 1 принимается за приближенное значение искомого решения в точке xi + 1.
Рисунок 7.3 б) интерпретирует формулу (7.13). Методом Эйлера вычисляется приближенное значение в точке xi+1. В этой точке тангенс угла наклона касательной к интегральной кривой равен выражению . Через точку (xi, yi) проводится прямая, тангенс угла наклона которой определяется как полусумма угловых коэффициентов касательных, проведенных через точки (xi, yi) и . За приближенное значение искомого решения в точке xi+1 принимается ордината точки пересечения этой прямой с прямой x = xi+1.
Отметим, что метод (7.13) совпадает с методом Эйлера-Коши (7.7).
Рис.7.3.
Теорема 7.1. Если правая часть f(x, y) уравнения (7.1) непрерывна и ограничена вместе со своими производными до второго порядка включительно, то решение, полученное по формулам (7.12), (7.13), равномерно сходится к решению задачи (7.1), (7.2) с погрешностью .
Приведем наиболее употребительные формулы метода Рунге-Кутта, формулы четвертого порядка точности:
(7.14)
Пример 7.2. Решить методом Рунге-Кутта (7.12) задачу Коши из примера 7.1:
Решение в программе Excel. В таблице 7.4 приведены результаты применения метода Рунге-Кутта второго порядка (7.12) с шагом h = 0,1.
Сравнивая таблицы 7.2 и 7.4 можно увидеть, что метод Рунге-Кутта второго порядка (7.12) с шагом h = 0,1 дает лучшие результаты, чем метод Эйлера с шагом 0,01.
Таблица 7.4
A | B | C | D | E | F | |
xi | f(xi,yi) | f(xi+0,5h, yi+0,5 f(xi,yi)) | yi | y(x) | Ошибки | |
0,5 | 0,476488 | |||||
1,1 | 0,455577 | 0,436939 | 0,047649 | 0,047691 | 4,24E-05 | |
1,2 | 0,420143 | 0,405049 | 0,091343 | 0,091414 | 7,14E-05 | |
1,3 | 0,391301 | 0,378861 | 0,131848 | 0,13194 | 9,22E-05 | |
1,4 | 0,367432 | 0,357029 | 0,169734 | 0,169842 | 0,000108 | |
1,5 | 0,347401 | 0,338594 | 0,205437 | 0,205556 | 0,00012 | |
1,6 | 0,330395 | 0,322861 | 0,239296 | 0,239426 | 0,00013 | |
1,7 | 0,315811 | 0,309309 | 0,271582 | 0,27172 | 0,000138 | |
1,8 | 0,303198 | 0,297545 | 0,302513 | 0,302658 | 0,000145 | |
1,9 | 0,292211 | 0,287263 | 0,332268 | 0,332418 | 0,000151 | |
0,360994 | 0,36115 | 0,000156 |
Создадим функцию для вычисления решения задачи Коши (7.1), (7.2) методом Рунге-Кутта четвертого порядка (7.14):
Function Runge_Kutta4(ByVal x0, ByVal y0, ByVal x, ByVal n)
h = (x - x0) / n
For i = 1 To n
k1 = fxy(x0, y0)
k2 = fxy(x0 + h / 2, y0 + h * k1 / 2)
k3 = fxy(x0 + h / 2, y0 + h * k2 / 2)
k4 = fxy(x0 + h, y0 + h * k3)
y1 = y0 + h * (k1 + 2 * k2 + 2 * k3 + k4) / 6
x0 = x0 + h: y0 = y1
Next i
Runge_Kutta4 = y0
End Function
В таблице 7.5 приведены результаты решения задачи Коши методом Рунге-Кутта четвертого порядка (7.14) с параметром n = 10, т.е. на каждом этапе вычисления yi применялся шаг h = 0,01. Поэтому абсолютные ошибки очень малы.
Таблица 7.5
xi | yi | y(x) | Ошибки |
0,000000000000000 | 0,000000000000000 | 0,000000000000000 | |
1,1 | 0,047691197731806 | 0,047691197726655 | 0,000000000005151 |
1,2 | 0,091414144750546 | 0,091414144742135 | 0,000000000008412 |
1,3 | 0,131939841952911 | 0,131939841942306 | 0,000000000010605 |
1,4 | 0,169841513601824 | 0,169841513589657 | 0,000000000012167 |
1,5 | 0,205556457698103 | 0,205556457684762 | 0,000000000013341 |
1,6 | 0,239425622368332 | 0,239425622354065 | 0,000000000014267 |
1,7 | 0,271719843610883 | 0,271719843595851 | 0,000000000015032 |
1,8 | 0,302657774396418 | 0,302657774380728 | 0,000000000015690 |
1,9 | 0,332418460630980 | 0,332418460614704 | 0,000000000016276 |
0,361150365759415 | 0,361150365742600 | 0,000000000016814 |
Создадим в программе Mathcad функции для решения задачи Коши методом Рунге-Кутта и вычислим решение в точке x = 2 с шагом h = 0,01 (n = 100):
Сравните этот результат со значением, полученным в Excel.
Дата добавления: 2021-09-07; просмотров: 321;