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

а15 / Числ_мет_лабораторный_практикум_ч2_78_87

.pdf
Скачиваний:
0
Добавлен:
31.05.2026
Размер:
466.46 Кб
Скачать

Лабораторная работа № 15

Численное решение задачи Коши для обыкновенного дифферен-

циального уравнения

1. Задача Коши для обыкновенного дифференциального уравнения

Задачей Коши или задачей с начальным условием для обыкновенного дифференциального уравнения (ОДУ) первого порядка называется задача по-

строения решения уравнения (15.1)

du(x)

f (x,u) ,

(15.1)

dx

 

 

удовлетворяющего заданному начальному условию в некоторой точке x=a, т.е.

u(a) u0 .

(15.2)

В дальнейшем предполагается, что решение требуется построить на конечном промежутке (a,b], а функция f(x,y) определена и непрерывна в пределах этого промежутка.

В значительной части случаев, представляющих практический интерес, не удается получить решение задачи Коши в конечном виде. Поэтому для опреде-

ления приближенного решения уравнения (15.1) с начальным условием (15.2)

используются численные методы, основанные на замене производной неиз-

вестной функции u'(x) конечной разностью.

Проиллюстрируем общую идею на простейшем примере. Для переменной

x введем сетку ω (15.3), которую в дальнейшем считаем равномерной, т.е.

ωh={xn=a+nh, n=0, 1, 2, …, m}, где h=(ba)/m.

(15.3)

Заменив производную функции правой конечной разностью в точке x=xn,

получаем (15.4)

 

 

du(x)

 

 

u(xn 1 ) u(xn )

, n=0, 1, 2, …, m–1.

(15.4)

 

dx x xn

 

 

 

xn 1 xn

 

Подставляя (15.4) в исходное уравнение (15.1) имеем (15.5) 77

u(x

n 1

) u(x

n

)

 

 

 

 

 

 

 

 

 

 

 

 

x

n 1

x

n

 

 

 

 

 

 

 

 

 

f

x

n

,u(x

n

)

,

(15.5)

где xn=a+nh, n=0, 1, 2, …, m–1.

Переходя в (15.5) к точному равенству, получим систему разностных урав-

нений для сеточной функции y(xn) (n=0, 1, 2, …, m), определенной только в уз-

лах сетки (15.6)

y(x

n 1

) y(x

n

)

 

 

 

 

 

 

 

 

 

 

h

 

 

 

f x

n

,

 

 

y(x

n

 

)

,

(15.6)

где xn=a+nh, n=0, 1, 2, …, m–1.

В качестве значения сеточной функции y(x0) в точке x0 принимается начальное значение исходной функции u(a)=u0, т.е. y(x0)=u0.

При стремлении к нулю шага сетки, значения сеточной функции стремятся к точному решению дифференциального уравнения [3]. Таким образом, реше-

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

ния записи используется обозначение y(xn)=yn.

Если в уравнении (15.6) перенести в правую часть все члены, определен-

ные в точке xn, а в левой части оставить значение сеточной функции в точке xn+1, то получим рекуррентную формулу, связывающую значения неизвестной

функции в двух соседних точках сетки (15.7)

 

yn 1 yn hf xn , yn ,

y0 u0 , n=0, 1, 2, …, m–1.

(15.7)

 

 

 

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

тодом Эйлера. Метод Эйлера имеет погрешность первого порядка [3], т. е.

оценка погрешности метода n=|ynun| в точке xn дается неравенством nМ1h.

Здесь М1 – некоторая постоянная величина.

Существуют различные способы перехода от дифференциального уравне-

ния к разностному, отличающиеся числом и расположением точек сетки, в ко-

78

торых значения сеточной функции используются для аппроксимации диффе-

ренциального уравнения. В тех случаях, когда для повышения точности ап-

проксимации применяются промежуточные точки отрезка [xn, xn+1], соответ-

ствующие методы принято называть многоэтапными. Наиболее известным се-

мейством многоэтапных методов являются методы Рунге-Кутта. Расчетные формулы для четырехэтапного метода Рунге-Кутта, имеют вид (15.8) [3]

y0 u0 ,

yn 1

k1,n

k

2,n

 

k

3,n

 

k

4,n

 

yn 16 (k1,n

hf xn

, yn ,

 

 

 

h

,

hf x

n

 

 

 

2

 

 

 

 

 

 

 

 

h

,

hf x

n

 

 

 

2

 

 

 

 

 

hf x

 

h, y

n

 

 

 

2k2,n 2k3,n k4,n ) ,

