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

Информатика и интегрированные прикладные системы

.pdf
Скачиваний:
0
Добавлен:
24.11.2025
Размер:
10.46 Mб
Скачать

где n – наивысший порядок производной, определяет порядок уравнения.

Решением ОДУ называется функция y = y(x), которая после ее подстановки в уравнение (7.1) обращает его в тождество.

Общее решение ОДУ имеет вид:

y y(x,C1,C2,...,Cn)

(1.3.7.2)

где C1, C2, …, Cn – постоянные интегрирования.

Частное решение получается из общего при конкретных значениях Ci, i 1, n . Эти значения определяются из n дополнительных условий. В качестве таких условий могут быть заданы значения функции и ее производных при некоторых значениях аргумента x,

иначе говоря, в некоторых точках.

1.3.7.1. Метод Эйлера (метод Рунге-Кутта 1-го порядка).

Разобьем [a, b] на n равных частей – элементарных отрезков, x0, x1,…,xn будем называть узлами сетки, h = (b-a)/n - шаг сетки.

 

x a i h ,

i

 

;

 

a ,

x b .

Очевидно, что

0,1,..., n

x

 

i

 

 

 

0

 

n

Заменим в уравнении (7.1) yв точке xi её приближенной оценкой – отношением приращений (это следует из определения производной):

 

 

yi

 

yi 1 yi

 

 

yi 1 yi

yi

 

 

 

 

 

 

 

 

 

 

 

xi

xi 1 xi

 

h

Тогда получаем:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

yi 1 yi

f (x , y )

 

 

 

 

 

 

 

 

 

 

h

i

 

i

Отсюда формула Эйлера:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

yi 1 yi h f (xi , yi )

 

 

 

 

 

(1.3.7.1.1)

 

 

 

 

x a i h ,

 

i

 

 

 

0,1,..., n -1 – номер узла

i

 

 

 

 

 

 

 

 

 

 

 

 

211

Зная y0 в точке x0 (начальное условие) можно найти y1, затем, используя уже известные значения x1 и y1, вычислить x2 и y2 и так далее.

Если функция

 

f

 

M ,

df

 

M

 

,

df

 

M

 

для x a, b ,

y y

,Y

, то имеет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

dx

 

 

2

 

dy

 

 

3

 

0

 

 

 

 

 

 

 

 

 

 

 

место неравенство

y(xi ) yi 2MM4h eM3(xi x0) , 3

где M

 

M

 

M M

, h

max

h .

 

 

4

 

2

1 3

 

0 i N 1 i

Оценка имеет лишь теоретическое значение. На практике чаще всего пользуются

 

 

 

 

 

 

 

 

 

 

 

повторяют с шагом hi / 2 и

двойным пересчетом на ЭВМ: расчет на отрезке xi , xi 1

 

 

 

 

 

 

 

 

hi / 2 ) оценивают по формуле

