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

Пособие_Бедарев_Федорова_Федорченко

.pdf
Скачиваний:
92
Добавлен:
09.04.2015
Размер:
1.64 Mб
Скачать

, AB и AC соответственно и поиску тангенса угла наклона этих прямых вместо тангенса угла наклона касательной

(рис. 2.4).

Касательная

fi–1

 

 

 

 

fi+1

 

 

B

C

 

 

 

fi– 1

f_

f±

f+

 

A

 

 

 

xi– 1

xi

 

xi+1

Рис. 2.4. Геометрическая иллюстрация разностного дифференцирования

Рисунок 2.4 показывает, что наиболее точно поведение производной (касательной) в точке xi передает прямая AC, угол наклона которой определяет формула центральной разности f±. Изучим вопрос о порядке точности (аппроксимации) этих формул. Разложим f(x) в ряд Тейлора в окрестности точки xi:

 

 

 

 

 

f

i +1

= f

 

+ hf

 

′+

h2

f

′′+

h3

f ′′′+ ... ,

 

 

 

 

 

 

 

 

i

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

i

 

 

6

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f

i −1

= f

 

hf

 

′+

h2

 

f ′′−

h3

f ′′′+ ... .

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

2

 

i

 

 

6

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Подставив эти разложения в (2.1), получаем

 

 

 

 

 

(xi

) =

f

 

+ hf ′+

h2

f

′′+

h3

 

f ′′′+ ... − f

 

 

 

 

 

 

 

 

2

 

 

i

 

 

 

i

 

 

 

h

 

h

 

'

 

i

 

 

2

 

i

6

 

 

i

 

 

 

= fi′+

fi′′+

 

fi′′′+ ...

f+

 

 

 

 

 

 

 

 

h

 

 

 

 

 

 

 

 

 

 

2

 

6

Здесь fi– первая производная, которую необходимо найти, а

h

fi′′+

h2

fi′′′+ ... – погрешность, с которой вычисляется произ-

2

 

6

 

водная. Видим, что первый, самый большой член погрешности имеет порядок h, значит, при измельчении шага сетки погрешность будет уменьшаться пропорционально h в степени 1. Поэтому говорят, что формула имеет первый порядок точности.

60

Нетрудно показать, что формула (2.2) также имеет первый порядок аппроксимации.

Покажем, что формула центральной разности имеет второй порядок точности. Подставим в (2.3) разложения для fi+1 и fi–1 :

 

 

f

 

+

hf

+

h2

f

′′

h3

f

′′′ ...

f

 

+

hf

h2

f

′′

h3

f

 

′′′ ...

h2

 

 

 

2

6

 

2

6

 

'

(xi ) =

 

i

i

 

i

+

i

+

 

i

i

 

i

+

 

i

+

 

f ±

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= fi′+

 

fi′′′+ ...

 

 

 

 

 

 

 

 

 

 

 

2h

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Погрешность

 

вычисления

 

производной

 

пропорциональ-

на h2, значит, формула (2.3) имеет второй порядок аппроксимации. Таким образом, мы подтвердили вывод, который сделан на основании рис. 2.4.

Используя понятие конечных разностей, можно получить формулы для аппроксимации производных высших порядков. Покажем это на примере формулы для аппроксимации второй производной:

f '(x )

( f )i ( f )i−1

 

fi+1 fi fi + fi−1

 

=

fi+1 − 2 fi + fi−1

 

=

h

 

h

 

.

 

 

 

 

 

 

i

h

 

 

h

 

 

h2

 

 

 

 

 

Можно доказать, что эта формула имеет второй порядок точности (доказать самостоятельно).

Пример 2.2. Вычислить приближенные значения производных от функции f(x) = sin(x), заданной на отрезке [0, π/2] c шагом π/6 с разным порядком точности.

Построим таблицу значений функции и вычислим ее производные точно: f′(x) = сos(x) и с использованием формул

(2.1) – (2.3).

Шаг

аргумента

h = π/6 ≈ 0.524,

sin(0) =

= сos(π/2) = 0, sin(π/6) = сos(π/3) = 0.5,

sin(π/3) = сos(π/6) ≈

≈ 0.866, sin(π/2) = сos(0) = 1.

 

 

 

 

 

 

 

 

 

 

 

x

 

f(x)

f′(x)

 

f+(x)

f′_(x)

f±(x)

 

точно

 

 

 

 

 

 

 

 

0

 

0

1

 

0.954

0.524

 

0.5

0.866

 

0.698

0.954

0.827

1.047

 

0.866

0.5

 

0.256

0.698

0.478

1.571

 

1

0

 

0.256

 

 

 

61

 

 

 

 

