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

mathcad2005

.pdf
Скачиваний:
35
Добавлен:
25.02.2016
Размер:
963.82 Кб
Скачать

путем замены переменных zk (x)= y(k )(x), k = 1, 2, …, n–1.

Для решения систем ОДУ полностью применимы все приведенные выше методы. Рассмотрим это на примере ОДУ вто-

рого порядка

 

u′′+ p(t)u′+ q(t)u = r(t), t [a, b] ,

(5.15)

где u(t) искомое решение; p(t), q(t), r(t) заданные функции коэффициентов. Пусть для уравнения (5.15) поставлены началь-

ные данные

u(a) = u

0

,

0

. С помощью замены:

 

u (a) = v

 

v(t) = u(t), v(t) = u′′(t) уравнение сводится к системе:

u′ = f (t,u,v)

t [a, b],

 

u(a) = u0 ,

 

v(a) = v0 ,

 

= g(t,u,v)

,

 

 

v

 

 

 

 

 

 

 

где

u(t),v(t) –

искомые

функции; g(t,u,v) r(t) – p(t)v – q(t)u,

f(t,u,v) v – функции правых частей; u0, v0начальные данные.

Метод Эйлера легко обобщается на эту систему:

yi+1τyi = f (ti , yi , zi ), zi+1τzi = g(ti , yi , zi ).

Здесь yi, zi – массивы приближенных решений для u, v соответственно, i = 1, 2,..., M. Решение находим по явным формулам:

y0 = u0, z0 = v0, yi+1 = yi+τ f(ti , yi ,zi), zi+1 = zi + τ g(ti, yi, zi). i = 1, 2,..., M.

Метод Рунге–Кутты (5.10) можно обобщить на систему следующим образом

k1 = f (ti , yi , zi ), l1 = g(ti , yi , zi ),

k2 = f (ti +τ, yi +τk1, zi +τl1), l2 = g(ti +τ, yi +τk1, zi +τl1),

yi+1 yi

=

k1 + k2

,

zi+1 zi

=

l1 +l2

.

τ

 

τ

 

2

 

2

 

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

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

 

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

(5.16)

Здесь p(t), g(t), f (t) заданные функции коэффициентов. Для

определения единственного решения необходимо задать два дополнительных условия на искомую функцию u(t). Если оба ус-

63

ловия заданы в одной точке t = t0, то мы имеем задачу Коши для системы (5.17), которая может быть решена методами, описанными в п. 5.1. Допустим теперь, что два дополнительных условия поставлены в разных точках: x = a и x = b:

k u(a) + k

 

 

u (a) = A

,

(5.17)

1

2

 

l1u(b) + l2u(b) = B

 

 

где A, B, k1, k2, l1, l2 – заданные константы. Задача (5.16), (5.17) называется краевой. Для приближенного решения краевой зада-

чи используют конечно-разностный метод и метод стрельбы. Конечно-разностный метод

Введем на отрезке [a, b] разностную сетку (t0, t1, t2, ..., tM), ti = a + τ i, i = 0, 1,..., M, τ = (b–a)/M, M – число точек разностной сетки. Вместо точного решения u(t) будем отыскивать приближенное решение в узлах разностной сетки: yi = y(ti). Используя форму-

лы приближенного дифференцирования:

u(ti )

yi+1 yi1

,

 

 

 

yi+1 2yi

+ yi1

 

 

 

 

 

 

 

 

 

 

 

 

2τ

u′′(ti )

, заменим исходное уравнение и краевые

 

τ 2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

 

 

 

y

2 y + y

 

yi+1

yi1

 

 

 

 

 

 

 

 

i+1

 

 

i

i1

 

+ p(t

)

 

 

 

 

 

+ g(t

) y

= f (t

), i =1,..., M ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

τ 2

 

 

 

 

i

 

 

 

2τ

 

 

i

i

i

 

 

 

 

 

 

y1 yo

 

 

 

 

 

 

yM yM 1

 

 

 

 

 

k y + k

 

= A,

 

l y

M

+ l

 

 

= B.

 

 

 

 

 

 

 

 

 

 

 

1 0

 

2

τ

 

 

 

 

1

 

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,

где

Ci = 2 – g(ti)τ2, Ai = 1 – p(ti) τ/ 2,Bi = 1 + p(ti) τ/ 2,Fi = τ2f(ti), i = 1, 2,..., M–1,

C0 = k2 τk1, B0 = k2, F0 = Aτ, CM = l2 + τl1, AM = l2, FM = –Bτ.

Выпишем матрицу системы:

64

C0

B0

0

0

...

0

A1

C1

B1

0

...

0

0

A2

C2

B2

...

0

...

...

...

...

...

... .

0

0

...

AM 1

CM 1

BM 1

0

0

....

0

AM

CM

