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

ЭВМ_Семестр4_МетодПособие

.pdf
Скачиваний:
25
Добавлен:
05.06.2015
Размер:
2.47 Mб
Скачать

y (x0 ) f (x0 , y0 )

Затем дается малое приращение аргумента x на величину шага интегрирования h и интегральная кривая на участке (x0 , x0 h) заме-

няется своей касательной в точке ( x0 , y0 ) . Уравнение

этой касатель-

ной имеет вид:

 

 

 

 

 

 

 

 

 

 

 

 

y y0 y (x0 )( x x0 ) f (x0 , y0 )( x x0 )

 

 

 

Следовательно, в

пределах

 

участка

(x0 , x0 h) интегральная

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

 

 

 

 

 

 

 

 

 

 

 

y y0 f (x0 , y0 )( x x0 ) .

 

 

 

 

Значение решения при x x0

h приближенно равно

 

 

 

 

 

 

 

 

y(x0 h) y0 hf (x0 , y0 )

 

 

 

 

Найденная точка интегральной кривой x0 h, y(x0 h) служит

начальной точкой на следующем шаге интегрирования от x1 x0

h

до

 

x2 x1 h и т. д.

На k ом шаге

интегрирования от xk 1

до

xk

xk 1

h имеем:

 

 

 

 

 

 

 

 

 

 

 

 

 

y(xk ) y(xk 1 ) hf (xk 1, yk 1 )

 

 

 

 

 

 

 

 

 

 

 

 

При малом шаге интегри-

y

 

 

 

 

 

 

 

 

рования ошибки от замены кри-

 

 

 

 

 

 

 

 

 

вой

отрезком

касательной

в

 

 

 

 

 

 

 

 

 

пределах каждого шага невели-

y2

 

 

 

 

 

ε2

 

 

ки и найденная ломаная близка

 

 

 

 

 

 

 

y1

 

 

ε1

 

 

 

к искомой интегральной кривой

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y(x1)

 

 

 

 

 

 

y=y(x)

 

(см. рис. 8.1) .

 

 

 

 

 

 

 

 

 

 

 

y0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Этот метод является мето-

 

 

 

 

 

 

 

 

 

дом первого порядка точности,

0 x0

x1=x0+h x2=x1+h

x

 

 

 

 

 

 

 

 

 

 

 

 

 

 

т.е.

на

k ом шаге интегриро-

Рисунок 8.1 - Схема Эйлера

вания в разложении функции в

 

ряд Тейлора в окрестности начальной для шага точки ( xk 1, yk 1 )

61

