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

KKOSHI

.pdf
Скачиваний:
5
Добавлен:
27.03.2015
Размер:
547.29 Кб
Скачать

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ Нижегородский государственный университет им. Н.И.Лобачевского Радиофизический факультет

ЗАДАЧА КОШИ ДЛЯ ОБЫКНОВЕННЫХ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ ВВЕДЕНИЕ В ЧИСЛЕННЫЕ МЕТОДЫ

Лабораторная работа для студентов радиофизического факультетa ННГУ

Нижний Новгород 2002г.

УДК 518.5 Безусловный экстремум. Введение в численные методы. /сос. В.В.Кулинич, И.П.Смирнов - Нижний Новгород, изд. ННГУ им. Н.И.Лобачевского, 2002 г. -32 с.

Излагаются основные методы построения разностных схем численного решения задачи Коши для обыкновенных дифференциальных уравнений, вопросы их сходимости и устойчивости. Приводится полный текст программы на алгоритмическом языке Фортран решения задачи Коши методом Рунге-Кутты. Формулируются задания для самостоятельной работы по вычислительному практикуму.

Методическая разработка рассчитана на студентов и магистрантов радиофизического факультета Нижегородского госуниверситета.

Составители:

Виктор Валентинович Кулинич Иван Паисьевич Смирнов

Нижегородский государственный университет им.Н.И.Лобачевского 2002 г.

1Основные методы построения разностных схем для задачи Коши

1.1Введение

Широкие классы задач физики, химии, биологии, экономики и др. сводятся к решению начально-краевых задач для систем обыкновенных дифференциальных уравнений. Считается, что приведение задачи к форме, например, задачи Коши является гарантией ее решения, хотя бы приближенного. Теория численного решения таких задач является одной из развитых областей вычислительной математики.

Нашей целью является обзор основных численных методов решения

задачи Коши

8 y0(x) = f0(x; y(x)); x 2 (a; b)

 

 

(1)

 

< y (a) = y ;

 

 

:

 

где y (x) ´ (y1(x); y2(x); : : : ; ys(x)); y0 - заданный начальный вектор. При численном решении задачи (1) ищется последовательность векто-

ров fyngNn=0, являющихся приближениями для значений решения fy(xn)gNn=0

на множестве точек сетки !N ´ fxi : xi+1 = xi + hi; i = 0; N ¡ 1; x0 = a; xN = bg, где hi > 0 - шаг сетки. В практике используются разнообраз-

ные сетки. Мы ограничимся рассмотрением методов с равномерными сетками, т.е. сетками с постоянным шагом hi ´ h: Основное предположение относительно задачи (1), которое мы примем, состоит в непрерывности правой части дифференциального уравнения (вектор-функции f (x; y)) по совокупности переменных в (a; b) £ Rs и глобального (равномерного относительно x) условия Липшица по y:

kf(x; y1) ¡ f(x; y2)k · L

°y1

¡ y2

°

;

 

°

 

°

 

 

°

 

°

 

где L - постоянная Липшица. В этих условиях решение задачи Коши (1) существует и единственно при любом начальном векторе y0 (см. [1]). Заметим, что реализация конкретного численного метода и, в особенности, его обоснование требуют обычно более сильных ограничений на параметры задачи. Не оговаривая дополнительно, мы предполагаем всякий раз выполнение этих условий, ограничиваясь в основном изложением формальной схемы метода.

Мы также ”по умолчанию” для простоты ограничиваемся рассмотрением скалярного случая.

3

1.2Метод разложения в ряд Тейлора

Простейшим способом построения приближенного решения в точке xn+1 сетки !N является способ, основанный на разложении решения в ряд Тейлора в предыдущей точке сетки xn по степеням шага h:

 

 

y(xn+1) = y(xn) + h4(xn; yn; h);

(2)

 

 

 

 

 

 

 

 

h

 

 

 

 

h2

 

 

 