погрешность более точного решения yi 1 (при шаге

 

 

 

 

 

 

 

 

 

yi 1

 

 

 

 

 

 

 

 

 

 

 

 

yi 1 y(xi 1)

 

yi 1

.

 

Рассмотрим геометрическую иллюстрацию метода Эйлера. В координатах (x,y)

отобразим известные данные: отрезок [a,b] на оси Х и начальное условие y0 – точка А с координатами (a, y0). Отрезок [a,b] разобьем на n равных частей, получим узлы равномерной сетки a = x0, x1, x2, … , xn = b. Вычислим значения первой производной искомой функции в точке А, используя координату этой точки и исходное уравнение (3)

y (x0 ) f(x0 , y0 ) tg 0

Полученное значение позволяет построить касательную к искомой функции в точке А. Эту касательную можно использовать для вычисления приближенного значения искомой функции в новом узле х1 (кривую y(x) заменяем на отрезком АВ на элементарном отрезке [x0, x1]).

212

 

 

 

 

y

 

 

 

 

 

 

 

 

 

 

y1

= y0

+ BC =

 

y2

 

 

 

 

 

 

 

 

 

 

y0

+ h*tg 0 =

 

 

 

 

 

 

B

 

 

 

 

 

y1

 

 

 

 

 

D

 

 

y=y(x)

 

 

 

 

 

 

 

 

 

 

 

 

 

y0

+ h*f(x0,y0)

 

 

А

0

 

C

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h

 

 

 

 

 

 

 

 

y0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

x

 

 

 

a=x0

 

 

x1

x2

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

b=xn

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рисунок (1.3.7.1.1). Геометрическая иллюстрация метода Эйлера.

Зная (x1,y1), можно аналогично получить новую точку (x2,y2) и т.д.

Из геометрической иллюстрации следует, что:

1. На каждом шаге есть погрешность (на рисунке это отрезок BD).

Погрешность тем больше, чем больше шаг.

2.Ошибка может накапливаться.

Формула Эйлера (3) имеет погрешность метода M O(h2)

Для практического выбора h с целью обеспечения заданной точности решения задачи применяется следующий прием.

Выполняются 2 расчета: с n и 2n узлами. Если полученные значения функции в во всех узлах отличаются не более чем на , задача считается решенной. Если нет, число узлов вновь удваивают и опять сравнивают полученные значения функций.

Таким образом, расчет продолжается до достижения условия

 

max

| yn y2n

|

 

 

 

 

i

i

 

 

i 1, n

 

 

 

 

 

(1.3.7.1.2)

Значение n может достигать большой величины – более 1000. Чтобы не печатать столько значений функции, в алгоритме решения ОДУ методом Эйлера нужно

213

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

значений, распределенных равномерно по всему отрезку.

Блок-схема

 

 

 

1

 

 

 

Входные данные:

 

 

 

 

 

 

 

 

h - шаг

 

 

 

 

 

Eiler

 

 

 

 

 

x – координата текущего узла

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y – значение функции в узле

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

c0=f(x,y)

 

 

 

 

y=y+c0h

 

 

 

 

 

x=x+h

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

Выходные данные:

 

 

 

 

Выход

x – координата узла

 

 

 

 

y – значение функции в новом узле

 

 

 

 

 

 

 

 

 

Пример Дано уравнение y 2y x 2

1

 

 

Найти решение для отрезка [0; 1], если y(0) = 1.

 

 

 

Выберем n = 10,

тогда шаг h =(1-0)/10 = 0,1.

 

 

 

 

 

 

 

 

 

 

 

 

 

1 2y - x

2

Запишем уравнение в каноническом виде y f (x, y)

 

Начальная точка x0 = 0, y0 = 1.

 

 

 

Вычислим первую точку

 

 

 

y

y

0

h f(x

0

; y

0

) 1 0,1 f(0; 1) 1 0,1 (1 2 1 02 ) 1 0,1 3 1,3

1

 

 

 

 

 

 

 

 

x1 = x0 + h = 0 + 0,1 = 0,1

 

 

 

Вычислим вторую точку

 

 

 

y2

y1

h f(x1; y1 ) 1,3 0,1 f(0,1;1,3) 1,3 0,1 (1 2,6

0,01) 1,3 0,1 3,59 1,659

x2 x1 h 0,1 0,1 0,2

Аналогично нужно вычислить еще восемь точек (выбрано n=10).

214

1

Начало

2

Ввод a, b, y, n

 

3

 

 

 

 

 

 

 

b a

 

 

 

 

 

 

 

 

 

 

h

 

 

 

 

n

 

 

 

 

 

 

 

 

n

 

x = a, k =

 

 

 

 

 

 

10

 

i = 0,

j = 0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

i = j

нет

 

 

 

 

 

 

 

 

 

да

5

Вывод i, x, y

6

j = j + k

7

Расчет

новой

точки

8

i = i + 1

нет 9

i > n

да

10

Конец

Исходные данные:

a – начальное значение аргумента; b – конечное значение аргумента; y – начальное значение функции; n – количество отрезков.

h – шаг сетки;

x – координата узла;

k – шаг по номеру печатаемого узла; i – номер узла;

j – номер печатаемого узла.

Eiler(h,x,y)

215

1.3.7.2. Модифицированный метод Эйлера

(метод Рунге-Кутта 2-го порядка).

Метод Эйлера-Коши

Пусть требуется найти решение задачи Коши:

 

 

y

 

f (x, y) , a x b , y(a) y0 .

 

 

 

 

 

Как и в методе Эйлера,

на отрезке a, b зададим конечное множество точек

x

N

, ( a x

x

... x

 

b ). По методу Эйлера-Коши вычисление приближенного

i

i 0

 

 

0

1

 

N

 

 

решения

 

yi y(xi )

проводится

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

приближение

 

 

 

 

 

hi f (xi , yi ) ,

затем находится более точное приближение

yi 1 yi hi

f (xi , yi ) f (xi 1,

.

2

Остаточный член на каждом шаге в методе Эйлера-Коши имеет порядок O(h3) .

Оценка погрешности может быть получена с помощью двойного пересчета на ЭВМ.

Расчет повторяют с шагом hi / 2 , и погрешность более точного решения yi (при шаге

hi / 2 ) оценивают приближенно:

y y(x )

 

 

1

 

 

y y

 

 

 

 

 

i

i

 

 

3

 

i

i

216

А- начальная точка.

L1- касательная к y(x) в точке А.

L2- касательная к у(х) в середине элементарного отрезка

L3 параллельно L2 через т. А

y

 

 

 

 

 

L1

 

 

 

_

 

 

 

 

 

L2

 

 

 

 

 

 

 

 

 

 

B

 

 

L3

 

 

 

 

 

 

 

 

 

 

 

y1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y1

А

 

C

 

 

 

 

 

 

у=у(х)

 

y0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h/2

 

h/2

 

 

x

 

 

 

 

 

 

 

 

 

 

0

x0

 

 

 

 

 

 

 

 

 

 

x1

 

 

 

 

Рисунок 1.3.7.2.1 Геометрическая иллюстрация модифицированного метода Эйлера.

Расчётные формулы:

y1 y0 h2 f (x0, y0) - значение функции в середине отрезка [x0,x1].

y1 y0 h f (x0 h2 , y1) - значение функции в конце отрезка [x0,x1].

Формула модифицированного метода Эйлера:

y

y

h f (x

 

h

, y

 

h

f (x , y ))

(1.3.7.2.1)

 

 

i 1

i

i

2

i

2

i i

 

где i = 0, 1, …., n-1 - номер узла; xi = a + i h - координата узла;

у0 = у(х0) - начальное условие.

Алгоритм решения ОДУ отличается от описанного ранее алгоритма метода Эйлера

(рис 3) только алгоритмом расчета новой точки.

Погрешность метода О(h3).

Усовершенствованный метод Эйлера-Коши можно еще более уточнить, применяя

итерационную обработку каждого значения yi . Вначале вычисляется

yi(0)1 yi hi f (xi , yi ) ,

217

а затем это приближение уточняется по формулам

 

 

 

 

 

 

 

y(k 1) y h / 2( f (x

, y(k)

) f (x , y )) .

 

 

 

 

 

 

 

 

 

 

 

i 1

 

 

 

i

i

 

 

 

i

1

i 1

i

i

 

 

 

 

 

 

Итерации

 

продолжают до

тех пор,

пока в

пределах

требуемой точности два

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(k 1)

 

 

 

(k)

 

 

 

 

 

(k)

последовательных

 

приближения

 

yi 1

 

и

yi 1

не совпадут.

После чего yi 1

принимается за приближенное значение y(xi 1) .

 

 

 

 

 

 

 

 

Пример. Решение ранее рассмотренного уравнения (пример 1.) модифицированным

методом Эйлера.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y- 2 y + x2

= 1,

 

x [0;1],

y(0) = 1.

 

 

 

 

 

 

 

 

 

 

 

Пусть n = 10 ,

h = (1 - 0)/10 = 0,1.

 

 

 

 

 

 

 

 

 

 

 

Начальная точка x0 = 0, y0 = 1.

 

 

 

 

 

 

 

 

 

 

 

 

 

Расчёт первой точки.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

y

 

h f(x

 

 

h

; y

 

 

h

 

f(x

 

; y

 

))

1 0,1 f(0

0,1

; 1

0,1

f(0; 1))

0

0

 

0

 

0

0

 

 

1

 

 

 

2

 

2

 

 

 

 

 

 

 

 

2

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 0,1 f(0,05; 1 0,05 (1 2 1 - 02 )) 1 0,1 f(0,05;

1,15)

 

 

 

1 0,1 (1 2 1,15

0,05 2 ) 1,32975

 

 

 

 

 

x1

x0

h 0,1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Аналогично расчёт следующих точек: 2, 3, ... ,10.

 

 

1

 

 

 

Входные данные:

 

 

 

 

 

 

 

 

 

 

М_Eiler

h - шаг

 

 

 

 

 

 

 

x – координата текущего узла

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y – значение функции в узле

 

2

 

 

 

 

=f(x,y)

 

 

 

 

c0

 

с1=f(x+h/2,y+h/2 c0)

 

 

 

 

y=y+c1h

 

 

 

 

x=x+h

 

 

 

 

 

 

 

 

Выходные данные:

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

x – координата узла

 

 

 

Выход

 

 

 

y – значение функции в новом узле

Рисунок 1.3.7.2.2. Алгоритм расчёта новой точки модифицированным методом Эйлера:

218

1.3.7.3. Метод усредненных точек

Пусть требуется найти решение задачи Коши

y f (x, y) , a x b , y(a) y0 .

Как и в методе Эйлера, на отрезке a, b зададим конечное множество точек

xi iN 0 , ( a x0 x1 ... xN b ). По усовершенствованному методу ломаных сначала вычисляются промежуточные значения:

x

 

x

h

,

y

 

y

h

f

,

i

1

i

2

 

i

1

i

2

i

 

2

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

а затем полагают

yi 1 yi hfi 12 ,

 

 

 

 

 

 

 

 

 

где f

1

f x

1

, y

1

.

i

 

 

 

i

 

i

 

 

2

 

2

2

В этом методе для повышения точности используется усреднённое значение производной на рассматриваемом отрезке:

 

 

 

 

 

 

 

h

 

yi 1

yi

h

yi

yi 1

yi

 

[f(x i , yi ) f(x i 1 , yi 1 )]

 

2

 

 

 

 

 

 

2

 

В приведённой формуле yi+1 входит в обе части уравнения и не может быть выражено явно. Чтобы обойти эту трудность, в правую часть, вместо yi+1 подставляется значение, рассчитанное по формуле Эйлера(4).

yi 1 yi h f(xi , yi )

Получаем формулу исправленного метода Эйлера:

 

y

h

 

 

f (x , y ) f (x , y

h f (x , y ))

 

 

 

 

 

y

,

i 0, n 1

2

 

 

i 1

i

 

i i

i 1 i

i i

 

 

 

 

(1.3.7.3.

1)

где i = 0, 1, …., n-1 - номер узла;

219

xi = a + i h - координата узла;

у0 = у(х0) - начальное условие.

Погрешность исправленного метода Эйлера М = О(h3).

Алгоритм решения ОДУ отличается от описанного ранее алгоритма метода Эйлера

(рис 3) только алгоритмом расчета новой точки.

1 С_Eiler

2

c0 = f(x, y) x = x + h

с1 = f(x, y + h c0) y = y + h (c0 + c1)/2

3

Выход

Входные данные: h - шаг

x – координата текущего узла y – значение функции в узле

Выходные данные: x – координата узла

y – значение функции в новом узле

Рисунок 1.3.7.3.1. Алгоритм расчёта новой точки исправленным методом Эйлера:

y

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

_

 

 

 

 

 

 

 

 

L3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B

 

 

 

 

 

 

 

 

 

L2

 

y1

 

 

 

 

 

 

 

 

 

 

 

 

L4

 

 

y1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y = y(x)

 

 

 

 

 

 

 

 

 

y0

А

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h

 

 

 

 

 

 

 

 

 

0

x0

 

x1

 

 

 

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

L1- касательная к у(х) в начальной точке А, с tg 0 = f(x0, y0).

220