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

nummethod_book_chapter4-1

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

www.uchites.ru

K1k = hf (xk , yk , zk )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Lk

= hg(x

k

, y

k

, z

k

)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

K k

= hf (x

k

+

 

1

h, y

k

+

 

1

K k , z

k

+

 

1

Lk )

 

2

2

2

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

1

Lk

= hg(x

k

+

1

 

h, y

k

+

 

1

 

 

K k

, z

k

+

 

1

 

 

Lk )

2

 

2

 

 

2

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

1

K3k = hf (xk

+

 

1

h, yk

+

 

1

K2k , zk

+

 

1

Lk2 )

 

2

2

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Lk

= hg(x

k

 

+

1

h, y

k

 

+

 

1

K k

, z

k

 

+

 

1

Lk )

 

2

 

 

2

 

 

2

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

2

K k

= hf (x

k

+ h, y

k

 

+ K k , z

k

+ Lk )

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

3

 

 

 

 

 

 

Lk

= hg(x

k

+ h, y

k

+ K k , z

k

+ Lk )

 

 

 

 

 

4

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

3

 

 

 

 

 

 

 

Контроль правильности выбора шага h в случае использования метода Рунге-

Кутты четвертого порядка точности для системы (4.15) может быть организован с помощью вычисления на каждом шаге h параметров

θ1k

=

 

K k K k

 

 

2

3

;

K1k K2k

 

 

 

(4.17)

θ k

=

 

Lk

Lk

 

 

 

 

 

2

3

 

 

Lk

Lk

 

 

2

 

 

 

 

 

 

 

1

2

 

 

Если величины θ k (i=1,2)

порядка нескольких сотых единицы, то расчет

 

i

 

 

продолжается с тем

же шагом,

если

больше одной десятой, то шаг следует

уменьшить, если же

меньше одной сотой, то шаг можно увеличить

Решение задачи Коши для ОДУ второго и более высокого порядков.

Задача Коши для ОДУ n – го порядка ставится следующим образом

