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

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

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

 

 

= ϕ

 

x +

h

 

 

+

hk2

 

 

+

hl2

 

 

 

x +

h

 

+

hk2

 

 

+

k

3

 

 

, y

i

 

, z

i

 

, l

3

 

 

, y

i

 

, z

i

 

 

 

 

 

 

 

i

2

 

 

2

 

 

2

 

 

i

2

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k4 = ϕ(xi + h, yi + hk3 , zi + hl3 ), l4 (xi + h, yi + hk3 , zi + hl3 ).

hl

2 ,

2

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

Также аналогичным способом можно решить ОДУ высокого порядка. Например, рассмотрим задачу Коши для уравнения второго порядка

d 2 y

= f

x, y,

dy

, y(x

 

) = y

 

,

dy

(x

 

) = z

 

.

 

 

0

0

 

0

0

dx2

 

 

 

 

 

dx

 

 

 

dx

 

 

 

 

 

 

 

 

Введем обозначение z(x) = dy . Тогда исходная задача Коши для dx

уравнения второго порядка сводится к следующей задаче для системы двух ОДУ первого порядка:

dy

= z,

 

 

 

 

 

dx

 

dz

= f (x, y, z),

 

 

 

dx

 

y(x0 ) = y0 , z(x0 ) = z0.

Можно заметить, что эта запись эквивалентна системе (2.16) при ϕ (x, y, z) = z и ψ (x, y, z) = f (x, y, z). Таким образом, полученная

система решается вышеописанным способом при помощи одного из методов решения задачи Коши.

Пример 2.4. Найти решение задачи Коши

d 2 y

+ 2

dy

+ y(x) = x, y(0) = 1,

dy

(0) = 0 на отрезке [0,1].

dx2

dx

 

 

 

dx

Пусть известно точное решение данного ОДУ: y(x) = 3ex + 2xex + x − 2 .

Проверим, что точное решение удовлетворяет уравнению:

dy

= −ex − 2xex + 1,

d 2 y

= −ex + 2xex

,

 

 

dx

dx2

 

 

 

70

 

d 2 y + 2 dy + y(x) =

dx2 dx

= −ex + 2xex + 2(ex − 2xex +1)+ 3ex + 2xex + x − 2 = x,

y(0) = 3e0 + 0 + 0 − 2 = 1, dy (0) = −e0 + 1 = 0. dx

Введем функцию z(x) = dy и получим следующую задачу dx

Коши для системы двух ОДУ первого порядка:

dy

= z,

dz

= −2z y + x, y(0) = 1, z(0) = 0.

 

 

dx

dx

Используем формулы явного метода Эйлера:

yi +1 = yi + hzi ,

 

 

zi +1 = zi + h(− 2zi yi + xi ),

 

 

y0 = 1,

z0 = 0 ,

 

 

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

 

~

= yi

+ hzi ,

 

 

 

yi+1

 

 

 

~

= zi

+ h(− 2zi yi + xi ),

 

 

zi+1

 

 

 

 

 

 

h

 

~

 

 

yi +1 = yi

+

 

 

 

[zi

+ zi +1 ],

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

h

[(

~

~

+ xi +1 )],

zi +1 = zi

+

 

 

 

