ищеною точністю, що дає можливість проводити рахунок з відносно великим кроком.
Приклад: Вирішити задачу Коші методом Рунге-Кутта для диференціального рівняння
y? =x2 + y, y (0)=1 на відрізку [0,0.3] з кроком 0.1.
Рішення: За формулами (6.12) обчислимо значення k0, k1, k2, k3
k0=hf (x0, y0)=0,1 · (02 + 1)=0,1=hf (x0 + h/2, y0 + k0/2)=0,1 · ((0 + 0,1/2) 2 + 1 + 0,1/2)=0,10525=hf (x0 + h/2, y0 + k1/2)=0,1 · ((0 + 0, 1/2) 2 + 1 + 0,10525/2)=0,105513=hf (x0 + h, y0 + k2)=0,1 · ((0 + 0,1) 2 + 1 + 0,105513)= 0,111551
Використовуючи формулу (6.11), знаходимо значення y1 в точці x1=0.1
y1=y0 + (k0 + 2k1 + 2k2 + k3)/6=
=1+ (0,1 + 2 · 0,10525 + 2 · 0,105513 + 0,111551)/6=1,105513
Аналогічно обчислюються наступні значення функції у вузлових точках
k0=hf (x1, y1)=0,1 · (0,12 + 1,105513)=0,111551=hf (x1 + h/2, y1 + k0/2)= 0,1 · ((0,1 + 0,1/2) 2 + 1,105513 + 0,111551/2)=0,118379=hf (x1 + h/2, y1 + k1/2)=0,1 · ((0,1 + 0,1/2) 2 + 1,105513 + 0,118379/ 2)=0,11872=hf (x1 + h, y1k2)=0,1 · ((0,1 + 0,1) 2 + 1,105513 + 0,11872)=0,126423=y1 + (k0 + 2k1 + 2k2 + k3)/6=
=1,105513+ (0,111551 + 2 · 0,118379 + 2 · 0,11872 + 0,126423)/6=1,224208=hf (x2, y2)=0, 1 · (0,22 + 1,224208)=0,126421=hf (x2 + h/2, y2 + k0/2)=0,1 · ((0,2 + 0,1/2) 2 + 1 , 224208 + 0,126421/2)=0,134992=hf (x2 + h/2, y2 + k1/2)=0,1 · ((0,2 + 0,1/2) 2 + 1,224208 + 0,134992/2)=0,13542=hf (x2 + h, y2 + k2)=0,1 · ((0,2 + 0,1) 2 + 1,224208 + 0,13542)=0, 144963=y2 + (k0 + 2k1 + 2k2 + k3)/6=
=1,224208+ (0,126421 + 2 · 0,134992 + 2 · 0,13542 + 0,144963)/6=1,359576
сіткової функції записуємо у вигляді таблиці
x 0 0.1 0.2 0.3
y 1 1,105513 1,224208 1,359576
Програма розв'язання задачі Коші методом Рунге-Кутта дана на рис. 6.5.
CLSLR - 6-3, m=13, n=5FNY (X, Y)=X ^ 2 + Y0, 0.3, 1, 0.1A, B, Y0, HA; Y0=A: Y=Y0
K0=H * FNY (X, Y)=H * FNY (X + H/2, Y + K0/2)=H * FNY (X + H/2, Y + K1/ 2)=H * FNY (X + H, Y + K2)=Y + (K0 + 2 * K1 + 2 * K2 + K3)/6=X + HX; YX lt; B THEN 1
Рис. 6.5. Програма вирішення задачі Коші методом Рунге-Кутта.
. 4 Різницеві методи вирішення крайової задачі для звичайного диференціального рівняння
Лінійна крайова задача має вигляд:
y ?? + P (x) y? + Q (x) y=f (x) (6.12)
a 1y (a) + a 2 y? (a)=a 3,
(6.13)
b 1 y (b) + b 2 y? (b)=b 3,
при | a 1 | + | a 2 |? 0 | b 1 | + | b 2 |? 0 x? [A, b].
Рішення завдання (6. 12) - (6. 13) проводиться в наступній послідовності:
Визначення сітки:
Відрізок [a, b] ділиться на кінцеве число частин:
y1 y2... yk..... yn - 1 yn yn + 1
| | | | | |=a x2... xk..... xn - 1 xn xn + 1=b x
____
xk=x1 + (k - 1) h; k=1, n + 1; h=(b - a)/n.
x1, xn + 1 - крайові точки, x2, x3,... , Xn - 1, xn - внутрішні точки.
Визначення сіткової функції yi=y (xi):
x1x2x3 ... xn + 1у1у2у3 ... у n + 1
Апроксимація рівняння:
Aппроксімація похідних y? (x) і y ?? (x) центральними конечноразностного аналогами має вигляд:
? (xk)=(y (xk + h) - y (xk - h))/2h + O (h2), (6. 14) ?? (xk)=(y (xk + h) - 2y (xk) + y (xk - h))/h2 + O (h2). (6. 15)
Підстановка отриманих співвідношень (6. 14)? (6. 15) в рівняння (6. 12) дає
(yk + 1-2yk + yk - 1)/h2 + pk (yk + 1-yk - 1)/2h + qkyk=fk, (6. 16)
де yk=y (xk), pk=p (xk), qk=q (xk), fk=f (xk).
yk + 1-2yk + yk - 1 + yk + 1-yk - 1 + qkh2yk=fkh2,
(1) yk - 1+ (qkh2-2) yk + (1+) yk + 1=fkh2.
Після цих перетворень рівняння (6.16) можна представити у вигляді:
+ ckyk + bkyk + 1=dk, k=2, n (6.17)
де ak=1-, bk=1+, ck=gkh2-2, dk=fkh2.
Для крайових умов застосовуємо наступні різницеві формули:
y? (xk)=(y (xk + 1) - y (xk))/h,
або
? (а)=(y? (x1)=(y (x2) - y (x1))/h=(y2 - y1)/h,
y? (b)=y? (x n + 1)=(y (x ...