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

ГЛ 9

.pdf
Скачиваний:
18
Добавлен:
16.05.2015
Размер:
287.42 Кб
Скачать

Глава 9. Численные методы решения обыкновенных дифференциальных

98

уравнений

 

ìu1

= f1( x,u1 ,u2 , ,um ) ,

ï

=

f2

( x,u1 ,u2

, ,um ) ,

ïu2¢

í

 

 

 

 

 

 

 

 

x [a ;b]

ï...............

 

 

 

 

 

 

ï ¢

 

fm( x,u1 ,u2 , ,um )

îum =

и начальным условиям

 

 

ìu1(a) =

u1 ,

 

 

 

 

 

 

ïïu2(a) =

u

2 ,

 

 

 

í

 

 

 

 

 

 

 

 

 

ï...............

 

 

 

 

îïum (a) =

u

m .

Здесь f1 , f2 , , f m

 

заданные функции m+1

a ,b ,u1 ,u2 , ,um − заданные постоянные.

(9.2.5)

(9.2.6)

переменной,

Для сокращения записи подобные задачи часто записывают в векторной форме, поэтому введём обозначения:

Глава 9. Численные методы решения обыкновенных дифференциальных

99

уравнений

 

 

æ

 

u

 

ö

æ

u (x) ö

 

 

ç

1

÷

ç

1

÷

 

 

ç

 

u

2

÷

ç

u2

(x)÷

 

u=

ç

...

÷

− заданный вектор-столбец, u(x)= ç

....... ÷

− искомая вектор-функция,

 

ç

 

 

 

÷

ç

 

÷

 

 

ç

 

 

 

÷

èç

um(x)ø÷

 

 

 

 

 

 

 

è

um ø

 

æç f(x,u)=f(x,u1,u2, ,um)=çç ççè

f1(x,u) f2(x,u)

.............

fm(x,u)

ö

 

æ

÷

 

ç

÷

=

ç

÷

ç

÷

 

ç

÷

 

ç

ø

 

è

f1

(x,u1,u2, ,um)

ö

f

(

x,u,u

, ,u)

÷

2

 

1 2

m

÷

................................

÷ − заданная вектор-функция.

÷

f

 

(x,u,u

, ,u

)÷

m

1 2

m

ø

æ

u1(

a) ö

 

æ

u1

(

 

x) ö

 

 

ç

u2

(

)÷

 

ç

¢

(

 

)÷

 

 

ç

 

a ÷

 

ç

u2

 

x ÷

 

 

Тогда u(a)= ç

....... ÷

,

u¢(x)= ç

....... ÷

и задачу Коши (9.2.5)

− (9.2.6) можно записать

ç

u

 

÷

 

ç

¢

 

(

÷

 

 

ç

 

(a)÷

 

ç

 

)÷

 

 

è

m

ø

 

è

um

 

x ø

 

 

в векторной форме совсем коротко:

 

u′ = f (x ,u) , x [a ,b],

(9.2.7)

u(a) = u .

(9.2.8)

В таком виде задача Коши для системы выглядит так же, как и задача Коши для одного уравнения (9.1.1).

Глава 9. Численные методы решения обыкновенных дифференциальных

100

уравнений

 

Схемы Эйлера и Рунге-Кутта для систем уравнений

Будем считать, что задача Коши (9.2.7) - (9.2.8) имеет

единственное решение u(x) на отрезке [a ;b] и в дальнейшем будем называть его точным решением этой задачи. Введём на отрезке

[a ;b] сетку {xn = a + h × n : h = (b - a)N , n = 0,1, , N} и найдем на этой сетке приближённое решение задачи Коши {un} . Приближённое решение

представляет собой множество векторов

 

æ

u

n1

ö

 

 

ç

 

÷

 

un=

ç

un2

÷

,n= 0,1, ,N.

ç

 

 

÷

 

ç

......÷

 

 

ç

u

 

÷

 

 

è

 

nmø

 

Каждый из этих