4(x; y; h) ´ y0

(x) +

 

 

y00

(x) +

 

y000(x) + : : : :

2

3!

Взяв вместо этого ряда конечный его отрезок

 

 

 

 

'

p(

x; y; h

) ´

y0

(

x

) +

h

y00

(

x

) +

: : :

+

h1

y(p)

x

2

 

 

 

 

 

 

 

 

 

 

p!

( )

и заменяя в нем производные y(k) (x) в силу дифференциального урав-

нения (1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y0 (x) = f (x; y (x)) ;

 

 

 

 

 

 

 

 

y00 (x) =

 

d

f (x; y (x)) = f0 + f0f;

 

 

 

 

 

 

 

000 (

 

)

2

dx

³

 

x0

 

 

y0

 

´

 

x

y

x0 y0

 

 

 

 

 

dx

 

 

 

 

 

 

xx00

 

 

 

y

 

 

x

=

d

 

 

f

 

+ f

f = f

 

+ f f

+

 

 

 

 

 

 

 

 

+ µ³fy0´ + 2fxy00

f + fyy00 f2; : : : ;

 

 

 

получаем последовательность приближений

 

 

 

 

yn+1 = yn + h'p(xn; yn; h);

n = 0; 1; 2; : : : :

(3)

Отсюда, в частности, при p = 1 получаем схему

 

 

8 yn+1 = yn + hf(xn; yn

)

 

 

 

 

(4)

0

 

 

 

!N ;

< y0 = y ; n = 0; N

¡

1; xn

2

 

:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(метод Эйлера), а при p = 2 - схему

 

 

 

 

 

 

 

 

 

8 yn+1 =0 yn + h

[f(xn; yn) + h2 (fx(xn; yn) + fy(xn; yn)f(xn; yn)]

(5)

 

 

< y0 = y ; n = 0; N

¡

1; xn

2

!N :

 

 

 

 

 

 

 

:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Алгоритмы типа (3) не требуют вычисления дополнительных начальных условий и позволяют легко менять шаг интегрирования. Применимость данных методов ограничена теми задачами, для которых легко вычисляются частные производные высоких порядков функции f(x; y).

4

1.3Методы Рунге-Кутты

Идея этих методов заключается в построении функций ', которые не используют явно производных функции f(x; y) и в то же время ”наилучшим образом” приближают соответствующие отрезки 'p ряда Тейлора

4.

Продемонстрируем процесс ”подгонки” рядов Тейлора следующим образом. Положим

'(x; y; h) ´ c1f(x; y) + c2f(x + ha2; y + b21hf(x; y));

(6)

где c1; c2; a2; b21 - постоянные, подлежащие определению. Разлагая ' по степеням h до членов порядка h2, получим

'(x; y; h) = (c1 + c2)f(x; y) + hc2[a2fx(x; y) + b21fy(x; y)f(x; y)] + O(h2):

(7)

С другой стороны,

4(x; y; h) = f(x; y) +

1

h[fx(x; y) + fy(x; y)f(x; y)] + O(h2):

(8)

 

2

Отсюда видно, что взяв

8

 

1

+

 

2

1

 

 

>

c

 

 

c

 

= 1

 

 

>

 

 

 

 

 

1

 

 

<

 

 

 

 

 

 

 

> c2a2 =

2

(9)

 

> c2b21 =

2;

 

 

>

 

 

 

 

 

 

 

 

>

 

 

 

 

 

 

 

 

:

 

 

 

 

 

 

 

получаем в (6) функцию, для которой

'(x; y; h) ¡ 4(x; y; h) = O(h2):

Алгебраическая система (9) имеет множество решений вида

1 c1 = 1 ¡ ®; c2 = ®; a2 = b21 = 2®;

где ® - свободный параметр.

При ® = 12 , в частности, получаем двукратный1 метод Рунге-Кутты- метод Хойна:

8 yn+1 =0 yn + h2

[f(xn; yn) + f(xn+1; yn + hf(xn; yn))];

(10)

 

 

< y0 = y ; n = 0; N

¡

1; xn

2

!N ;

 

:

 

 

 

 

 

требующий всего два вычисления функции f(x; y) на каждом шаге.

1Под кратностью метода в данном случае понимается количество вычислений функции f (x; y).

5

Процесс ”подгонки” рядов Тейлора можно продолжить, строя функции '(x; y; h), использующие все большие отрезки ряда Тейлора. Подобным образом получают m-кратные явные методы Рунге-Кутты:

8 yn+1 = yn + h'(xn; yn

; h)

 

 

 

(11)

0

 

 

 

!N ;

< y0 = y ; n = 0; N ¡ 1; xn

2

 

:

 

m

 

 

 

 

 

 

 

rX

 

 

 

 

 

 

 

'(x; y; h) ´

crkr

;

 

 

 

 

=1

 

 

 

 

 

 

1

k1 ´ f(x; y); kr ´ f(x + har; y + h X brsks); r = 2; m;

s=1

требующие m вычислений функции f (x; y) на каждом шаге. Наиболее известным из них является четырехкратный метод:

8

< yn+1 = yn + h6 (k1 + 2k2 + 2k3 + k4)

: y0 = y0; n = 0; N ¡ 1; xn 2 !N ;

k1 ´ f(xn; yn);

k2 ´ f(xn + 12h; yn + 12hk1); k3 ´ f(xn + 12h; yn + 12hk2);

k4 ´ f(xn + h; yn + hk3):

Алгоритмы Рунге-Кутты отлично приспособлены для практических вычислений: они не требуют вычисления дополнительных начальных данных и легко позволяют менять шаг h.

Усложняя формулы (11), можно получить и более широкий класс методов, т.н. m¡кратные неявные методы Рунге-Кутты:

8 yn+1 = yn + h'(xn; yn

; h)

 

 

 