y

 

 

k

 

 

n

 

1,n

 

,

 

 

2

 

 

 

 

 

 

y

 

 

k

2,n

 

 

n

 

 

,

 

 

2

 

 

 

 

 

 

n k3,n .

 

 

(15.8)

Четырехэтапный метод Рунге-Кутта имеет погрешность четвертого поряд-

ка с оценкой [3] n=|ynun|≤М2h4.

Если для аппроксимации уравнения используются несколько узлов сетки,

то соответствующий метод называется многошаговым. На практике часто ис-

пользуется семейство многошаговых методов, называемых методами Адамса.

Расчетная формула для трехшагового метода Адамса имеет вид [3] (15.9)

y

y

 

 

h

23 f x

, y

16 f x

, y

 

5 f

n

 

n 1

n 1

 

 

12

n

n

n 1

 

 

 

 

 

 

 

 

 

 

 

 

y0=u0.

x

,

n 2

 

y

n 2

 

,

(15.9)

Для начала вычислений методом Адамса необходимо использовать начальное условие y0=u0 в точке x0 и, применяя метод Рунге-Кутта, найти зна-

чение сеточной функции y1 и y2 в точках x1 и x2. Трехшаговый метод Адамса имеет погрешность третьего порядка [3] n=|ynun|≤М2h3.

79

2. Практическая оценка погрешности решения ОДУ. Правило Рунге

Оценку погрешности приближенного решения можно выполнить, сравни-

вая значения сеточной функции, полученные с различными шагами сетки, на правом конце промежутке, т.е. в точке x=b. Если вычисления выполняются на двух сетках, у которых шаг различается в два раза, то оценка погрешности в со-

ответствии с правилом Рунге имеет вид (15.10) [2]

2m

y2m

ym

.

(15.10)

2

n

1

 

 

 

 

Здесь ym – значение сеточной функции на правом конце отрезка [a,b], получен-

ное для шага сетки h, т.е. при разбиении на m частичных отрезков, y2m – значе-

ние сеточной функции на правом конце отрезка, полученное со значением шага сетки h/2, т.е. при разбиении на 2m частичных отрезков, а 2m – оценка погреш-

ности для значения y2m.

Показатель степени n выбирается в зависимости от порядка малости по-

грешности, присущей численному методу. Например, для метода Эйлера n=1,

для семейства четырехэтапных методов Рунге-Кутта n=4, а для трехшагового метода Адамса n=3.

3. Оформление результатов вычислений

Результаты вычисления сеточной функции размещаются в таблице 15.1.

Таблица 15.1

Решение ОДУ методами Эйлера, Рунге-Кутта и Адамса

 

 

Метод Эйлера

 

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

 

Метод

 

 

 

 

Адамса

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

xn

f(xn,yn)

yn

k1,n

k2,n

k3,n

k4,n

yn

yn

 

 

 

 

 

 

 

 

 

 

0

x0

f(x0,y0)

y0

k1,0

k2,0

k3,0

k4,0

y0

y0

1

x1

f(x1,y1)

y1

k1,1

k2,1

k3,1

k4,1

y1

y1

2

x2

f(x2,y2)

y2

k1,2

k2,2

k3,2

k4,2

y2

y2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

80

 

 

 

 

m-1

xm-1

f(xm-1,ym-1)

ym-1

k1,m-1

k2,m-1

k3,m-1

k4,m-1

ym-1

ym-1

m

xm

 

ym

 

 

 

 

ym

ym

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

При заполнении таблицы следует иметь в виду, что вычисление следую-

щего значения неизвестной функции основано на ее предыдущем значении.

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

точной функции и независимой переменной, расположенных в предшествую-

щей строке (строках). Например, в методе Эйлера для вычисления значения y1

используются и f(x0,y0). Аналогично в методе Рунге-Кутта для вычисления зна-

чения y1 используются y0 и k1,0, k2,0, k3,0, k4,0. В трехшаговом методе Адамса y0

определяется из начальных условий, а для значений функций y1 и y2 использу-

ются результаты метода Рунге-Кутта. Значение y3 определяется на основе y0, y1, y2 и т.д.

4.Задание для самостоятельного выполнения

1.Для двух разбиений отрезка [a,b], границы которого указаны в варианте за-

дания, с m=10 и m=20, вычислить приближенное решение соответствующе-

го ОДУ, с заданным начальным условием, используя методы Эйлера, Рунге-

Кутта и Адамса см. (15.7), (15.8) и (15.9).