векторов

 

даёт приближённое значение

вектор-функции u(x)

в узле xn

 

u( xn ) un .

 

 

 

 

 

 

 

Запишем это приближённое векторное равенство в координатах:

 

ìu1( xn ) un1 ,

 

 

ïïu

2 ( xn ) » un2

,

n =0 ,1, , N.

 

í

 

 

 

 

 

 

 

ï....................

 

 

 

ïu

m

( x

n

) » u

nm

.

 

î

 

 

 

Абсолютная погрешность p-го компонента приближённого решения в

узле xn представляет собой

 

u p ( xn ) unp

 

.

Погрешностью

всего

 

 

приближённого решения (как вектор-функции) в узле сетки xn

будем

называть величину p 1, 2, , m

u p (xn ) unp

. Оценка погрешности p-го

max

 

 

 

 

 

 

=

 

 

 

 

 

 

 

 

 

компонента приближённого решения в узле сетки

xn представляет

собой любое положительное

 

число

un p ,

удовлетворяющее

неравенству u p (xn ) unp un p . Оценкой погрешности приближённого

Глава 9. Численные методы решения обыкновенных дифференциальных

101

уравнений

 

 

 

 

 

 

решения в узле сетки xn называется любое положительное число

un

, удовлетворяющее неравенству p 1, 2, ,m

u p (xn ) unp

 

un

.

 

max

 

 

 

=

 

 

 

 

 

 

Задача вычисления приближённого решения задачи Коши (9.2.7) - (9.2.8) с заданной точностью обычно ставится следующим образом.

Для заданного положительного числа ε требуется подобрать сетку { xn} и найти приближённое сеточное решение задачи Коши { un} , абсолютная погрешность которого во всех узлах сетки не превышает

заданной точности

ε

:

æ

 

u p (xn ) -unp

 

ö

.

 

 

n=0,1, ,N èp=1, 2, , m

 

ø

 

 

max ç

max

 

÷ £ε

 

Так как внешний вид задач (9.2.7) - (9.2.8), (9.1.1) почти

одинаков, для приближённого

решения

задачи (9.2.7) - (9.2.8)

строятся вычислительные схемы, аналогичные тем, которые были рассмотрены, только скалярные величины заменяются векторными.

Например, схема Эйлера для приближённого решения задачи (9.2.7) -

(9.2.8) будет иметь вид

 

u0 = u ,

(9.2.9)

un+1 = un + h × f( xn ,un ) , n =0 ,1, , N −1.

(9.2.10)

В координатах схема Эйлера для систем будет выглядеть более громоздко:

ìu01 = u1 ,

ïïu02 = u2 ,

í

ï..............

ïîu0m = um ,

ìun+11 = un1 + h f1 (xn ,un1 ,un 2 , ,un m ),

 

ïu

= u

n 2

+ h f

2

(x

n

,u

n1

,u

n 2

, ,u

n m

),

 

ï n+12

 

 

 

 

 

 

 

 

í.................................................................

n =0 ,1, , N −1

ï

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ï

 

 

 

 

 

 

 

 

 

 

 

 

 

 

îun+1m = un m + h fm (xn ,un1 ,un 2 , ,un m ).

 

Аналогично строится и схема Рунге-Кутта четвертого порядка:

 

 

 

u0 = u ,

 

 

 

 

 

 

 

 

 

(9.2.11)

Глава 9. Численные методы решения обыкновенных дифференциальных

102

уравнений

 

 

 

 

 

 

 

 

 

 

 

 

ì

 

 

 

 

 

 

 

 

 

 

 

 

ïK1 = f( xn ,un ) ,

 

 

 

 

 

 

ï

 

= f( xn

+ h 2, un + h K1 2) ,

 

 

ïK

2

 

 

ï

 

= f( xn

+ h 2 , un + h K2 2) ,

(9.2.12)

íK3

ïK

4

= f( x

n

+ h , u

n

+ h K

3

) ,

 

 

ï

 

 