удерживаются члены, содержащие x в степени не выше первой. Это разложение имеет вид:

 

 

) y ( x

 

 

x x

k 1

... y(n) ( x

 

 

( x x

k 1

)n

y( x) y( x

k 1

k 1

)

 

k 1

)

 

 

...

1!

 

n!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Сохраняя в разложении первые два члена, получим выражение y(x) y(xk 1 ) y (xk 1 )( x xk 1 ) ,

которое на первом шаге интегрирования тождественно формулам Эйлера.

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

M h , где M Kmax * xk x0 Kmax * nh

Усовершенствованный метод Эйлера

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

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

62

Первый вариант усовершенствованного метода Эйлера.

 

 

 

 

 

 

 

Угловой коэффициент пря-

y

 

 

 

мой,

по которой надо двигаться

y

 

 

 

 

 

 

от

начальной точки (xk 1, yk 1 )

 

ε

 

 

ε1МЭ

y=y(x

 

 

 

 

 

 

 

 

 

 

 

к

конечной точке ( xk , yk ) инте-

 

 

 

 

y(x1)

 

 

 

гральной

кривой

на

данном

y1МЭ

 

 

 

 

 

 

k ом шаге интегрирования,

 

 

 

 

 

ра-

y0

 

 

 

вен

значению производной

к

 

 

 

 

0 x0

x0+0.5hx1=x0+h

x

этой кривой, в средней точке от-

 

 

 

 

 

 

 

 

Рисунок 8.2 - Схема 1 варианта усо-

резка [xk

1 , xk ].

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вершенствованного метода Эйлера

 

 

Для определения координат

 

 

 

 

 

 

этой точки применяется метод Эйлера с вдвое меньшим

шагом инте-

грирования. На

рис. 8.2 графически показана процедура получения

решения на первом шаге интегрирования.

 

 

 

 

 

Зная координаты начальной точки ( x0 , y0 ), вычислим значение

производной интегральной функции y y(x)

в этой точке по форму-

ле y f (x0 , y0 ) и с помощью метода Эйлера найдем координаты

точки интегральной кривой в середине интервала ( x0 , x1 ),

которая в

рамках допущений метода Эйлера лежит на пересечении касательной

к интегральной кривой в начальной точке и прямой x x0

0.5h .

 

Координаты средней точки равны x0 0.5h, y0

0.5hf (x0 , y0 ) .

Подставив

эти

координаты

в

правую

часть дифференциального

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

средней точке,

т.е. определим тангенс угла наклона

касательной к

интегральной кривой в средней точке. На рисунке 8.2 эта касательная

показана лучом со стрелкой.

 

 

 

 

 

 

 

 

 

Теперь из начальной точки ( x0 , y0 ) проведем прямую линию,

параллельную касательной в средней точке. Точка пересечения этой

63

прямой с прямой x x1 x0 h является искомой точкой интеграль-

ной кривой. Как видно из рисунка 8.2, усовершенствованный метод Эйлера существенно уменьшает модуль погрешности интегрирования в пределах каждого шага (погрешность метода Эйлера на рисунке характеризуется отрезком , а погрешность модифицированного метода Эйлера - отрезком 1МЭ ). Затем описанная процедура повторяется для второго, третьего и т.д. шагов интегрирования.

В общем случае значение решения в конце k ого шага инте-

грирования определяется по формулам:

y(xk ) y(xk 1 ) hf xk 1 0.5h, y xk 1 0.5h , y(xk 1 0.5h) y(xk 1 ) 0.5hf xk 1 , yk 1 .

Если подставить в уравнениях вторую формулу в первую, то получим:

 

y(xk ) y(xk 1 ) hf xk 1

0.5h, yk 1 0.5hf xk 1 , yk 1

 

При вычислении усовершенствованным методом Эйлера значе-

 

 

 

 

 

 

ния

интегральной кривой в

y

(a)

(c)

 

конце

каждого шага

инте-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(b)

 

грирования правильно

учи-

 

 

 

 

 

 

тываются все члены разло-

 

 

 

 

 

 

 

 

 

 

 

 

жения

искомой функции в

 

 

 

 

 

 

ряд

 

Тейлора,

содержащие

 

 

 

y=f(x)

 

шаг интегрирования в степе-

y0

 

 

 

 

 

 

 

 

 

 

ни

не выше второй. Опре-

 

 

 

 

 

 

0 x0

x1=x0+h

 

 

x

деляющий погрешность вы-

 

 

 

 

 

 

числений на одном шаге ин-

Рисунок 8.3 - Схема 2 варианта усовер-

тегрирования первый из от-

шенствованного метода Эйлера

 

 

 

 

 

 

 

 

 

 

 

 

 

 

брошенных в

ряде Тейлора

членов пропорционален кубу шага, т.е.

K

2

h3 . Суммируя погреш-

 

 

 

 

 

 

 

 

 

 

 

ности интегрирования на отрезке [x0 , xk ], получим следующую оцен-

64

ку для погрешности численного интегрирования модифицированным методом Эйлера

M 2 h2 , где M 2 K2 max * xk x0 K2 max * nh

Второй вариант усовершенствованного метода Эйлера.

Угловой коэффициент прямой, по которой надо двигаться от начальной точки (xk 1 , yk 1 ) к конечной точке (xk , yk ) интегральной кривой, на k ом шаге интегрирования равен среднему арифметическому значений производной к этой кривой, в начальной и конечной точках отрезка [xk 1 , xk ].

Для «предварительного» определения координат конечной точки применяется метод Эйлера. На рисунке 8.3 графически показана процедура получения решения на первом шаге интегрирования. Определив производную интегральной функции в начальной точке и проведя касательную к интегральной кривой функции в этой точке (прямая (а) на рис 8.3), определим приближенно с помощью метода Эйлера координаты точки на интегральной кривой в конце данного шага интегрирования: x0 h, y0 hf (x0 , y0 ) (это точка пересечения касательной с прямой x x1 x0 h ). Теперь вычисляем производ-

ную интегральной функции в этой найденной точке.

Эта производная определяет тангенс угла наклона касательной к интегральной кривой в найденной точке (прямая (b) на рис. 8.3). Проводим прямую (c), угловой коэффициент которой равен среднему арифметическому угловых коэффициентов прямых (a) и (b) (т.е. среднему арифметическому производных искомой функции в начальной и конечной точках данного шага интегрирования). Теперь определяем уточненные значения координат точки интегральной кривой в конце шага интегрирования как пересечение прямой, параллельной прямой (c) и проходящей через начальную точку интервала

65

( x0 , y0 ) , с прямой x x1 x0 h . Найденные координаты использу-

ем в качестве начальных условий при выполнении следующего шага интегрирования, и т.д.

В общем случае значение решения в конце k-го шага интегрирования определяется по формулам:

y(xk ) y(xk 1 ) 0.5 f xk 1, yk 1 f xk , yk h yk y(xk 1 ) hf xk 1, yk 1

В виде одной формулы k ый шаг интегрирования описывается

соотношением:

y(xk ) y(xk 1 ) 0.5 f xk 1, yk 1 f xk 1 h, yk 1 hf xk 1, yk 1 h.

В обоих вариантах усовершенствованного метода Эйлера интегральная кривая в пределах шага интегрирования приближается одинаково с точностью до величин порядка h2 .

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

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

Это семейство одношаговых методов численного решения задачи Коши, объединенных выбором некоторого усредненного

66

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

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

В практических расчетахнакомпьютерах наибольшее распространение получил предложенный Рунге (1895г) и Куттой (1901г) метод численного интегрирования четвертого порядка точности (в разложении учитываются четыре члена, определяющие изменение функции по отношению к ее начальному на данном шаге значению). Значение решения дифференциального уравнения на k ом шаге интегрирования вычисляется по формулам:

 

y(x

 

) y(x

 

)

h

k 2k

 

2k

 

k

 

,

 

k

k 1

 

2

3

4

 

 

 

6

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

где

k1 f (xk 1, yk 1 ),

k2 f (xk 1

0.5h, yk 1 0.5hk1 ),

k3 f (xk 1 0.5h, yk 1 0.5hk2 ),

k4 f (xk 1

h, yk 1 hk3 ),

При использовании метода Рунге-Кутта на каждом шаге интегрирования правая часть дифференциального уравнения вычисляется

четыре

 

раза. Величины k1, k2 , k3 , k4 и коэффициенты при них

1

6

, 1

3

, 1

3

, 1

6

обеспечивают при вычислении значения функции в кон-

 

 

 

 

 

це каждого шага интегрирования точный учет в ряде Тейлора членов, содержащих степени h до четвертой включительно.

67

Погрешность вычислений на одном шаге с помощью метода Рунге-Кутта пропорциональна пятой степени шага интегрированияK 32 h 5 . Суммируя погрешности интегрирования на отрезке

[x0 , xk ], получим следующую оценку для погрешности численного интегрирования методом Рунге - Кутта

M

 

h4

 

 

K

 

 

 

x

 

K

 

 

 

3

, где M

3

3 max

*

x

k

 

3 max

*

nh

 

 

 

 

 

 

0

 

 

 

 

Оценка погрешности вычислений с помощью численных методов на практике проводится по правилу Рунге (часто называемому правилом двойного счета). Решение задачи Коши проводится дважды: один раз с шагом h и получают решение yh (x) , а второй раз обычно с шагом 2h и получают решение y2h (x). В произвольной точке интегрирования x xk абсолютная погрешность решения с ша-

гом h по аналогии с формулой абсолютной погрешности при вычислении определенного интеграла вычисляется по формулам:

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

абсЭ

 

уh (xk ) у2h (xk )

 

 

 

 

 

уh (xk )

у2h (xk )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

21

1

 

 

 

 

 

 

 

 

 

 

 

 

усовершенствованный метод Эйлера:

 

 

 

абсМЭ

 

уh (xk ) у2h (xk )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

22 1

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

абсРК

 

 

уh (xk ) у2h (xk )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

4 1

 

 

 

 

 

 

 

 

 

 

 

 

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

68

ную погрешность к максимальному значению полученной функции на отрезке [x0 , xk ].

Примеры решения задач Пример 8.1

Аналитическое решение дифференциального уравнения

y 2x y, y(0) 4, (0 x 3) с использованием функции dsolve(параметр1,параметр2) пакета MATLAB, где параметр1 - правая часть дифференциального уравнения, параметр2 – начальные условия задачи Коши.

» [y]= dsolve ('Dy=2*t-y','y(0)=4') ‘ вызов функции

Решение y = 2*t-2+6*exp(-t)

Пример 8.2

Используя функцию ode45(параметр1,параметр2, параметр3) пакета MATLAB, где параметр1 – имя функции с правой частью дифференциального уравнения, параметр2 – интервал аргумента решения, параметр3 – начальное значение функции задачи Коши, найти приближенное решение задачи Коши по методу Рунге-Кутта.

Создать функцию для правой части дифференциального уравнения в виде m-файла например, с именем odefun

Function dydt=odefun(t,y)

dydt=2*t-y;

вызвать функцию MATLAB в окне команд

> [t,y]=ode45('odefun',[0 3],4);

69

ode45 – одношаговые явные методы Рунге-Кутта 4-го и 5-го порядка. Это классический метод, рекомендуемый для начальной пробы решения. Во многих случаях он дает хорошие результаты;

f=inline('2*t-2+6*exp(-t)');

t,y,f(t)

plot(t,y);ylabel('y(t)');grid

Результаты расчетов

Рисунок 8.4 - График функции

t

y

f

 

 

 

0

4.0000

4.0000

 

 

 

0.0800

3.6987

3.6987

 

 

 

0.3411

2.9470

2.9480

 

 

 

0.6222

2.4631

2.4649

 

 

 

0.9092

2.2333

2.2355

 

 

 

1.2068

2.2061

2.2085

 

 

 

1.5068

2.3410

2.3433

 

 

 

1.8068

2.5966

2.5987

 

 

 

2.1068

2.9415

2.9434

 

 

 

2.4068

3.3526

3.3543

 

 

 

2.7068

3.8128

3.8142

 

 

 

3.0000

4.2976

4.2987

 

 

 

70