2.Вычисления выполнять с четырьмя десятичными знаками.

3.Оформить результаты расчетов в виде таблицы 15.1, адаптированной к условиям задачи.

4.Оценить значения погрешностей сеточных функций, используя правило Рунге.

5.Построить и включить в отчет графики сеточных функций, полученных различными методами для m=20.

81

5. Пример выполнения задания

Задание

1.Для двух разбиений отрезка [0,4] с m=10 и m=20 вычислить приближенное решение уравнения u'=(2–x)2/u с начальным условием u(0)=1, используя ме-

тоды Эйлера, Рунге-Кутта и Адамса.

2.Вычисления выполнять с четырьмя десятичными знаками.

3.Оформить результаты расчетов в виде таблицы 15.1, адаптированной к условиям задачи.

4.Оценить значения погрешностей сеточных функций, используя правило Рунге.

5.Построить и включить в отчет графики сеточных функций, полученных различными методами для m=20.

Вычисления выполняются в соответствии с расчетными формулами (15.7),

(15.8) и (15.9). Отдельно заполняется табл. 15.1 для значения m=10 и m=20. Во всех методах y0=1 из начального условия. В методе Адамса значения сеточной функции y1 и y2 равны соответствующим величинам, полученным в методе Рун-

ге-Кутта.

Таблица 15.2

Решение ОДУ методами Эйлера, Рунге-Кутта и Адамса для m=10

 

 

Метод Эйлера

 

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

 

 

Метод

 

 

 

 

 

Адамса

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

x

f (x

, y

)

y

n

k

k

2,n

k

k

4,n

y

n

y

n

т

n

n

 

 

1,n

 

3,n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

 

 

4

 

1

1,6

0,7200

0,9529

0,5243

 

1

 

1

1

0,4

0,9846

 

2,6

0,5356

0,3597

0,3748

0,2519

1,9117

1,9117

2

0,8

0,4810

2,9938

0,2518

0,1657

0,1687

0,1042

2,2878

2,2878

3

1,2

0,2009

3,1862

0,1041

0,0574

0,0579

0,0254

2,4586

2,7228

4

1,6

0,0490

3,2666

0,0254

0,0063

0,0063

0,0000

2,5186

2,7905

5

2

 

 

0

3,2862

0

0,0063

0,0063

0,0253

2,5271

2,8140

 

 

 

 

 

 

 

 

 

82

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

2,4

0,0487

3,2862

0,0252

0,0565

0,0562

0,0988

2,5355

2,8226

7

2,8

0,1936

3,3057

0,0987

0,1513

0,1498

0,2099

2,5938

2,8757

8

3,2

0,4256

3,3831

0,2098

0,2750

0,2719

0,3394

2,7456

3,0160

9

3,6

0,7204

3,5534

0,3391

0,4064

0,4022

0,4676

3,0194

3,2728

10

4

 

3,8415

 

 

 

 

3,4234

3,6550

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Таблица 15.2

Решение ОДУ методами Эйлера, Рунге-Кутта и Адамса для m=20

 

 

Метод Эйлера

 

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

 

 

Метод

 

 

 

 

 

Адамса

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

x

f (x

, y

n

)

y

n

k

k

2,n

k

k

4,n

y

n

y

n

т

n

 

 

 

1,n

 

3,n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

0

 

 

 

4

 

1

0,8

0,5157

0,5740

0,4117

 

1

 

1

1

0,2

 

1,8

 

1,8

0,4140

0,3262

0,3344

0,2695

1,5652

1,5652

2

0,4

1,1852

2,16

0,2696

0,2212

0,2239

0,1846

1,8993

1,8993

3

0,6

0,8177

2,3970

0,1846

0,1525

0,1537

0,1265

2,1234

2,1973

4

0,8

0,5624

2,5606

0,1265

0,1034

0,1039

0,0840

2,2773

2,3523

5

1

0,3741

2,6730

0,0840

0,0668

0,0671

0,0523

2,3815

2,4614

6

1,2

0,2329

2,7479

0,0523

0,0396

0,0397

0,0289

2,4488

2,5283

7

1,4

0,1288

2,7944

0,0289

0,0200

0,0200

0,0128

2,4888

2,5680

8

1,6

0,0567

2,8202

0,0128

0,0072

0,0072

0,0032

2,5091

2,5881

9

1,8

0,0141

2,8316

0,0032

0,0008

0,0008

 

0

2,5165

2,5955

10

2

 

 

 

0

2,8344

0

0,0008

0,0008

0,0032

2,5176

2,5966

11