h

 

 

 

 

 

ï

 

 

 

+

[K1

+ 2 K2 + 2 K3 + K4 ],

n = 0,1, , N - 1.

 

ïun+1 = un

6

 

î

 

 

 

 

 

 

 

 

 

 

 

Оценки погрешности вычислительных схем для векторного случая производятся так же, как и для скалярного. Можно доказать,

что вычислительная схема Эйлера (9.2.9) − (9.2.10) имеет первый

порядок точности, если функция f и ее частные производные непрерывны и ограничены. А вычислительная схема Рунге-Кутта

(9.2.11) − (9.2.12) имеет четвёртый порядок точности, если функция f

и ее частные производные до четвертого порядка непрерывны и ограничены.

Для получения приближённого решения задачи (9.2.7) − (9.2.8) с

заданной точностью ε можно использовать правило Рунге. Строится последовательность сгущающихся (в 2 раза) сеток и для каждой пары сеток сравниваются приближённые решения на них {un p } и {u2n p } в

совпадающих

узлах xn = x2n .

 

Практическая оценка

погрешности

приближённого

решения

в совпадающем

узле xn = x2n

по правилу

Рунге принимает вид

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

max

 

u

2n p

un p

 

.

(9.2.13)

max

 

u p (xn )

u

2n p

 

p=1,2, ,m

 

 

 

 

 

 

 

 

 

 

(2k −1)

 

 

p=1,2, , m

 

 

 

 

 

 

 

 

 

 

 

Процесс построения приближённых решений продолжается до тех пор, пока во всех совпадающих узлах xn = x2n двух последних сеток не будет выполнено условие

max

u

2n p un p

≤ε .

(9.2.14)

p=1, 2, , m

(2k −1)

 

 

Тогда последнее полученное приближённое решение {un p } будет иметь заданную точность ε в совпадающих узлах двух последних сеток. Поскольку погрешность приближённого решения обычно принимает максимальное значение на правом конце отрезка [a ;b], условие (9.2.14) обычно проверяется только при n = N .

Глава 9. Численные методы решения обыкновенных дифференциальных

103

уравнений

 

9.3. Численные методы решения краевых задач для обыкновенных дифференциальных уравнений

Помимо задач Коши, встречаются и другие виды краевых задач, дополнительные (краевые) условия для которых формулируются в нескольких точках. Для их решения существует несколько методов. Два из них в этом параграфе.

Баллистический метод

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

u1′ =

f1( x,u1,u2 ) , x [a;b] ,

,

(9.3.1)

2

 

2

1

2

)

,

 

 

(9.3.2)

u′ = f

 