(12)

0

 

 

 

!N ;

< y0 = y ; n = 0; N ¡ 1; xn

 

 

:

 

m

 

 

 

2

 

 

 

 

rX

 

 

 

 

 

 

 

'(x; y; h) ´

crkr

;

 

 

 

 

=1

 

 

 

 

 

 

m

k1 ´ f(x; y); kr ´ f(x + har; y + h X brsks); r = 2; m:

s=1

Формулы (12) являются, вообще говоря, более точными, чем (11). Однако более высокая точность достигается ценой значительного усложнения вычислительного алгоритма, что сильно ограничивает сферу применимости таких методов. Можно, впрочем, понизить степень неявности,

6

положив brs = 0 при s > r: В качестве примера приведем полуявный трехкратный метод Батчера

8 yn+1 =0 yn + h6

(k1 + 4k

2 + k3);

(13)

 

< y0 = y ; n = 0; N

¡

1; xn

2

!N ;

 

:

 

 

 

 

 

k1 ´ f(xn; yn);

k2 ´ f(xn + h2 ; yn + h4 (k1 + k2)); k3 ´ f(xn + h; yn + hk2):

Одной из проблем, связанных с реализацией методов Рунге-Кутты, является выбор шага для достижения заданной точности. Решается она либо применением правила Рунге2, что значительно увеличивает объем вычислений, либо путем использования специальных формул для вычисления погрешности, содержащих только величины fkrg, (метод Мерсона). Например, для явного пятикратного метода

 

8 yn+1 =0 yn + h2

(k1 + 4k

4 + k5)

 

 

 

< y0 = y ; n = 0; N

 

1; xn

 

!N ;

k1

:

31f(xn; yn);

 

¡

 

 

2

 

k2

´

31f(xn + h3 ; yn + hk1);

 

 

 

´

1

h

h

 

 

h

 

 

k3 ´

3f(xn +

3 ; yn +

2 k1 + 2 k2);

 