Анализ результатов, содержащихся в таблице, показывает, что формулы «разность назад» и «разность вперед» дают значительные погрешности в вычислении производных, что можно объяснить довольно грубой сеткой, т.е. большим шагом h. В то же время центральная разность, несмотря на грубый шаг, позволяет получить значение производной с хорошей точностью. Однако эту формулу нельзя применять

вкрайних точках таблицы.

5.6.Метод неопределенных коэффициентов

Для того, чтобы получить формулы численного дифференцирования в любой точке сетки с любым порядком точности, используют метод неопределенных коэффициентов. Покажем, как работает этот метод на примере вывода формулы для первой производной в крайней левой точке таблицы. Представим приближенно в точке х = х0 первую производную таблично заданной функции в виде линейной комбинации ее значений в узлах:

f (x

0

) a f0 + b f1 + g f2

,

(2.4)

 

h

 

 

 

 

 

 

где α, β, γ – неопределенные коэффициенты, которые выберем из условия, чтобы эта формула имела второй порядок аппроксимации, т.е. главный член погрешности был равен c×h2.

Разложим f1, f2 в ряд Тейлора и подставим эти выражения в формулу (2.4):

 

 

 

f

 

=

f

 

 

+

 

hf ¢

 

h 2

 

f

¢¢

+

h 3

f

¢¢¢

+

... ,

 

 

 

 

 

 

 

 

 

 

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0 +

2

0

 

6

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f

 

=

f

 

 

+

2hf ¢

+

2h 2

f ¢¢

+

 

4h 3

f

¢¢¢ ... .

 

 

 

 

 

 

 

 

2

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

0

 

3

 

 

 

0

+

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h

2

 

 

 

h3

 

 

 

 

 

f ¢(x0 )+ c × h2 »

 

 

[ α f0 + β f0

+ hf0¢ +

 

 

 

f

0¢¢

+

 

 

f0¢¢¢

+

 

 

 

h

2

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4h3

 

 

 

 

 

] =

 

 

 

 

 

 

 

 

 

 

+ γ

f

0

 

+ 2hf ¢ + 2h

2 f

¢¢

+

 

 

 

 

 

 

 

 

 

f ¢¢¢

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

0

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f

0

+ β

+ γ ) + f

 

¢+

 

2γ ) + hf

 

 

β

 

 

+

 

 

 

2

 

β

 

=

 

 

 

 

 

¢¢

 

 

 

 

 

 

 

 

+ h

 

f ¢¢¢

 

+

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

h

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

62

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Приравняв коэффициенты, стоящие перед соответствующими степенями h, получим систему линейных уравнений:

 

 

 

α + β + γ = 0

 

β + =1 ,

 

 

β

+ = 0

 

 

2

 

 

из которой найдем искомые коэффициенты:

α = -

3

, β = 2, γ = -

1

.

 

 

 

 

 

2

 

2

 

 

 

Подставив коэффициенты в (2.4), получим формулу:

 

f (x0 ) + ch2

− 3 f0 + 4 f1 f2

.

(2.5)

 

 

 

 

 

2h

 

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

f ¢(xN )+ ch2 »

3 fN - 4 fN −1 + f N −2

.

(2.6)

 

 

2h

 

Пример 2.3. Вычислить приближенные значения производных от функции f(x) = sin(x), заданной на отрезке [0, p/2] c шагом p/6 при x = 0 и x = p/2 сo вторым порядком точности. Для вычисления производной используем таблицу значений функции из Примера 2.2. Точные значения производной: f (x0 ) = cos(x0 ) = 1 , f (xN ) = cos(xN ) = 0 . Производная, вычисленная по формуле первого порядка точности, дает большую погрешность в последней точке. Вычислим производные по формулам (2.5) и (2.6):

f ¢(x ) = - 3 f0 + 4 f1 - f2

=

- 3×0 + 4 ×0.5 - 0.866

=1.083 .

 

 

0

2h

 

 

1.047

 

 

 

 

 

 

 

f ¢(xN ) »

3 fN - 4 fN −1 + fN −2

=

3 ×1 - 4 × 0.866 + 0.5

= 0.034 .

 

 

 

2h

 

 

1.047

 

 

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

63

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

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

6.1. Постановка задачи

 

Требуется найти решение ОДУ первого порядка

 

 

dy

= f (x, y).

(2.7)

 

 

 

dx

 

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

y(x) = f (x, y) dx + C .

Для выбора конкретной интегральной кривой следует определить значение константы С, для чего достаточно задать при каком-либо значении x = x0 значение

y(x0 ) = y0 .

(2.8)

Поэтому задача Коши, или задача с начальными данными, позволяющая получить единственное решение уравнения (2.7), формулируется так: найти y(x) – решение уравнения (2.7) с начальным условием (2.8).