Поскольку матрица имеет трехдиагональный вид, то система решается методом прогонки (см. п. 2.2).

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

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

Метод основан на сведении краевой задачи к задаче Коши

для системы

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

.

 

 

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

 

Пусть краевые условия имеют вид:

 

 

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

(5.18)

65

Чтобы свести исходную крае-

 

 

 

u

 

 

 

 

 

 

B1

 

 

 

 

 

 

 

 

 

 

 

 

 

вую задачу к задаче Коши, не-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

α1

u(t,α1)

обходимо в точке t = a задать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

дополнительное краевое усло-

 

u1

 

α u(t,α)

 

 

 

 

вие u(a) = v0. Величина v0 име-

 

 

 

 

 

 

 

 

 

 

u0

 

 

 

 

 

ет геометрический смысл тан-

 

 

 

 

 

u(t,α2)

B2

 

генса α – угла наклона каса-

 

α2

тельной к решению в началь-

 

 

 

 

 

 

 

 

x

 

 

 

a

 

 

b

 

 

ной точке. Графическая иллю-

 

 

 

 

 

 

 

 

Рис. 5.1. Иллюстрация метода

страция метода стрельбы при-

 

 

ведена нарис. 5.1.

 

 

 

 

 

стрельбы

 

 

 

 

 

 

 

 

 

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

но, что u(t,α1) t = b = B1>u1 («перелет») или u(t,α1) t = b = B2 < u1 («недолет») (см. рис. 5.1). Задачу подбора нужного угла α можно рассматривать как решение нелинейного алгебраического уравнения u(t,α) t = b = u1. Уравнение можно приближенно решить с помощью методов, изучаемых в главе 1 (методом дихотомии, хорд и т.д.). Особенностью решения является то, что в этом случае функция F(x), определяющая нелинейное уравнение, не задана явно, а только определен способ нахождения u(t,α) t = b.

5.3. Жесткие обыкновенные дифференциальные уравнения

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

66

Пример 5.1. Пусть задана задача Коши

y' = –100y + 100,

y(0) = 2.

(5.19)

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

Получим численное решение этой задачи методом Эйлера (5.4) с шагом h = 0.02. РасчетнаяформуламетодаЭйлеравэтомслучаеимеетвид:

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

Решение будет представлять собой последовательность

y(0)= y0 = 2, y(0.02)y1 = 0, y(0.04)y2 = 2, y(0.06)y3 = 0, ...

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

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

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

yi+1

=

100h + yi

, i = 0, 1,..., n 1, y0 = 2

 

 

 

1+100h

с шагом h = 0.1. Получим последовательность приближенных решений

y(0)= y0 = 2, y(0.1)y1 =1.091, y(0.2)y2 =1.008, y(0.3)y3 =1.0007, ...

.

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

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

67

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

dy

=αy, α < 0,

 

α

 

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

(5.20)

 

 

dx

 

 

 

 

 

 

 

 

 

 

 

 

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

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

yi+1 yi yi1 ... y0 ,

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

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

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

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

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

y

i +1

= λi +1 y

0

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

k = 1, 2 .

 

k

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

 

 

 

yi+1

 

 

 

λik+1

 

 

 

y0

 

 

 

 

необходимо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и достаточно, чтобы выполнялось условие

0 λk

1. Отсюда

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

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

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

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

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

68

Аналогично может быть записан неявный метод Эйлера для системы жестких ОДУ (5.14).

5.4.Решение обыкновенных дифференциальных уравнений

исистем обыкновенных дифференциальных уравнений в пакете MathCAD

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

dudt = 2t u t2 , u(0) = 0. Графики решения, полученные на от-

резке t [0,2] на сетке из 10 узлов методом Эйлера и методом Рунге–Кутты (5.10), представлены на рис. 5.4 в сравнении с точным решением u(t) = t2.

u(t) := t t

f(t,u) := 2 t u + t t

u0 := 0

 

 

(b a)

 

euler(a,b ,m) :=

tau

m

 

 

 

t0 a y0 u0

for i 0.. m 1 ti+1 ti + tau

yi+1 yi + tau f(ti,yi) Ui u(ti)

Um u(tm)

return augment(t,y ,U)

Рис. 5.2. Метод Эйлера

69

 

u(t) := t t

f(t,u) := 2 t u + t t

u0 := 0

 

 

RK22(a,b ,m) :=

tau

(b a)

 

 

 

 

 

 

m

 

 

 

 

 

t0 a

 

 

 

 

 

y0 u0

 

 

 

 

 

for

i 0.. m 1

 

 

 

 

 

 

ti+1 ti + tau

 

 

 

 

 

 

k1 f(ti,yi)

 

 

 

 

 

 

k2 f(ti + tau ,yi + tau k1)

 

 

 

 

 

yi+1 yi + tau

(k1 + k2)

 

 

 

 

 

2

 

 

 

 

 