( x,u ,u

 

 

x [a;b]

 

 

с краевыми условиями

 

 

 

 

 

 

 

 

 

 

u2 (a) = ϕ (u1(a)) ,

 

 

 

 

 

(9.3.3)

ψ (u1(b),u2 (b)) = 0.

 

 

 

(9.3.4)

Здесь a и b – заданные постоянные, а

f1,

f2 ,ϕ,ψ − заданные функции.

Решением (точным решением) этой краевой задачи называется пара непрерывных и дифференцируемых на отрезке (a;b) функций { u1( x),u2 ( x)} , удовлетворяющих уравнениям (9.3.1), (9.3.2) и краевым условиям (9.3.3), (9.3.4). Будем предполагать, что точное решение краевой задачи существует и единственно. Требуется найти

Глава 9. Численные методы решения обыкновенных дифференциальных

104

уравнений

 

приближенное решение этой задачи с погрешностью, не превышающей заданного положительного числа ε .

Введем параметр η такой, что

 

u1(a) .

(9.3.5)

Тогда из равенства (9.3.3), получим

 

u2 (a) = ϕ(η ) ,

(9.3.6)

Если функции u1( x) и u2 ( x) удовлетворяют условиям (9.3.5) и (9.3.6), то при любом значении η они будут удовлетворять и краевому условию (9.3.3).

Зафиксируем какое-либо значение параметра η и решим любым способом задачу Коши для системы дифференциальных уравнений (9.3.1), (9.3.2) с начальными условиями (9.3.5), (9.3.6). Обозначим точное решение задачи Коши (9.3.1), (9.3.2), (9.3.5), (9.3.6) как { u1( x),u2 ( x)} (оно, очевидно, зависит от значения параметра η). При любом значении η функции u1( x) и u2 ( x) будут удовлетворять дифференциальным уравнениям (9.3.1), (9.3.2) и краевому условию (9.3.3). Для получения решения краевой задачи осталось подобрать (пристрелять) значение параметра η, при котором функции u1( x) и u2 ( x) будут удовлетворять также и условию (9.3.4). Для этого мы подставляем u1( x) и u2 ( x) в краевое условие (9.3.4). В результате этого получается уравнение с одним неизвестным η

ψ (u1(b),u2 (b)) = 0.

(9.3.7)

Если ηе − точное решение уравнения (9.3.7), то { u1( xe ),u2( xe )}

точное решение краевой задачи (9.3.1), (9.3.2), (9.3.3), (9.3.4).

Чаще всего получить точное решение задачи Коши (9.3.1), (9.3.2), (9.3.5), (9.3.6) и уравнения (9.3.7) не удается. В этом случае для решения этих задач используются численные методы (например,

метод Рунге-Кутта

и метод половинного деления).

Обозначим

{

u1( x),

u

2 ( x)}

приближенное решение задачи Коши (9.3.1), (9.3.2),

(9.3.5), (9.3.6), получаемое каким либо численным методом.

 

Чаще всего

u1( x) и u2 ( x) представляют собой сеточные

функции, а

точка

x = b принадлежит сетке. Поэтому можно

определить

u1(b) и

u

2 (b) . Подставляя в равенство

(9.3.7) эти

значения, получаем уравнение с одним неизвестным η

 

 

 

 

 

 

 

 

 

 

ψ (

u1(b),

u

2 (b)) = 0.

(9.3.8)

Решая его каким-либо численным методом, получаем приближенное решение уравнения (9.3.8) − ηa . А в качестве приближенного

u′′( xn ) p( xn ) u( xn ) = f ( xn )

Глава 9. Численные методы решения обыкновенных дифференциальных

105

уравнений

 

решения краевой задачи (9.3.1), (9.3.2), (9.3.3), (9.3.4) выбирается

{u1( xa ),u2 ( xa )} .

Ксожалению, для оценки погрешности полученного

приближенного решения требуются дополнительные исследования.

Разностный метод

Рассмотрим краевую задачу для линейного обыкновенного

дифференциального уравнения 2-го порядка

 

u′′ - p( x) × u = f ( x) , x [a,b],

(9.3.9)

u(a) = α , u(b) = β .

(9.3.10)

Здесь a, b,α, β − заданные вещественные постоянные,

p(x), f (x)

заданные функции.

Решением (точным решением) этой краевой задачи называется функция u(x) , дважды дифференцируемая и непрерывная на отрезке [a;b], удовлетворяющая уравнению (9.3.9) и краевым условиям (9.3.10). Будем предполагать, что точное решение краевой задачи существует и единственно. Требуется найти приближенное решение этой задачи с погрешностью, не превышающей заданного

положительного числа ε .

 

Введем на

отрезке [a;b] равномерную сетку

точек

{ xn = a + h n

 

h = (b a)

N, n = 0,1, , N}с шагом h. Приближенное

решение

 

краевой задачи будем искать в виде сеточной функции. Дифференциальное уравнение (9.3.9) должно выполняться во всех точках отрезка [a ;b], в том числе и во всех узлах сетки:

. (9.3.11) Используем формулу численного дифференцирования (6.1.23) для приближенного вычисления производной

u′′( xn ) u( xn−1) − 2 u( xn ) + u ( xn+1) . h2

Подставим это приближённое равенство в дифференциальное уравнение. В результате этого получим систему приближённых алгебраических равенств

u( xn−1) − 2u( xn ) + u( xn+1)

p( xn ) u( xn ) f ( xn ) , n =1, 2, , N −1. (9.3.12)

h2

 

Из краевых условий (9.3.10) определяются

Глава 9. Численные методы решения обыкновенных дифференциальных

106

уравнений

 

u( x0 ) = u(a) = α , u( xN ) = u(b) = β .

(9.3.13)

Таким образом, мы получили систему приближенных линейных алгебраических уравнений с постоянными коэффициентами (9.3.12), (9.3.13) относительно неизвестных u( x0 ),u( x1 ), ,u( xN ) . Решив ее, получим приближенные значения неизвестных.

Описанный способ определения приближённого решения, получил название разностного метода. Обозначим приближённые значения u( xn ) как un и запишем вычислительную схему для получения приближённого решения {un} :

un−1 − 2 un + un+1

p( xn ) un = f ( xn ) , n =1, 2, , N −1.

(9.3.14)

h

2

 

u0 = α , uN = β .

(9.3.15)

 

 

Подобные вычислительные схемы называются разностными, поскольку они получаются из дифференциальных уравнений путем замены производных разностными отношениями по формулам численного дифференцирования. Разностная схема (9.3.14), (9.3.15) представляет собой линейную систему с трехдиагональной матрицей. В самом деле, после элементарных преобразований система (9.3.14), (9.3.15) принимает вид

u0 = α ,

(9.3.16)

un−1 (2 + h2 p( xn ))un + un+1 = h2 f ( xn ) , n =1, 2, , N −1.

(9.3.17)

uN = β .

(9.3.18)

Подставим начальное краевое условие (9.3.16) в первое уравнение (9.3.17) (при n =1), а конечное краевое условие (9.3.18) − в

последнее уравнение (9.3.17) (при n = N −1). В результате наша линейная система примет вид, аналогичный системе уравнений (3.3.2):

(2 + h2 p( x1))u1 + u2 = h2 f ( x1) − α ,

un−1 (2 + h2 p( xn ))un + un+1 = h2 f ( xn ) , uN −2 (2 + h2 p( xN −1))uN −1 = h2 f ( xN −1)

Запишем ее в виде (3.3.2):

 

(9.3.19)

n =2,3, , N −2 ,

(9.3.20)

− β .

(9.3.21)

Глава 9. Численные методы решения обыкновенных дифференциальных

107

уравнений

 

ìC1u1 + B1u2 = − F1,

 

 

 

 

ï

A u

n−1

- C

n

y

n

+ B

u

n+1

= - F , n = 2,3, ,N - 2,

í

n

 

 

 

 

n

 

n

 

ï

A u

 

- C

 

u

N−1

=

- F

.

î

N−1 N− 2

 

 

 

 

N−1

 

N−1

 

Здесь

ì

An =

1,

n =

2,3, ,N − 1,

ï

B

 

=

1,

n =

1,2, ,N -

2,

ï

n

 

 

 

 

 

 

 

 

 

ï

C

n

=

2+

h2

× p(x

n

), n =

1,2, ,N - 1,

ï

 

 

 

 

 

 

 

 

 

í

 

 

 

ì

- h2

f (x ) + α , n = 1,

ï

F

 

=

ï

-

h2

1

), n =

2,3, ,N - 2,

ï

 

ï

f (x

n

ï

n

 

í

 

 

 

 

 

 

ï

 

 

 

ï

-

h2

f (xN−1) + β , n = N - 1.

 

 

 

ï

î

 

 

 

î

 

 

 

 

 

 

 

(9.3.22)

(9.3.23)

Для решения системы (9.3.22) целесообразно использовать метод правой прогонки (см. параграф 3.2). Если p( xn ) ³ 0, то все достаточные условия применимости метода прогонки будут выполнены. Решая систему (9.3.22) методом прогонки, получим приближенное решение краевой задачи на сетке { un} .