В случае точного решения ОДУ мы получаем аналитическое представление искомой функции. Несмотря на внешнюю простоту уравнения (2.7), решить его аналитически, т.е. найти общее решение y = y(x, C ) с тем, чтобы потом выделить из не-

64

го интегральную кривую y = y(x) , проходящую через точку (x0 , y0 ), удается лишь для некоторых специальных типов урав-

нений. Поэтому большое значение приобретают приближенные способы решения начальных задач ОДУ. При численном же решении мы будем искать приближенное решение в узлах расчет-

ной сетки x

= x + ih, i = 0,1, ..., n, с шагом h =

xn x0

. То есть

 

i

0

n

 

 

 

 

вместо непрерывной зависимости y(x) мы найдем приближенные значения в узлах сетки yi = y(xi).

Для построения численных методов решения ОДУ проинтегрируем уравнение на отрезке [xi , xi +1 ], получим

xi+1

 

yi +1 yi = f (x, y) dx .

(2.9)

xi

Чтобы найти все значения yi , нужно каким-то образом вычис-

лить интеграл, стоящий в правой части (2.9). Применяя различные квадратурные формулы, будем получать методы решения задачи (2.7), (2.8) разного порядка точности.

6.2. Метод Эйлера

Если для вычисления интеграла в (2.9) воспользоваться простейшей формулой левых прямоугольников первого порядка

 

xi+1

 

 

 

f (x, y) dx = hf (xi , yi

) ,

 

 

xi

 

 

то получается явная формула Эйлера:

 

 

 

yi +1 = yi + hf (xi , yi ), i = 0,1, ..., n −1,

(2.10)

имеющая первый порядок аппроксимации.

 

Реализация

метода. Поскольку x0 , y0 , f (x0 , y0 )

известны,

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

применяя (2.10),

определим

все yi:

y1 = y0 + hf (x0 , y0 ) , y2 = y1 + hf (x1, y1 ), … .

Геометрическая интерпретация метода Эйлера приведена на рис. 2.5. Пользуясь тем, что в точке x0 известно решение

65

y(x ) = y

 

и значение его производной y(x

 

) =

dy

 

 

 

=

0

0

 

0

 

 

dx

 

x= x0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= f (x0 , y0 ), можно записать уравнение касательной к графику

искомой функции y = y(x) в точке f (x0 , y0 ): y = y0 + f (x0, y0 )(xx0 ) . При достаточно малом шаге h ордината

y1 = y0 + hf (x0 , y0 ) этой касательной, полученная подстановкой в правую часть значения x1 = x0 + h , должна мало отличаться от ординаты y(x1 ) решения y(x) задачи Коши. Следовательно, точка (x1, y1 ) пересечения касательной с прямой x = x1 может быть приближенно принята за новую начальную точку. Через эту точку снова проведем прямую y = y1 + f (x1, y1 )(x x1 ) , которая приближенно отражает поведение касательной к y(x) в точке (x1, y(x1 )). Подставляя сюда x2 = x1 + h (т.е. пересечение с прямой x = x2 ), получим приближенное значение y(x) в точке

x2 : y2 = y1 + hf (x1, y1 ) и т.д. В итоге для i -й точки получим формулу Эйлера.

Рис. 2.5. Геометрическая интерпретация метода Эйлера

66

Если в (2.9) использовать формулу правых прямоугольников, то получим неявный метод Эйлера:

yi +1 = yi

+ hf (xi +1 , yi +1 ) , i = 0,1, ..., n −1.

(2.11)

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

неизвестного значения

yi +1 y(xi +1 ) по известному

yi y(xi )

требуется решать в общем случае нелинейное уравнение. Неявный метод Эйлера также имеет первый порядок аппроксимации.

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

Вданном методе вычисление yi +1 состоит из двух этапов:

 

~

 

= yi + hf

(xi , yi ) ,

 

 

yi +1

 

 

 

h

 

 

~

 

yi +1 = yi

+

 

[ f (xi

, yi

) + f (xi +1, yi +1 )].

(2.12)

2

 

 

 

 

 

 

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

6.4. Методы Рунге– Кутты

Идея построения явных методов Рунге – Кутты р-го порядка заключается в получении приближений к значениям y(xi +1 ) по

формуле вида yi +1 = yi

+ hϕ (xi , yi , h) , где

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

q

 

 

(h),

 

 

 

 

 

 

 

 

 

ϕ(xi , yi , h) = cnkni

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n =1

 

 

 

 

 

 

 

 

 

 

 

 

 

k i (h) = f (x , y ),

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

i

i

 

 

 

 

 

 

 

 

 

k i (h) = f (x + α

2

h, y + β k i

(h)),

 

 

 

 

2

 

 

i

 

 

i

 

21 1

 

 

 

 

 

 

 

k i

(h) = f (x + α

h, y

i

+ β

31

k i (h)+ β

32

k i

(h)),

 