Ui u(ti)

 

 

 

 

 

Um u(tm)

 

 

 

 

 

return augment(t,y ,U)

 

 

Рис. 5.3. Метод РунгеКутты

 

4

 

 

 

 

 

 

3.5

точное решение

 

 

3

 

 

решение по методу Эйлера

 

 

2.5

 

 

решение по методу Рунге–Кутты

 

2

 

 

 

 

 

 

1.5

 

 

 

 

 

 

1

 

 

 

 

 

 

0.5

 

 

 

 

 

 

0

 

 

 

 

 

 

0

0.5

 

 

1

1.5

2

 

Рис. 5.4. Решение по методу Эйлера и РунгеКутты

 

70

Стандартный блок Given/Odesolve пакета MathCAD для приближенного решения ОДУ

Вычислительный блок для решения одного ОДУ, реализующий численный метод Рунге–Кутты, состоит из трех частей:

Given – ключевое слово;

ОДУ и начальное условие, записанное с помощью логических операторов, причем начальное условие должно быть в форме y(t0) = b;

Odesolve (t, t1) – встроенная функция для решения ОДУ

относительно переменной t на интервале (t0, t1).

При вводе уравнения и начального условия необходимо использовать логический оператор равенства (через панель инструментов Boolean или с помощью сочетания клавиш <Ctrl> + <=>). Допустимо задание функции Odesolve (t, t1, step) с тремя параметрами, где step – внутренний параметр численного метода, определяющий количество шагов, за которое будет

получено решение.

 

 

 

 

На рис. 5.5 приведен

Given

 

пример

решения

задачи

 

Коши для

ОДУ

первого

 

d

2

 

 

 

 

y(t)= y(t)− y(t)

порядка

y′ = y y2 c на-

 

dt

чальным

 

условием

 

y(0) = 0.1

 

 

y := Odesolve(t,10)

 

y(0) = 0.1

посредством

 

Рис. 5.5. Решение задачи Коши

вычислительного

блока

Given/Odesolve.

Решение задачи Коши для ОДУ n-го порядка ничем не отличается от решения уравнения первого порядка. Необходимо лишь задать n начальных условий на функцию и ее производные до (n–1)-го порядка включительно.

При решении краевой задачи для ОДУ второго порядка также можно воспользоваться блоком Given/Odesolve. В этом случае необходимо вместо начальных данных задать краевые условия на границах интервала. Далее приведен пример приближенного решения краевой задачи

u′′+ tg(t)u′+cos2 (t)u = 0, t [0,1], u(0) =1, u(1) =10,

для которой известно точное решение:

71

ut(t) = cos(sin(t)) + C1 sin(sin(t)), C1 = (10 – cos(sin(1)))/sin(sin(1)).

 

Для решения применим метод стрельбы. На рис. 5.6 приве-

 

ден текст программы на MathCAD с использованием блока

 

Given/Odesolve. Результат вычислений представлен графиче-

 

ски на рис. 5.7.

 

 

 

 

 

 

 

 

 

Given

 

 

10

10

 

 

 

 

 

 

d2

d

2

 

 

 

 

 

 

 

 

dt2 u(t)+ tan(t) dt u(t)+cos(t) u(t)= 0

 

 

 

 

 

 

 

 

u(0)=1

 

 

u(t)

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

u(1)=10

 

 

 

 

 

 

 

 

 

 

u := Odesolve(t,1,10)

1

0 0

0.2

0.4

0.6

0.8

1

 

 

 

0

 

 

t

 

 

 

 

 

 

 

 

 

 

 

Рис. 5.6. Приближенное

Рис. 5.7. График приближенного

 

решение краевой задачи

решения краевой задачи

 

 

в MathCAD

 

 

 

 

 

 

 

 

На рис. 5.8 показано

1.5 .10

5

 

 

 

 

 

поведение

погрешности

 

 

 

 

 

 

 

 

z = |u(t) – ut(t)| приближен-

1 .10

5

 

 

 

 

 

ного решения

задачи. Из

z

 

 

 

 

 

 

 

рисунка видно, что на

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

правой границе граничное

5 .10

6

 

 

 

 

 

условие выполняется с не-

 

 

 

 

 

 

 

 

которой

погрешностью.

 

 

0 0

 

 

 

 

 

Это связано с

особенно-

 

 

0.2

0.4

0.6

0.8

 

стями реализации метода

 

 

 

 

t

 

 

 

Рис. 5.8. Погрешность прибли-

 

стрельбы (см. п. 5.3).

 

женного решения задачи

 

 

 

 

 

 

 

Решение жестких ОДУ в пакете MathCAD

Решение жестких систем ОДУ в пакете MathCAD можно осуществить с помощью встроенной функции

Stiffb (y0, x0, x1, M, F, J),

где y0 – вектор начальных значений в точке x0;

72

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]