y(n) = f (x, y, y', y'',......., y(n1) )

11

www.uchites.ru

y(x0 ) = y0 y' (x0 ) = y01

y' '(x0 ) = y02

,

(4.18)

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

 

 

 

y(n1) (x0 ) = y0(n1)

 

 

здесь

y(m) =

d m y

производная m порядка от решения, m=1,2,…,n .

 

dxm

 

 

 

 

 

Основной прием используемый при решении задач типа (4.8) заключается в введении новых переменных и сведении задачи (4.8) для ОДУ высокого порядка к решению системы ОДУ первого порядка (4.13).

Введем новые переменные

z1 = y' z2 = y''

...........

zn1 = y(n1)

тогда задачу (4.8) можно переписать в виде системы n ОДУ первого порядка.

y' = z1

 

 

 

 

 

 

 

z1' = z2

 

 

 

'

 

 

 

z2 = z3

 

 

...........

 

 

 

 

 

 

 

z'

= z

n1

 

 

n2

 

 

 

'

= f (x, y, z1 ,...., zn1 )

 

zn1

 

y(x0 ) = y0

 

z1 (x0 ) = y01

 

z2 (x0 ) = y02

(4.19)

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

 

zn1 (x0 ) = y0(n1)

12

www.uchites.ru

 

 

 

Полученная система, состоящая из n ОДУ

первого

порядка

с

соответствующими начальными условиями решается любым из описанных методов.

 

Пусть необходимо решить задачу Коши для ОДУ второго порядка:

 

 

y' ' = f (x, y, y' )

 

 

 

y(x0 ) = y0

 

 

 

y'(x0 ) = y01

 

(4.20)

 

Путем введения замены z = y' , сведем (4.18) к системе

y' = z

 

 

 

= f (x, y, z)

z'

 

 

y(x0 ) = y0

(4.21)

z(x0 ) = y01

 

, которую можно решить, например, с использованием метода (4.16).

 

Пример 4.1 Явным методом Эйлера с шагом h=0.1 получить численное решение дифференциального уравнения y' = ( y + x)2 с начальными условиями y(0) = 0 на

интервале [0, 0.5] . Численное решение сравнить с точным решением y = tan( x) x .

Р е ш е н и е

 

 

 

 

 

 

 

 

 

 

 

 

 

Итак, исходя из начальной точки x0

= 0 ,

y0 = 0 рассчитаем значение y1 в узле

x =0.1 по формулам (4.2) y = y

0

+ hf (x

0

, y

0

) = 0 + 0.1(0 + 0)2

= 0 . Аналогично получим

1

1

 

 

 

 

 

 

 

 

решение в следующем

узле

x

2

=0.2;

 

 

 

y

2

= y

+ hf (x , y ) = 0 +0.1(0 +0.1)2 = 0.001 .

 

 

 

 

 

 

 

 

 

1

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

13

www.uchites.ru

Продолжим вычисления и, введя обозначения ∆yk = hf (x0 , y0 ) и εk = yист (xk ) yk , где

yист(xk ) - точное решение в узловых точках, получаемые результаты занесем в таблицу.

Таблица 4.1

k

x

y

yk

yист

εk

0

0.000000000

0.000000000

0.000000000

0.000000000

0.0000

 

 

 

 

 

 

1

0.100000000

0.000000000

0.001000000

0.000334672

0.3347E-03

 

 

 

 

 

 

2

0.200000000

0.001000000

0.004040100

0.002710036

0.1710E-02

 

 

 

 

 

 

3

0.300000000

0.005040100

0.009304946

0.009336250

0.4296E-02

 

 

 

 

 

 

4

0.400000000

0.014345046

0.017168182

0.022793219

0.8448E-02

 

 

 

 

 

 

5

0.500000000

0.031513228

 

0.046302490

0.1479E-01

 

 

 

 

 

 

Решением задачи является табличная функция (оставлены 5 значащих цифр в каждом числе)

Таблица 4.2

k

0

1

2

3

4

5

 

 

 

 

 

 

 

xk

0.0000

0.1000

0.2000

0.30000

0.4000

0.5000

 

0

 

00

00

00

00

 

 

 

 

 

 

 

yk

0.0000

0.000

0.0010

0.00504

0.0143

0.03151

 

0

 

00

01

45

3

 

 

 

 

 

 

 

Пример 4.2. Решить задачу из примера 4.1 методом Эйлера-Коши (4.4).

Р е ш е н и е

14

www.uchites.ru

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Исходя из начальных значений x0 = 0 , y0

= 0 , рассчитаем значение y1 в узле

 

x1 =0.1 по формулам (4.4)

 

 

 

 

 

 

 

 

 

~

+ hf (x0 , y0 ) = 0

+ 0.1(0 + 0)

2

= 0 .

 

 

 

 

 

 

 

y1 = y0

 

 

 

 

 

 

 

 

~

 

 

2

= 0.01

 

 

 

 

 

 

 

 

 

 

 

f (x1 , y1 ) = (0 +0.1)

 

 

 

 

 

 

 

 

 

 

 

y1

 

 

 

 

 

 

~

 

 

+0.5 * 0.1* (0 +0.01) = 0.0005

 

 

 

 

 

= y0 +0.5h( f (x0 , y0 ) + f (x1 , y1 )) = 0

 

 

 

 

 

 

Аналогично получим решение в остальных узлах. Продолжая вычисления и

 

 

 

 

 

 

 

 

 

 

 

~

 

 

 

 

 

 

вводя обозначение ∆yk = 0.5h( f (xk , yk ) + f (xk +1 , yk +1 )) получаемые результаты занесем

 

в таблицу.

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 4.3

 

 

 

 

 

 

 

 

 

 

 

 

 

k

 

xk

 

yk

 

 

~

 

 

 

yk

 

yист

 

εk

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

yk

 

 

 

 

 

 

 

0

 

0.0

 

0.0000000

 

 

 

 

0.0005000

 

0.0000000

 

0.0000000

 

 

 

 

 

 

00

 

 

 

 

 

 

00

 

00

 

00

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

0.1

 

0.0005000

0.00000

 

 

 

0.0025353

 

0.00033467

 

0.1653E-03

 

 

 

 

 

 

00

 

 

 

 

 

 

27

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

0.2

 

0.0030353

1.510025E-

 

0.0067784

 

0.00271003

 

0.3253E-

 

 

 

 

 

 

27

 

 

003

 

 

 

59

 

6

 

03

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

0.3

 

0.0098137

7.157661E-

 

 

0.01359456

 

0.00933625

 

0.4775E-03

 

 

 

 

 

 

86

 

 

003

 

 

 

1

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

0.4

 

0.0234083

1.941224E-

 

0.02361595

 

0.02279321

 

0.6151E-03

 

 

 

 

 

 

46

 

 

002

 

 

 

4

 

9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

0.5

 

0.0470243

4.133581E-

 

 

 

0.04630249

 

0.7218E-03

 

 

 

 

 

 

01

 

 

002

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Решением задачи является табличная функция (оставлены 5 значащих цифр в каждом числе)

Таблица 4.4

15

www.uchites.ru

k

0

1

2

3

4

5

 

 

 

 

 

 

 

xk

0.00000

0.10000

0.20000

0.30000

0.40000

0.5000

 

 

0

00

00

00

00

 

 

 

 

 

 

 

yk

0.00000

0.00050

0.00303

0.009813

0.02340

0.0470

 

 

0

53

8

83

24

 

 

 

 

 

 

 

Пример 4.3. Решить задачу из примера 4.1 первым улучшенным методом Эйлера

(4.7).

Р е ш е н и е

 

Стартуем из начальной точки x0

= 0 , y0 = 0 и рассчитаем значение y1 / 2 в узле

x1 / 2 = x0

+ h / 2 =0.05 по формулам (4.4)

 

y

= y

0

+

h

 

f (x

0

, y

0

) = 0 +

0.1

(0 +0)2 = 0

. Затем определим величину правой части

 

 

1 / 2

 

 

 

2

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(величину производной от решения) в середине интервала [x0 , x1 ]

f (x

 

, y

1 / 2

) = (0 + 0.05)2 = 0.0025 . Окончательно рассчитаем значение функции в

1 / 2

 

 

 

 

 

 

 

 

 

 

 

 

 

узлеx1

y1 = y0

+ hf (x1 / 2 , y1 / 2 ) = 0 +0.1* 0.0025 = 0.00025 .

Аналогично получим решение в остальных узлах. Продолжая вычисления и вводя обозначение ∆yk = hf (xk +1/ 2 , yk +1/ 2 ) , получаемые результаты занесем в таблицу.

Таблица 4.5

k

xk

yk

yk +1 / 2

yk

yист

εk

0

0.0

0.0000000

0.00000000

0.0002500

0.0000000

0.0000000

 

 

00

0

00

00

00

 

 

 

 

 

 

 

1

0.1

0.0002500

0.00075250

0.0022726

0.00033467

0.8467E-

 

 

00

31

32

2

04

 

 

 

 

 

 

 

2

0.2

0.0025226

0.00457340

0.0064807

0.00271003

0.1874E-03

 

 

 

 

 

 

 

16

www.uchites.ru

 

 

32

25

62

6

 

 

 

 

 

 

 

 

3

0.3

0.0090033

0.013777548

0.01323341

0.00933625

0.3329E-

 

 

93

3

0

0

03

 

 

 

 

 

 

 

4

0.4

0.0222368

0.031150999

0.02315062

0.02279321

0.5564E-

 

 

04

8

8

9

03

 

 

 

 

 

 

 

5

0.5

0.0453874

 

 

0.04630249

0.9151E-03

 

 

32

 

 

0

 

 

 

 

 

 

 

 

Решением задачи является табличная функция (оставлены 5 значащих цифр в каждом числе)

Таблица 4.6

k

0

1

2

3

4

5

 

 

 

 

 

 

 

xk

0.00000

0.10000

0.20000

0.30000

0.40000

0.5000

 

 

0

00

00

00

00

 

 

 

 

 

 

 

yk

0.00000

0.00025

0.002522

0.00900

0.022236

0.0453

 

 

0

6

33

8

87

 

 

 

 

 

 

 

Пример 4.4. Решить задачу из примера 4.1 методом Рунге-Кутты 4-го порядка

(4.10).

Р е ш е н и е

Вычислим значения вспомогательных величин K10 = hf (x0 , y0 ) = 0.1(0 + 0)2 = 0 ;

y01 = y0

+

1

K10 = 0 +

 

1

0 = 0

 

 

 

 

 

 

 

2

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

K20

= hf (x0

+

1

 

h, y0

+

1

 

K10 ) = 0.1(0 +

1

* 0 +0 +

1

* 0.1)2

= 0.00025 ;

2

2

2

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y02 = y0

+

1

K20 = 0 +

 

1

 

0.00025 = 0.000125

 

 

 

 

2

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

K30

= hf (x0

+

1

h, y0

+

1

 

K20 ) = 0.1(0 +

1

 

* 0.00025 + 0 +

1

* 0.1)2 = 0.000251251 ;

 

2

 

2

 

2

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

17

www.uchites.ru

y03 = y0 + K30 = 0 + 0.000251251 = 0.000251251

K40 = hf (x0 + h, y0 + K30 ) = 0.1(0 + 0.000251251 + 0 + 0.1)2 = 0.001005031 ;

Найдем приращение функции на первом интервале

y0

=

1

(K10 + 2K20 + 2K30 + K40 ) =

1

(0 + 2 * 0.00025 + 2 * 0.000251251 + 0.001005031) = 0.000334588

 

 

 

6

 

6

 

и значение функции в первом узле

y1

= y0 + ∆y0

= 0 +0.000334588 = 0.000334588 ;

Аналогично получим решение в остальных узлах.

Таблица 4.7

k/i

xk

yki

Kik

yk

θ k

yист

εk

0/

0.0

0.000000

0.000000

 

 

0.000000

0.00000

1

 

0

000

 

 

 

00

 

 

 

 

 

 

 

 

0/

0.05

0.000000

0.0002500

 

 

 

 

2

 

0

00

 

 

 

 

 

 

 

 

 

 

 

 

0/

0.05

0.0001250

0.0002512

 

 

 

 

3

 

 

52

 

 

 

 

 

 

 

 

 

 

 

 

0/

0.1

0.0002512

0.0010050

0.0003345

0.0050

 

 

4

 

5

31

89

06

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1/1

0.1

0.0003345

0.0010067

 

 

0.0003346

0.8301E-

 

 

89

03

 

 

7

07

 

 

 

 

 

 

 

 

1/

0.15

0.0008379

0.0022752

 

 

 

 

2

 

41

08

 

 

 

 

 

 

 

 

 

 

 

 

1/

0.15

0.0014721

0.0022943

 

 

 

 

3

 

93

83

 

 

 

 

 

 

 

 

 

 

 

 

1/

0.2

0.0026289

0.0041058

0.0023752

0.01511

 

 

4

 

72

50

89

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

18

www.uchites.ru

2/

0.2

0.0027098

0.0041091

 

 

0.0027100

0.1573E-

1

 

78

29

 

 

36

06

 

 

 

 

 

 

 

 

2/

0.25

0.0047644

0.0064904

 

 

 

 

2

 

43

92

 

 

 

 

 

 

 

 

 

 

 

 

2/

0.25

0.0059551

0.0065513

 

 

 

 

3

 

24

03

 

 

 

 

 

 

 

 

 

 

 

 

2/

0.3

0.0092611

0.0095642

0.0066261

0.0255

 

 

4

 

81

48

61

35

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3/

0.3

0.0093360

0.0095688

 

 

0.0093362

0.2103E-

1

 

39

79

 

 

50

06

 

 

 

 

 

 

 

 

3/

0.35

0.0141204

0.0132583

 

 

 

 

2

 

79

72

 

 

 

 

 

 

 

 

 

 

 

 

3/

0.35

0.0159652

0.0133930

 

 

 

 

3

 

25

55

 

 

 

 

 

 

 

 

 

 

 

 

3/

0.4

0.0227290

0.0178699

0.0134569

0.0365

 

 

4

 

94

89

54

04

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4/

0.4

0.0227929

0.0178753

 

 

0.0227932

0.2259E-

1

 

93

91

 

 

19

06

 

 

 

 

 

 

 

 

4/

0.45

0.0317306

0.0232064

 

 

 

 

2

 

89

46

 

 

 

 

 

 

 

 

 

 

 

 

4/

0.45

0.0343962

0.0234639

 

 

 

 

3

 

16

69

 

 

 

 

 

 

 

 

 

 

 

 

4/

0.5

0.0462569

0.0298396

0.0235093

0.0483

 

 

4

 

62

67

15

06

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

0.5

0.0463023

 

 

 

0.0463024

0.1823E-

 

 

08

 

 

 

90

06

 

 

 

 

 

 

 

 

19

www.uchites.ru

Решением задачи является табличная функция (оставлены 5 значащих цифр в каждом числе)

Таблица 4.8

k

0

1

2

3

4

5

 

 

 

 

 

 

 

xk

0.0000

0.1000

0.200000

0.300000

0.400000

0.500000

 

0

 

 

0

 

 

 

 

 

 

 

 

 

yk

0.0000

0.0003345

0.0027098

0.0093360

0.0227929

0.0463023

 

0

89

78

39

93

08

 

 

 

 

 

 

 

Пример 4.5. На интервале [0,1] c шагом h=0.2 решить задачу Коши методом Рунге-Кутты 4 порядка.

(x2 +1) y′′ = 2xy

y(0) =1

y(0) = 3

Численное решение сравнить с аналитическим решением yист (x) = −x3 +3x +1.

Р е ш е н и е

Аналогично (4.18-4.21) введением новой переменной z = y′ решение исходной начальной задачи для дифференциального уравнения второго порядка сводится к решению системы двух дифференциальных уравнений первого порядка.

y' = z

z' = 2xz+x2 1

20

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