3

 

i

 

3

 

 

 

1

 

 

2

 

 

 

(h) = f (x + α

 

 

 

 

 

(h) + ... + β

 

 

 

(h)).

k i

q

h, y + β

 

k i

 

 

k i

q

 

i

 

i

 

q1 1

 

 

 

 

 

q,q −1 q −1

 

 

 

 

 

 

 

67

 

 

 

 

 

 

 

 

 

 

 

Здесь αn , βnj , 0 < j < n q – некоторые фиксированные числа

(параметры), которые подбирают таким образом, чтобы получить нужный порядок аппроксимации p. Как правило, для каждого p существует не одна схема Рунге– Кутты порядка p, а целое параметрическое семейство. Так, схемы Рунге– Кутты второго порядка точности образуют однопараметрическое семейство

k1i = f (xi , yi ),

yi+1 =

i

=

 

+

h

 

+

k2

f xi

 

, yi

 

 

 

 

 

2a

] .

y + h[(1 − a)k i

+ ak i

i

 

 

1

2

 

 

h i

 

 

 

k1

,

(2.13)

 

2a

 

Выделим из семейства методов (2.13) два наиболее простых

и часто используемых частных случая.

При

a =

1

получаем

 

 

 

 

 

 

 

 

 

 

 

 

2

 

формулы

= f (x , y

), k i

= f (x + h, y

 

+ hk i

),

 

 

k i

i

 

 

1

 

 

i

 

i

 

2

i

1

(2.14)

 

 

 

 

 

h

 

 

 

 

y

i+1

= y

 

+

[k i

+ k i ], i = 0,1, 2, ... ,

i

 

 

 

2

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

которые совпадают с формулами модифицированного метода Эйлера (2.12). При a = 1 выводим новый простой метод:

k i

= f (x , y

), k i

= f

x +

h

, y

 

+

h

k i

,

 

i

 

1

i i

2

 

 

i

2

 

2

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

yi+1 = yi

+ hk2i ,

 

i = 0,1, 2, ... ,

 

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

 

 

Схема Рунге –

 

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

p = 4 можно получить один из вариантов метода:

 

k = f (x

, y

),

 

k

2

= f x

i

+

h

, y

i

+

hk1

,

 

 

 

 

1

 

i

 

i

 

 

 

 

 

 

 

 

 

2

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

h

 

hk2

 

 

 

 

= f (xi + h, yi + hk3 ),

 

k3 =

f xi +

 

 

, yi +

 

 

 

,

 

k4

(2.15)

2

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

i+1

= y

 

+

h

 

(k

+ 2k

 

+ 2k

 

+ k

 

), i = 0,1, 2, ...

 

i

 

 

2

3

4

 

 

 

6

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

68

 

 

 

 

 

 

 

 

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

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

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

dy

= ϕ(x, y, z)

 

 

 

(2.16)

dx

(x, y, z)

 

dz

 

 

 

 

dx

 

 

с начальными условиями y(x0 ) = y0 , z(x0 ) = z0 . Обобщим фор-

мулы явного метода Эйлера (2.4) для этой системы, записав схему для каждого уравнения (2.16):

yi +1 = yi + hϕ(xi , yi , zi ),

zi +1 = zi + hψ (xi , yi , zi ).

Модифицированный метод Эйлера (2.12) примет вид:

~

= yi + hϕ(xi , yi , zi ),

 

 

 

yi +1

 

 

 

~

= zi + hψ (xi , yi , zi ),

 

 

 

zi +1

 

 

 

 

 

 

h

 

 

 

~

~

 

yi +1

= yi +

 

 

 

[ϕ(xi

, yi , zi

)+ ϕ(xi

, yi +1

, zi +1 )],

2

 

 

 

 

 

 

 

 

 

= zi +

h

[ψ (xi

 

)(xi

~

~

)],

zi +1

 

 

 

, yi , zi

, yi +1

, z+1i

2

 

 

 

 

 

 

 

 

 

 

а схема Рунге – Кутты четвертого порядка точности (2.15):

yi+1 = yi + h (k1 + 2k2 + 2k3 + k4 ), 6

zi+1 = zi + h (l1 + 2l2 + 2l3 + l4 ), 6

k1 = ϕ(xi , yi , zi ), l1 (xi , yi , zi ),

 

 

= ϕ

 

 

+

h

 

 

+

hk1

 

 

+

hl1

 

 

 

 

+

h

 

+

hk1

 

 

+

hl1

 

k

2

 

x

 

, y

i

 

, z

i

 

, l

2

 

x

 

, y

 

, z

i

 

,

 

 

 

 

 

 

 

 

i

 

2

 

 

2

 

 

2

 

 

i

 

2

i

 

2

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

69