Schisla_3
.pdf11
и т.д. Находить производные можно с помощью какого либо программного пакета, позволяющего выполнять аналитические преобразования (например, MAPLE).
После вычисления производных при x = x0 приближенное решение можно записать в виде
u(x) ¼ Xn¡1 u(kk)[!x0)(x ¡ x0)k:
k=0
В выражении для погрешности этого решения
R = |
u(n)(x0) |
(x ¡x0)n + |
u(n+1)(»1) |
(x ¡x0)n+1 = A(x ¡x0)n |
|
n! |
(n + 1)! |
|
(2.5)
+ O((x ¡x0)n+1);
значение коэффициента A у главного члена погрешности вычисляется также как и коэффициенты разложения (2.5).
Если известен радиус сходимости r ряда Тейлора и jx ¡ x0j 6 r, то при некотором значении n отрезок ряда (2.5) приближает точное решение с заданной точностью ".
Если же jx ¡ x0j > r, то [x0; x] можно разбить на отрезки [xi; xi+1], i = 0; 1; : : :, длина которых jxi+1 ¡ xij < r. На каждом отрезке [xi; xi+1] с заданной точностью вычисляется
n¡1 |
yi(k)(xi) |
k |
||
Xk |
|
|
|
(x ¡ xi) ; |
|
k! |
|||
ui(x) ¼ yi(x) = |
|
|||
=0 |
|
|
|
|
при условии ui(xi) ¼ yi¡1(xi), где yi¡1(x) рассчитанное на отрезке [xi¡1; xi] решение. На каждом отрезке ошибка решения имеет порядок O(hni ), где hi = xi+1 ¡ xi. За счет разбиения к последнему отрезку ошибка накапливается. Она будет иметь порядок O(hn¡1) при hi = h = const.
При практическом счете радиус сходимости можно значением главного члена погрешности r ¼ ju(nn)(!x0) jx¡x0jn. Если условие ju(nn)(!x0) jx¡x0jn 6
" не выполняется для выбранного числа n, то нужно уменьшить шаг h или увеличить n. Очевидно, значение n не должно быть очень большим (это
12
означает высокие требования к гладкости решения, кроме того, затруднительно в практических задачах использовать разложение с большим числом слагаемых), а шаг h очень малым (так получается, если нет сходимости, то есть предположение о порядке гладкости решения было неверным). Использовать этот метод для расчета решения задачи Коши разумно тогда, когда имеется доступ к какому либо пакету, выполняющему аналитические выкладки (например, если доступен пакет Maple).
Численные методы
2.4Метод Эйлера
Пусть требуется найти значения решения задачи Коши (2.1)
u0 = f(x; u); x |
2 |
[a; b] |
|
|
u(a) = u0
в точках xi 2 [a; b], i = 0; 1; : : : ; n (xi = xi¡1 + hi, x0 = a, xn = b). На плоскости (x; u) точки (xi; u(xi)) находятся на интегральной кривой. Из постановки задачи известны лишь одна точка (x0; u0) этой кривой и угол наклона ® касательной в этой точке к оси абсцисс (tg ® = f(x0; u0)). Уравнение касательной к интегральной кривой в точке (x0; u0) имеет вид
y(x) = y0 + (x ¡ x0)f(x0; y0); y0 = u0:
13
При достаточно малом шаге h1 можно считать
u(x1) ¼ y(x1) = y0 + (x1 ¡ x0)f(x0; y0) = y1:
Для расчета y(x2) ¼ u(x2) строится касательная к интегральной кривой, проходящая через точку (x1; y1),
y(x) = y1 + (x ¡ x1)f(x1; y1);
и вычисляется y(x2) = y1 + (x2 ¡ x1)f(x1; y1). Продолжая этот процесс, получим приближение интегральной кривой u = u(x) ломанной. Приближенные значения решения вычисляются по формуле
u(xi) ¼ y(xi) = yi¡1 + hi¡1f(xi¡1; yi¡1):
Если hi = h = const:, т.е. сетка равномерная, то
u(xi) ¼ y(xi) = yi¡1 + hfi¡1; fi¡1 = f(xi¡1; yi¡1):
Основной недостаток метода Эйлера - быстрое накопление ошибки, т.е. требуется очень мелкий шаг, чтобы получить удовлетворительную точность. В методе Эйлера используется направление касательной в одной точке, расположенной вблизи интегральной кривой. Если направление сдвига вдоль интегральной кривой от точки x выбирать, используя направления касательных в ближайших к ней точках, то можно построить методы Рунге - Кутты.
2.5Методы Рунге - Кутты
Вначале 20 века Рунге, а затем Хойн и Кутта предложили строить формулы для численного расчета решения задачи Коши (2.1), не содержащие производных от функции f(x; u).
Пусть в некоторой точке x известно точное решение u(x) задачи (2.1).
Приближенное решение в точке x + h разыскивается в виде
q |
|
Xi |
(2.6) |
u(x + h) ¼ y(x + h) = y(x) + pi ki(h) |
|
=1 |
|
14
где y(x) = u(x),
k1 = h f(x; y(x))
k2 = h f(x + ®2h; y(x) + ¯21k1(h))
: : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : : :
kq = h f(x + ®qh; y(x) + ¯q1k1(h) + ¢ ¢ ¢ + ¯q;q¡1kq¡1(h))
Значения констант pi (i = 1; 2; : : : ; q), ®i (i = 2; 3; : : : ; q) и ¯ij (1 6 j < i 6 q) выбираются так, чтобы погрешность приближенного решения
'(h) = u(x + h) ¡ y(x + h)
стремилась к нулю при h ! 0. Если выбранным константам соответствует невязка порядка '(h) = O(hs+1), то построенный метод называется явным q–стадийным методом Рунге - Кутты s – порядка.
Если функции u(x) и f(x; u(x)) непрерывны и имеют нужное число непрерывных производных, то невязка '(h) также имеет нужную глад-
кость и ее можно разложить в ряд Тейлора |
|
|
|
|
|
|||
'(h) = '(0) + '0(0) h + |
'00(0) |
h2 + ¢ ¢ ¢ + |
'(s)(0) |
hs + |
'(s+1)(») |
hs+1: |
||
2! |
|
s! |
|
(s + 1)! |
Это разложение позволяет построить алгоритм для вычисления коэффициентов расчетной формулы метода Рунге-Кутты. Действительно, если pi; ®i и ¯ij выбраны так, что '(0) = '0(0) = ¢ ¢ ¢ = '(s)(0) = 0, то '(h) = O(hs+1).
2.5.1Вывод расчетных формул метода Рунге-Кутты
Как правило, наибольшее число операций (наибольшее время) при реализации метода Рунге - Кутты тратится на вычисление правых частей f(x; u(x)) , поэтому желательно построить расчетные формулы (2.6) с больш´им значением s и как можно м´еньшим q. Выясним основные свойства формул Рунге - Кутты, построив их для q = 1 и q = 2.
Случай q = 1
15
Расчетная формула в этом случае зависит лишь от одного параметра и имеет вид
u(x + h) ¼ y(x + h) = u(x) + p1k1
k1(h) = hf(x; u(x));
Построим выражение для невязки и вычислим две ее производные
'(h) = u(x + h) ¡ y(x + h) = u(x + h) ¡ u(x) ¡ p1hf(x; u(x))
'0(h) = u0(x + h) ¡ p1f(x; u(x)) = f(x + h; u(x + h)) ¡ p1f(x; u(x))
'00(h) = u00(x + h) = (fx + fu f)(x + h; u(x + h))
Отсюда следует, что если p1 = 1, то '(0) = 0 и '0(0) = 0 для любой функции f(x; u). Вторая же производная '00(0) =6 0 для произвольной f(x; u), например, для f(x; u) = u. Таким образом, при q=1 существует только один метод первого порядка– метод Эйлера
u(x + h) ¼ y(x + h) = u(x) + h f(x; u(x));
оценка погрешности которого
u(x+h)¡y(x+h) = '(h) = |
'00(») 2 |
'00(0) |
2 |
|
'000(»1) |
3 |
2 |
3 |
|
|||||||
|
h = |
|
h |
+ |
|
h = C h |
+O(h |
); |
||||||||
2! |
2! |
3! |
||||||||||||||
где C = |
'00(0) |
= |
u00(x) |
. Константа |
в оценке погрешности зависит от |
|||||||||||
2! |
|
2! |
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
значений правой части f(x; u) и ее первых производных в точке x. Если
M |
|
= max u00(x) |
|
C |
|
M2 |
|
|
2 |
, то j |
j 6 2! . |
||||||
|
x [a;b] |
|
2
Случай q = 2
Расчетная формула в этом случае имеет вид
u(x + h) ¼ y(x + h) = u(x) + p1k1 + p2k2;
k1(h) = hf(x; u(x));
k2(h) = hf(x + ®2h; u(x) + ¯21k1(h)):
Для невязки получается выражение
'(h) = u(x + h) ¡ y(x + h) = u(x + h) ¡ u(x) ¡ p1hf(x; u(x)) ¡ p2hf(x;e ye);
16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
где x(h) = x + ®2h, y(h) = u + ¯21hf(x; u(x)). |
|
|
|
|
|
|
|
||||||||||||
e |
|
|
|
|
e |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вычислим три ее производные |
|
|
|
|
|
|
|
|
|
|
|
||||||||
'0(h) = u0(x + h) ¡ p1f(x; u) ¡ p2f(x; y) ¡ p2h¡®2fx(x; y)+ |
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
u x |
|
h |
p |
f |
x; u |
|
|
|
|
|
+¯21fu(x; y)f(x; u)¢ = f((x + h); e( e+ )) ¡ |
1 |
|
( e e)¡ |
|
|
|
|
||||||||||||
|
p2f(x;ey)e |
p2h ®2fx(x; y) + ¯21fu(x; y)f(x; u) ; |
|
|
|
|
|||||||||||||
¡ |
|
|
|
|
¡ |
¡ |
|
|
|
|
|
|
¢ |
|
|
|
|
|
|
'00(h) = e(fxe+ fuf)(x + h;eu(ex + h)) |
|
2ep2e®2fx(x; y) + ¯21fu(x; y)f(x; u) |
|||||||||||||||||
¡ |
|
¡ |
2 |
|
|
|
2 |
|
¡ |
|
2 |
¡ |
2 |
|
2 |
|
¢2 |
¢¡ |
|
hp2 |
2 |
|
|
|
|
|
|
|
e e |
e e |
|
||||||||
|
(® |
fxx(x; y) + 2®2¯21fxu(x; y)f(x; u)) + ¯21fuu(x; y)f (x; u)) ; |
|||||||||||||||||
'000(h) = (f |
xx |
|
e e |
|
e e |
|
u |
|
|
|
e e |
¡ |
|
2 |
|
||||
|
|
+ 2fxuf + fuuf |
|
+ fufx + f |
|
f)(x + h; u(x + h)) |
|
3p2 |
(® |
fxx(x; y)+ |
|||||||||
+¯212 fuu(x; y) f2(x; u)) + 2®2¯21fux(x; y)f(x; u)) + O(h): |
|
|
|
e e |
|||||||||||||||
Отсюда |
|
e e |
|
|
|
|
e e |
|
|
|
|
|
|
|
|||||
|
|
следует, что равенства |
|
|
|
|
|
|
|
|
|
|
|
'(0) = 0;
'0(0) = (1 ¡ p1 ¡ p2)f(x; u(x)) = 0
'00(0) = (1 ¡ 2p2®2)fx(x; u(x)) + (1 ¡ 2p2¯21)fu(x; u(x))f(x; u(x)) = 0
выполняются для произвольной функции f(x; u), если
1 |
¡ p1 ¡ p2 = 0 |
|
|
1 |
¡ 2p2 |
®2 = 0 |
(2.7) |
|
|||
1 |
¡ 2p2 |
¯21 = 0: |
|
Третья же производная
'000(0) = (1 ¡ 3p2®22)fxx(x; u(x)) + 2(1 ¡ 3p2®2¯21)fxu(x; u(x))f(x; u(x))+ +(1 ¡ 3p2¯212 )fuu(x; u(x))f2(x; u(x)) + (fufx + fu2f)(x; u(x))
не обращается в нуль для любой f(x; u), например, для f(x; u) = u. Итак, при q = 2 можно построить метод порядка s = 2, если вычислить
коэффициенты p1, p2, ®2 и ¯21, удовлетворяющие системе уравнений (2.7). Эта система трех уравнений имеет четыре неизвестных, т.е. существует однопараметрическое семейство методов Рунге - Кутты второго порядка,
17
построенных для q = 2. Например, положив p2 = 1=2, получим , p1 = 1=2, ®2 = 1 и ¯21 = 1 . При таком выборе коэффициентов расчетная формула u(x + h) ¼ y(x + h) = y(x) + h2(f(x; y(x)) + f(x + h; y(x) + hf(x; y(x)))
называются методом Хойна (Хъюна).
Методы для q = 1; 2; 3; 4 имеют максимальный порядок s = q, если же q = 5; 6, то соответственно s=4; 5.
Если многократно ведется расчет задач, имеющих одинаковую гладкость, то можно, используя произвол при построении метода Рунге - Кутты, обратить в нуль быстро растущие слагаемые в главном члене погрешности. Заметим, что знак шага h может быть любым, т.е. решать задачу Коши можно как, начиная с точки a, с положительным шагом, так и, начиная с точки b, с отрицательным. При реализации на ЭВМ метода Рунге - Кутты для выбора величины шага и контроля погрешности приближенного решения используется правило Рунге.
2.5.2Правило Рунге для практической оценки локальной погрешности
Если известно точное решения u(x), то оценка локальной погрешности приближенного решения y(x + h), рассчитанного методом Рунге - Кутта s ¡ 1 – ого порядка, имеет вид
'(h) = u(x + h) ¡ y(x + h) = |
'(s)(0) |
s |
|
'(s+1)(0) |
s+1 |
|
|||
|
h |
|
+ |
|
|
h |
|
+ : : : ; |
|
s! |
|
(s + 1)! |
|
где '(s)(0) зависит от правой части f(x; u(x)) дифференциального уравнения (2.1) и её производных порядка не выше s ¡ 1. Если шаг h мал, то на отрезке [x; x + h] функция f(x; u(x)) и её производные могут так медленно меняться, что можно считать
'(h) = Chs + O(hs+1);
где C = const на этом отрезке. При таком предположении формула для практической оценки погрешности получается следующим образом. Сна-
18
чала вычисляется с шагом h приближенное решение
Xs
y1(x + h) = u(x) + piki(h);
i=1
и точное решение в точке x + h записывается в виде
u(x + h) = y1(x + h) + Chs + O(hs+1): |
(2.8) |
Затем вычисляется приближенное решение в точке x + h=2
|
s |
y2(x + h=2) = u(x) + |
piki(h=2); |
|
=1 |
|
Xi |
для точного решения в точке x + h=2 получается выражение |
u(x + h=2) = y2(x + h=2) + C(h=2)s + O(hs+1):
Теперь используется u(x + h=2) и выполняется еще один шаг h=2, т.е. вычисляется
s |
|
s |
Xi |
(x+h=2)+C(h=2)s + |
X |
y3(x+h) = u(x+h=2)+ piki(h=2) = y2 |
piki(h=2); |
|
=1 |
|
i=1 |
Для точного решения в точке x + h получается еще одно выражение |
||
u(x + h) = y3(x + h) + 2C(h=2)s + O(hs+1): |
(2.9) |
Из сравнения выражений (2.8) и (2.9) для точного решения в точке x + h
получается оценка остаточного члена формулы (2.9) |
|
|
|||||||||||||
2 ¯C |
µ2 |
¶ |
¯ |
= |
¯ 23s |
¡ |
|
11 ¯ |
+ O(hs+1): |
|
|
||||
¯ |
h |
s |
¯ |
|
¯ |
y |
|
y |
|
¯ |
|
|
|
|
|
|
|
|
|
¡ |
|
|
|
|
|
|
|
||||
¯ |
|
|
¯ |
|
¯ |
|
|
|
|
¯ |
|
O(h |
s+1 |
), то можно счи- |
|
Если пренебречь бесконечно¯ ¯ |
малыми¯ |
|
порядка¯ |
|
тать, что приближенное решение y3(x + h) вычислено с точностью ", если
¯ |
¡ |
|
¯ |
|
|
|
¯ |
y |
y |
¯ |
|
|
|
¯ |
|
3 ¡ |
1 |
¯ |
6 ": |
(2.10) |
|
2s |
1 |
||||
¯ |
|
|
|
¯ |
|
|
Такая практическая оценка погрешности называется правилом Рунге.
19
Правило Рунге позволяет позволяет организовать алгоритм расчета приближенного решения с автоматическим выбором шага, обеспечивающим заданную локальную точность. Если неравенство (2.10) справедливо, то шаг выбран верно, и можно продолжать расчет в следующей точке, принимая рассчитанное решение y3(x + h) за точное. Если же
¯ |
3 |
¡ |
1 |
¯ |
> "; |
2s |
|||||
¯ |
y |
¡ |
y |
¯ |
|
¯ |
|
|
|
¯ |
|
¯ |
|
|
|
¯ |
|
то выполняется новый расчет по схеме:
1.шаг делится пополам, т.е. h := h=2,
2.значению y1 присваивается y2,
3.вычисляется y3(x + h) и проверяется условие (2.10).
Такой расчет повторяется до тех пор, пока условие (2.10) не будет выполнено. Число таких повторений требуется ограничивать, т.к. метод Рунге - Кутты может расходиться (предположения о гладкости или другие оказались неверными). Возможна ситуация, когда на части отрезка шаг должен быть малым, а затем можно считать со значительно большим шагом. Если
окажется |
¯ |
23s |
¡ |
11 |
¯ |
|
|
|
|
|
< "1; |
||||||
|
|
¯ |
y |
¡ |
y |
¯ |
|
|
|
|
|
|
|
|
|
||
где "1 |
¿ |
¯ |
|
|
|
¯ |
|
h можно удвоить. |
|
|
|
|
|||||
|
" (например, "1 = 0:05¯ "), то шаг¯ |
p
В начале расчета шаг h0 разумно выбрать h0 = s ", тогда ju3(x + h) ¡ y3(x + hj = O(hs) = O("). Заметим, что проверка условия (2.10) требует 3q ¡ 1 раз вычислять f(x; u) – правую часть задачи (2.1).
Произволом при выборе констант pi i = 1; 2; : : : ; q, ®i i = 2; 3; : : : ; q и ¯ij 1 6 j < i 6 q можно воспользоваться для построения вложенных формул Рунге - Кутты
2.5.3Вложенные формулы Рунге - Кутты
С 1957 года появились формулы Рунге - Кутты, точность которых оценивалась с помощью приближенных решений y(x + h) и ye(x + h), рас-
20
считанных методами разных порядков точности (они были предложены Инглэндом, Фельбергом, Синтани). Такие методы называются „фамилия автора p(s)\, где p означает порядок метода вычисления y(x + h), а s порядок ye(x + h). Построенные таким образом вложенные методы позволяют уменьшить число операций для практической оценки локальной погрешности при автоматическом выборе шага. Например, в методе Фельберга 4(5), с помощью метода четвертого порядка решение разыскивается в виде
X6
u(x + h) ¼ y(x + h) = y(x) + piki(h);
i=1
где два из коэффициентов pi равны нулю, и параметры выбраны так, чтобы погрешность
'(h) = u(x+h)¡y(x+h) = Ch5+O(h6) ) u(x+h) = y(x+h)+Ch5+O(h6):
В методе шестого порядка
|
6 |
u(x + h) ¼ y(x + h) = y(x) + |
Xi |
piki(h); |
|
e |
e |
|
=1 |
выбираются все произвольные параметры в выражении y(x+h) так, чтобы
e 6 7 e 6 7
'(h) = u(x+h)¡ye(x+h) = Ch +O(h ) ) u(x+h) = ye(x+h)+Ch +O(h ):
Важно, что ki(h) в обоих методах одинаковые. Погрешность для ye(x + h) можно записать в виде
u(x + h) ¡ ye(x + h) = y(x + h) + Ch5 + O(h6) ¡ ye(x + h) =
= P6 (pi ¡ pei)ki(h) + Ch5 + O(h6):
i=1
Отсюда с точностью до O(h5) получается вычисляемое выражение для практической оценки погрешности
|
6 |
|
Xi |
u(x + h) ¡ y(x + h) ¼ (pi(x) ¡ pi)ki(h) |
|
e |
e |
|
=1 |
При реализации алгоритма решения с автоматическим выбором шага такая оценка погрешности экономичнее правила Рунге.