2zi yi + xi )+ (− 2zi +1

yi +1

2

 

xi +1 = xi

+ h,

 

 

 

 

и четырехэтапного метода Рунге – Кутты:

y

i+1

= y

 

+

 

h

(k + 2k

 

+ 2k

 

+ k

 

),

 

 

 

 

 

 

 

i

 

 

 

2

3

4

 

 

 

 

 

 

 

 

 

 

 

6

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

z

i+1

= z

 

 

+

h

 

(l + 2l

 

 

+ 2l

 

+ l

 

 

),

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

6

 

 

1

 

2

 

 

 

 

 

3

 

 

 

4

 

 

 

 

 

 

 

 

 

 

k1 = zi , l1 = −2zi yi + xi ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k

 

= z

 

+

hl1

 

, l

 

= −2 z

 

+

hl1

y

 

+

hk1

 

+ x +

h

,

2

i

 

2

i

 

i

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

2

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

71

 

 

 

 

 

 

 

 

 

 

 

 

 

hl2

 

 

 

hl2

 

 

 

 

hk2

 

h

k

3

= z

i

+

 

, l = −2 z

i

+

 

 

 

 

y

+

 

 

+ x +

 

,

 

 

 

 

 

 

 

 

 

 

2

 

 

 

2

 

 

 

 

 

 

2

 

2

 

k4 = zi + hl3 , l4 = −2(zi + hl3 )

(yi + hk3 )+ xi + h.

 

 

Решение удобно оформить в виде таблиц.

Схема Эйлера:

k

xi

yi

zi

Точное

Погреш-

решение

ность

 

 

 

 

0

0

1

0

1

0

1

0.2

1

– 0.2

0.983685

0.016315

2

0.4

0.96

– 0.28

0.947216

0.012784

3

0.6

0.904

– 0.28

0.905009

0.001009

4

0.8

0.848

– 0.2288

0.866913

0.018913

5

1

0.80224

– 0.14688

0.839397

0.037157

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

k

xi

yi

 

zi

Погрешность

0

0

1

 

 

0

 

0

 

 

 

 

 

 

 

 

 

1

0.2

1

 

 

– 0.18

0.016315

 

 

 

 

 

 

 

 

 

2

0.4

0.962

 

 

– 0.244

0.014784

 

 

 

 

 

 

 

 

 

3

0.6

0.9108

 

– 0.2342

0.005791

 

 

 

 

 

 

 

 

 

4

0.8

0.8615

 

– 0.178

0.005413

 

 

 

 

 

 

 

 

 

5

1

0.823432

 

– 0.09441

0.015965

 

 

 

 

 

 

 

 

 

 

Схема Рунге–

Кутты:

 

 

 

 

 

xi

 

 

yi

 

 

zi

 

Погрешность

0

 

 

1

 

0

 

0

 

0.2

 

 

0.9837

 

 

– 0.146

 

1.79E

– 05

0.4

 

 

0.9472

 

 

– 0.207

 

2.76E

– 05

0.6

 

 

0.905

 

 

– 0.207

 

3.18E

– 05

0.8

 

 

0.8669

 

 

– 0.168

 

3.25E

– 05

1

 

 

0.8394

 

 

– 0.104

 

3.09E

– 05

 

 

 

 

 

72

 

 

 

 

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

вышает 3.25 ×10−5 .

6.6. Жесткие ОДУ

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

Пример 2.5. Решить задачу Коши

y' = –100 y + 100, y(0) = 2.

Точным решением задачи является функция y = 1+e–100 x, имеющая очень большой градиент вблизи точки x = 0. Действительно, y = 2 при x = 0 (в силу начальных данных), однако уже при малых положительных значениях x решение близко к своему асимптотическому значению y = 1. Получим численное решение этой задачи явным методом Эйлера

(2.10) с шагом h = 0.02.

yi +1 = (1 -100h)yi +100h = 2 - yi , i = 0, 1, ..., n -1, y0 = 2 .

Решение будет представлять собой последовательность y(0) = 2, y(0.02) = 0, y(0.04) = 2, y(0.06) = 0, ...

что не соответствует точному решению. При h = 0.01 первая же вычисленная точка y1 = 1 попадает на асимптоту решения, и последующие вычисления не изменяют значения приближенного решения. Существенно более мелкий шаг, например h = 0.001, позволит получить вполне удовлетворительное соответствие между приближенным и точным решением. Однако вычисления с таким мелким шагом потребуют больших вычислительных затрат.

y(0) = y0 = 2, y(0.001) y1 = 1.9, y(0.002) y2 = 1.81, ...

73

Воспользуемся неявным методом Эйлера:

y

=

100h + yi

, i = 0, 1, ..., n -1, y

0

= 2

 

i +1

 

1 +100h

 

 

 

 

 

с шагом h = 0.1. Получим последовательность

y(0) = 2, y(0.1) =1.091, y(0.2) =1.008, y(0.3) =1.0007, ...

Даже при очень крупном шаге h = 0.99 приближенное решение, полученное неявным методом Эйлера, оказывается качественно правильным. y0 = 2, y1 = 1.01, y2 = 1.0001, ...

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

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

dy

= αy, α < 0,

 

α

 

>>1, x ³ 0, y(0) = y0

(2.17)

 

 

 

dx

 

 

 

 

 

с точным решением y = y0eαx . Поскольку при α < 0 точное ре-

шение является убывающим, для численного решения должна выполнятся цепочка неравенств

yi+1 £ yi £ yi−1 £ ... £ y0 ,

известных из теории разностных схем как принцип максимума. Методы, решения которых удовлетворяют этим условиям, называются А-устойчивыми методами.

Запишем для уравнения (2.17) явный метод Эйлера и двухэтапный метод Рунге – Кутты.

 

 

 

yi +1 = yi + hαyi = (1 +αh)yi = λ1 yi ,

y

= y

i

+ hα (y

i

+αy

i

h 2) = (1 +αh +α 2h2 2)y = λ y .

i +1

 

 

 

 

i 2 i

Используя эти формулы, можно последовательно выразить

каждое yi через предыдущее, тогда

 

 

 

yi +1 =

i +1

y0

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

 

 

 

λ k

 

 

 

 

 

 

 

 

74

Для выполнения принципа максимума

 

 

 

 

 

i+1

 

 

 

 

 

 

 

необходимо

 

 

 

 

 

 

 

 

 

 

yi+1

 

 

 

≤ λk

 

 

 

y0

 

 

 

 

 

 

 

 

 

 

 

 

и достаточно, чтобы выполнялось условие 0 ≤ λk ≤ 1 . Отсюда сразу следуют ограничения на шаги интегрирования для явных методов. Например, для явного метода Эйлера h ≤ 1 α , для

двухэтапного метода Рунге – Кутты h ≤ 2α .

Теперь рассмотрим простейший неявный метод Эйлера для решения уравнения (2.17):

yi +1 = yi + hαyi +1 = yi (1 − αh) = λyi .

Можно видеть, что условие 0 ≤ λ ≤ 1 выполняется для любых α, следовательно, имеет место принцип максимума, т.е. неявный метод Эйлера не имеет ограничения по α на шаг интегрирования и является A-устойчивым. Неявный метод Эйлера может быть обобщен на систему жестких ОДУ (2.16).

Тема 7. Краевая задача для ОДУ второго порядка

Дано дифференциальное уравнение второго порядка

u′′ + p(t)u′ + g(t)u = f (t), t [a, b] . (2.18)

Здесь p(t), g(t), f (t) − заданные функции коэффициентов. Уравнение можно свести к системе двух ОДУ первого порядка:

u′ = f (t,u, v) ≡ v

 

v′ = g(t,u, v) ≡ − p(t)v g(t)u f (t) .

(2.19)

 

 

Для определения единственного решения необходимо задать два дополнительных условия на искомую функцию u(t). Если оба условия заданы в одной точке t = t0, то мы имеем задачу Коши, которая может быть решена методами, описанными в Теме 6. Допустим теперь, что два дополнительных условия поставлены в разных точках: x = a и x = b:

k1u(a) + k2u′(a) = A

 

m u(b) + m u′(b) = B ,

(2.20)

1

2

 

 

75

 

где A, B, k1, k2, l1, l2 – заданные константы. Задача (2.18), (2.20) называется краевой, для приближенного решения которой используются методы:

конечных разностей;

сведения краевой задачи к задаче Коши (стрельбы, дифференциальной прогонки, редукции);

балансов (конечных объемов);

коллокации;

проекционные (Галеркина);

вариационные (наименьших квадратов, Ритца);

проекционно-сеточные (конечных элементов).

Ниже рассмотрим некоторые из перечисленных методов.

7.1. Конечно-разностный метод

Введем на отрезке [a, b] разностную сетку (t0, t1, t2, ..., tM),

ti = a + τ · i, i = 0, 1, ..., M, τ = (b – a )/M, M – число точек разно-

стной сетки (параметр задачи). Вместо точного решения u(t) будем отыскивать приближенное решение в узлах разностной сетки: yi = y(ti). Используя формулы приближенного дифференци-

рования: u′′(t

) ≈

yi +1 − 2 yi + yi −1

,

u′(t

) ≈

yi +1 yi −1

, заменим исход-

τ 2

i

 

 

i

 

 

ное уравнение и краевые условия разностной схемой:

y

i +1

− 2 y + y

i −1

 

+ p(ti )

yi +1

yi −1

+ g(ti

 

= f (ti ), i = 1, ..., M ,

 

 

 

i

 

 

 

 

 

) yi

 

 

 

τ 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

k y + k

 

y1 y0

= A,

 

 

 

 

 

 

 

 

 

τ

 

 

 

 

 

 

 

 

1

0

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

m y + m

 

yM yM −1

= B.

 

 

 

 

 

 

 

 

 

 

 

1

M

 

 

 

2

 

τ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В итоге получаем следующую систему M + 1 линейных алгебраических уравнений на вектор неизвестных (y0, y1, y2, ..., yM):

С0y0 + B0 y1 = F0

Ai yi–1 Ciyi + Biyi+1 = Fi, i = 1, 2, ..., M – 1,

AMyM–1 CM yM = FM

76

где Ci = 2 – g(ti)τ 2, Ai = 1 – p(ti) · τ/2, Bi = 1 + p(ti) · τ/2, Fi = τ2f(ti),

C0 = k2 τk1, B0 = k2, F0 = A τ, CM = m2 + τm1, AM = m2, FM = – Вτ.

Выпишем систему в матричном виде:

C0

B0

0

 

0

 

...

 

 

C1

 

 

 

 

 

 

 

A1

B1

 

0

 

...

 

0

A

C

 

B

 

...

 

 

2

 

2

2

 

 

...

...

...

 

...

...

 

0

0

...

 

A

−1

C

M −1

 

 

 

 

 

M

 

 

0

0

....

 

0

 

AM

 

 

 

0

 

 

y

 

 

 

F

 

 

 

 

 

 

0

 

 

0

 

0

 

 

y1

 

 

F1

 

0

 

 

y

 

 

 

F

 

...

 

 

 

2

 

=

2

.

...

 

...

 

 

 

 

 

 

 

 

 

 

 

BM −1 yM −1

FM −1

C

M

 

y

M

 

 

F

 

 

 

 

 

 

M

 

Поскольку матрица СЛАУ имеет трехдиагональный вид, то система решается методом прогонки.

Метод прогонки является точным методом решения СЛАУ, следовательно, погрешность в приближенное решение была внесена на этапе замены исходных уравнений и краевых условий конечно-разностными соотношениями. Оценку погрешности метода можно провести, если вспомнить, что используемые формулы приближенного дифференцирования (центральная разность для первой производной и симметричная аппроксимация для второй производной) имеют второй порядок точности. В то же время при замене краевых условий (2.20) на разностные соотношения в приближенное решение вносится погрешность порядка τ (именно такую погрешность имеют формулы «разность вперед» и «разность назад»). Следовательно, суммарная погрешность аппроксимации уравнения и краевых условий будет пропорциональна τ. Однако в тех случаях, когда в краевые условия не входит производная, т.е. k2 = 0, l2 = 0, краевые условия для приближенного решения выполняются точно, и тогда метод имеет погрешность порядка τ2.

77

7.2. Метод стрельбы

Этот метод основан на сведении краевой задачи к задаче Коши для системы (2.19). Пусть краевые условия имеют вид:

u(a) = u0, u(b) = u1.

Для того, чтобы свести исходную краевую задачу к задаче Коши, необходимо в точке t = a задать дополнительное краевое условие u′(а) = v0. Величина v0 имеет геометрический смысл

тангенса α – угла наклона касательной к решению в начальной точке. Графическая иллюстрация метода стрельбы приведена на рис. 2.6.

u

 

 

B1

α1

 

 

u(t1)

 

 

u1

α

u(t)

 

 

u0

 

u(t2)

 

 

B2

 

α2

 

 

x

a

 

b

Рис. 2.6. Иллюстрация метода стрельбы

Задача Коши для системы (2.19) может быть решена, например, методом Рунге – Кутты. Поскольку решение задачи Коши зависит от выбора α, можно записать: u = u(t, α). Требуется подобрать значение α, обеспечивающее «попадание», т.е. выполнение условия u(t, α) = u1. Понятно, что при произвольном выборе α полученное решение может не удовлетворять краевому условию на правом конце отрезка t = b. Может быть получе-

но, что u(t, α1)½t=b = B1 > u1 («перелет») u(t, α1)½t=b = B2 < u1 («не-

долет») (см. рис. 2.6). Задачу подбора нужного угла α можно рассматривать как решение нелинейного алгебраического уравнения u(t, α)½t=b = u1, особенностью которого является то, что F(x), определяющая нелинейное уравнение, не задана явно, а определен только способ нахождения u(t, α)½t=b.

78

7.3. Метод коллокаций

Запишем краевую задачу для ОДУ второго порядка в операторном виде:

 

 

 

Lu = f (t) , l0u(a) = A , l1u(b) = B ,

 

(2.21)

где L =

d 2

+ p(t )

d

+ q(t ), l

 

= k + k

 

d

,

l = m + m

d

.

dt 2

 

 

 

 

 

 

dt

0

1

2 dt

1

1

2 dt

Зададим на [a, b] некоторую систему базисных функций ϕ0(t), ϕ1(t), …, ϕn(t), таких, что ϕ0(t) удовлетворяет краевым условиям l0ϕ0 (a) = A , l1ϕ0 (b) = B, а остальные ϕk(t) удовлетворяют однородным краевым условиям l0ϕk (a) = 0 , l1ϕk (b) = 0 , k = 1, ..., n.

Представим приближенное решение задачи (2.21) в виде линейной комбинации базисных функций:

yn (t ) = ϕ0 (t )+ a1ϕ1 (t )+ a2ϕ2 (t )+ ... + anϕn (t )

(2.22)

с неизвестными пока коэффициентами a1, a2, ..., an. При этом yn(t) при любых значениях a1, a2, ..., an удовлетворяет краевым условиям. Подействуем на (2.22) оператором L. Функция

n

ψ (t, a1, a2 , ..., an ) = Lyn (t )- f (t ) = Lϕ0 (t )- f (t )+ ak Lϕk

k =1

называется невязкой уравнения. Если ψ = 0, то yn(t) – точное решение задачи (2.21). Подберем параметры a1, a2, ..., an, чтобы невязка была минимальной.

Зафиксируем на [a, b] n точек t1, t2, ..., tn, называемых точками коллокации, и потребуем, чтобы в этих точках ψ (t, a1, a2 , ..., an ) = 0 . Получается система n линейных алгебраи-

ческих уравнений

a1Lϕ1(t1 )+ a2 Lϕ2 (t1 )+ ... + an Lϕn (t1 ) = f (t1 )- Lϕ0 (t1 )

a1Lϕ1(t2 )+ a2 Lϕ2 (t2 )+ ... + an Lϕn (t2 ) = f (t2 )- Lϕ0 (t2 ) ,

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

a1Lϕ1(tn )+ a2 Lϕ2 (tn )+ ... + an Lϕn (tn ) = f (tn )- Lϕ0 (tn )

решение которой дает a1, a2, ..., an. Между точками коллокации ψ (t, a1, a2 , ..., an ) ¹ 0 , и поэтому решение будет приближенным. Заметим, что на выбор точек tj никаких условий не накладывает-

79