k4

´

31f(xn + h2 ; yn +

83hk1 + 89hk3);

 

1

 

 

3

 

9

 

+ 6hk4);

k5 ´

3f(xn + h; yn +

2hk1

¡ 2hk3

погрешность метода Мерсона вычисляется по формуле

 

 

h

 

¡

9

+ 4k4 ¡

1

(14)

" =

 

 

(k1

 

k3

 

 

k5):

5

 

2

2

Критерий выбора шага интегрирования состоит в следующем: если правая часть (14) превышает предписанную погрешность более чем в 5 раз, то шаг h уменьшается в 2 раза и вычисления повторяются до достижения предписанной погрешности, а если правая часть (14) меньше, чем 325 предписанной погрешности, то шаг может быть удвоен и вычисления продолжаются с удвоенным шагом.

1.4Многошаговые методы

В изложенных выше методах, после нахождения приближенного решения yn+1 на n + 1-ом шаге, приближенное решение yn уже не используется в дальнейших расчетах. Идея многошаговых методов состоит в том,

2Сравниваются решения, полученные с шагами h и h=2 . В случае их совпадения с указанной погрешностью решение считается удовлетворительным.

7

чтобы явно использовать ранее вычисленные значения yn; y1; : : :. Реализовать ее можно, например, следующим способом. Задачу Коши (1) приводят к эквивалентному интегральному уравнению

y(x + ³)

¡

y(x) =

x+³ f(t; y(t))dt;

(15)

 

 

R

0

 

 

 

x

 

 

y (a) = y ;

где x; x + ³ - произвольные точки интервала [a; b].

Функцию F (x) ´ f(x; y(x)) заменяют интерполяционным многочленом, принимающим значения Fn = f(xn; yn) на множестве точек сетки xn, в которых должны быть вычислены приближенные значения yn. Пусть xn; x1; : : : ; xn¡k - узлы интерполяции, тогда интерполяционный многочлен можно записать, например, в форме Лагранжа,

 

k

 

 

Lnk

iX

pki(x)Fn¡i:

(16)

(x) =

 

=0

 

 

Здесь pki (x) многочлены Лагранжа.

Подставляя (16) в уравнение (15) для x = xn; ³ = h и выполняя интегрирование, получаем схему Адамса-Бешфорта

8 yn+1 =0 yn + h ik=0 ¯kiFn¡i

 

 

 

 

 

P

 

 

 

 

 

< y0 = y ; n = 0; N

 

1; xn

 

!N ;

:

 

 

 

¡

 

 

2

 

1

 

xn+h

 

 

 

 

 

¯ki ´

 

 

Z

pki(t)dt:

 

 

h

 

 

 

 

 

xn

 

 

 

 

 

При x = x1; ³ = h получим схему Адамса-Мултона

 

 

 

 

P

 

 

 

 

yn = yn 1 + h

k ¯kiFn i

 

!N ;

< y0

= y ; n = 0; N 1; xn

 

8

0 ¡

 

 

 

i=0

¡

 

 

:

 

 

 

 

 

¡

 

2

 

 

1

 

 

xn

 

 

 

 

 

¯ki ´

 

 

 

Z

pki(t)dt:

 

 

 

h

 

 

 

 

 

 

 

xn¡h

 

 

 

 

(17)

(18)

Общая форма записи таких методов:

k

 

k

 

 

X

®jyn+j = h

jX

¯jFn+j; n = 0; 1; : : : ;

(19)

j=0

 

=0

 

 

где ®j; ¯j - постоянные, ®n =6 0; j®0j + 0j 6= 0. Уравнение (19) - линейное соотношение между yn+j и Fn+j: Поэтому соответствующий формуле (19) метод называют линейным многошаговым методом (LLM - linear

8

¯ ¯
hL < ¯¯¯¯®k ¯¯¯¯ ;
¯k

multistep method). Для применения схемы (19) требуется заранее знать k начальных значений y0; y1; : : : ; y1. Эти значения получают какимлибо одношаговым методом. Далее процесс может следовать по одному из двух возможных путей. Если ¯k = 0, то yn+k легко вычисляются из формул (19), и метод называют явным многошаговым. В противном случае правая часть Fn+k ´ f(xn+k; yn+k) содержит искомую величину yn+k, и для ее определения приходится решать (нелинейное в общем случае) уравнение. Метод при этом называют неявным многошаговым. Формулы Адамса (17), (18) являются примерами соответственно явных и неявных методов. Явные многошаговые методы на первый взгляд кажутся самыми простыми для проведения вычислений. Но на практике такие методы используются редко, т.к. они обладают меньшей устойчивостью к малым возмущениям значений yn (ошибки округления). Оказывается также, что в явных методах шаг h должен быть значительно меньше для достижения заданной точности, чем в неявных, и в случае т.н. ”жестких” дифференциальных уравнений явные методы нередко приводят к неверным результатам.

Отметив, что неявные методы предпочтительнее явных, покажем как они реализуются на практике. Из (19) имеем

 

¯k

(20)

yn+k = h

®k f(xn+k; yn+k) + gn; ¯k 6= 0;

где gn содержит уже известные величины yn+j; Fn+j; j = 0; k ¡ 1. Оказывается, что если

(21)

где L-постоянная Липшица, определенная в п. 1.1, то единственное решение нелинейного уравнения (20) можно получить с помощью итерационного процесса

ynº++1k = h

¯k

f(xn+k; ynº+k) + gn; º = 0; 1; : : : :

(22)

 

 

®k

 

Скорость сходимости итерационной последовательности тем выше, чем меньше величина hj¯kkjL. Величина yn0+k выбирается произвольно. Желательно, конечно, выбирать yn0+k вблизи искомой величины. Надлежащий выбор достигается с помощью явного метода. Явный метод в этом случае называют ”предсказывающим”, а неявный метод (20) - ”исправляющим”. В литературе весь процесс принято называть методом

9

предиктора-корректора”. 3

Существует два способа реализации методов предиктора-корректора. В первом случае итерации (22) проводят до тех пор, пока они не будут совпадать с заданной точностью. Во втором случае корректирующие итерации применяются фиксированное, например t , число раз. Полученное таким образом значение ynt +k принимается за приближение к точному

значению y(xn+k).

В качестве примера рассмотрим методы Адамса при k = 1. Здесь формулы для явного метода имеют вид

h

yn+1 = yn + 2(3f(xn; yn) ¡ f(x1; y1);

а формулы для неявного метода

h

yn+1 = yn + 12(5f(xn+1; yn+1) + 8f(xn; yn) ¡ f(x1; y1)):

Для t = 1 формулы метода предиктора-корректора можно записать в виде

8

< yn0+1 = yn + h2 (3f(xn; yn) ¡ f(x1; y1);

: yn+1 = yn + 12h (5f(xn+1; yn0+1) + 8f(xn; yn) ¡ f(x1; y1)):

Главной трудностью при использовании многошаговых методов является изменение шага интегрирования. Преимущество перед одношаговыми - меньшее число вычислений правой части дифференциального уравнения для достижения одинаковой точности.

1.5Системы уравнений первого порядка в нормальной форме и уравнения высокого порядка

Коротко продемонстрируем, как изложенные выше методы можно применять к системам первого порядка и уравнениям высших порядков. Для системы из s уравнений первого порядка

8 y0 = f(x;0y); x 2 (a; b)

(23)

< y(a) = y ;

 

:

 

где

y (x) ´ [y1(x); y2(x); : : : ; ys(x)];

f(x; y) ´ [f1(x; y); f2(x; y); : : : ; fs(x; y)];

3Отметим, что идея предиктора-корректора аналогичным образом применима и для одношаговых методов[2].

10

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