Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Schisla_3

.pdf
Скачиваний:
10
Добавлен:
13.02.2015
Размер:
699.4 Кб
Скачать

11

и т.д. Находить производные можно с помощью какого либо программного пакета, позволяющего выполнять аналитические преобразования (например, MAPLE).

После вычисления производных при x = x0 приближенное решение можно записать в виде

u(x) ¼ X1 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] с заданной точностью вычисляется

1

yi(k)(xi)

k

Xk

 

 

 

(x ¡ xi) ;

 

k!

ui(x) ¼ yi(x) =

 

=0

 

 

 

 

при условии ui(xi) ¼ y1(xi), где y1(x) рассчитанное на отрезке [x1; xi] решение. На каждом отрезке ошибка решения имеет порядок O(hni ), где hi = xi+1 ¡ xi. За счет разбиения к последнему отрезку ошибка накапливается. Она будет иметь порядок O(h1) при 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 = x1 + 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) = y1 + h1f(x1; y1):

Если hi = h = const:, т.е. сетка равномерная, то

u(xi) ¼ y(xi) = y1 + hf1; f1 = f(x1; y1):

Основной недостаток метода Эйлера - быстрое накопление ошибки, т.е. требуется очень мелкий шаг, чтобы получить удовлетворительную точность. В методе Эйлера используется направление касательной в одной точке, расположенной вблизи интегральной кривой. Если направление сдвига вдоль интегральной кривой от точки 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¡1k1(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

При реализации алгоритма решения с автоматическим выбором шага такая оценка погрешности экономичнее правила Рунге.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]