2,2

0,0141

2,8344

0,0032

0,0071

0,0071

0,0127

2,5186

2,5976

12

2,4

0,0564

2,8372

0,0127

0,0197

0,0197

0,0283

2,5260

2,6048

13

2,6

0,1264

2,8485

0,0283

0,0383

0,0382

0,0495

2,5460

2,6242

14

2,8

0,2227

2,8738

0,0495

0,0621

0,0619

0,0756

2,5845

2,6617

15

3

0,3427

2,9183

0,0756

0,0901

0,0899

0,1052

2,6466

2,7224

16

3,2

0,4821

2,9868

0,1052

0,1212

0,1208

0,1372

2,7368

2,8106

 

 

 

 

 

 

 

 

 

 

83

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

17

3,4

0,6357

3,0833

0,1372

 

0,1538

0,1533

0,1700

2,8579

2,9290

 

 

18

3,6

0,7974

3,2104

0,1700

 

0,1867

0,1862

0,2027

3,0114

3,0795

 

 

19

3,8

0,9615

3,3699

0,2026

 

0,2188

0,2183

0,2342

3,1978

3,2625

 

 

20

4

 

3,5622

 

 

 

 

 

3,4163

3,4772

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Оценка абсолютной погрешности

 

 

 

 

 

 

Оценка абсолютной погрешности решения 2m, полученного для m=20 на

правом конце отрезка выполняется с помощью соотношения (15.10).

 

 

 

Метод Эйлера

2m≤0,3.

 

 

 

 

 

 

 

 

 

Метод Рунге-Кутта 2m ≤0,0005.

 

 

 

 

 

 

 

Метод Адамса

2m ≤0,03.

 

 

 

 

 

 

Графики сеточных функций

6. Варианты заданий

Номер

 

Уравнение

 

y(0)

a

b

варианта

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.

u x 2u

 

1

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

2.

u x2

u

 

1

0

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

84

 

 

 

3.

u

x u

 

 

 

 

 

 

 

 

 

u x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

u

 

 

1

 

 

sin(x)

 

u

 

 

4.

cos(x)

cos(x)

 

 

 

 

 

 

 

 

 

 

u

6 (x 1)u

 

 

 

 

5.

 

(x 1)

2

 

 

 

 

 

 

 

 

 

 

 

 

 

u x u

 

 

 

u

 

 

 

 

6.

(x 0,2)

 

 

 

 

 

 

 

 

 

 

 

 

u

 

 

1

 

 

 

 

 

u

0,25u

2

 

 

 

 

 

 

 

 

 

 

7.

(x 0,1)

2

 

 

 

 

(x 0,1)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

8.

u 1 sin(x u)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 u

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

9.

u

2x 1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

u u xu

 

 

 

 

 

 

 

10.

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11.

u 3u x

3

u

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 u

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

12.

u

x

2

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13.

u u sin(2x)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

14.

u xu 2xu

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

15.u u sin(2x)

 

 

 

u

 

 

 

u

16.

u

 

 

xe

x 1

 

 

 

 

 

 

 

 

 

 

x

1

 

 

 

 

 

 

 

 

 

u

xu

 

 

 

17.

x

1

 

 

 

 

 

 

 

 

 

 

 

 

18.

u 1 sin(1,5x u)

 

 

 

 

 

 

 

 

 

1 u

 

 

 

 

 

 

 

2

 

 

19.

u

x

3

1

 

 

 

 

 

 

 

 

 

 

 

 

 

1 u

2

 

 

 

 

 

 

 

 

20.

u

(x 1)u

 

 

 

 

 

 

85

2

0

5

1

0

1

4

0

4

5

0

3

3

0

2

1

0

4

2

0

4

1

0

5

2

0

1

2

0

4

1

0

3

1

0

3

1

0

3

1

0

1

1

0

3

2

0

4

3

0

3

1

0

5

 

 

 

21.

22.

23.

24.

25.

 

xu

2

u

 

x

2

1

 

 

 

 

 

 

2 u

 

 

 

 

 

 

 

2

 

 

 

 

 

u

(x 2)

2

u

 

 

 

 

 

 

 

 

 

 

 

 

u (2 u)tg(x)

 

 

u 1 sin(2x u)

 

u

1

 

 

 

 

u

u

 

 

 

 

 

 

 

2

 

(x 0,1)

2

 

(x 0,1)

 

 

 

 

 

0,5

0

2

5

0

5

1

0

5

1

0

4

3

0

1

 

 

 

86

Соседние файлы в папке а15