Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Берков_Н.Практикум_Mathcad.pdf
Скачиваний:
111
Добавлен:
26.05.2015
Размер:
1.2 Mб
Скачать

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

Обыкновенные дифференциальные уравнения представляют собой зависимость между искомой функцией одного аргумента, самим аргументом и производными искомой функцией различного порядка. При этом старшая степень производной, входящая в такую зависимость, называется порядком дифференциального уравнения. В работе [2] рассмотрены методы решения различных типов обыкновенных дифференциальных уравнений. Следует отметить, что во всех классических учебниках особое внимание уделяется аналитическим методам решения дифференциальных уравнений. При этом уже для уравнений первого порядка имеются только несколько типов уравнений, решаемых аналитически. При решении подавляющего большинства практических задач данные методы неприменимы вследствие сложности дифференциальных уравнений. Пакет Mathcad предназначен для решения практических задач, поэтому в него встроены численные методы решения задачи Коши и краевой задачи. Аналитическое решение дифференциальных задач при помощи пакета получить нельзя.

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

Вработе [2] рассмотрена постановка и решение задачи Коши методами Эйлера и Рунге–Кутта. В данной работе мы ограничимся программами расчета в рамках пакета Mathcad для решения задачи Коши дифференциального уравнения первого порядка, разрешенного относительно производной.

y′ = f (x, y), x [a,b], y(a) = y0.

(5.1)

В качестве тестовой задачи выберем несложную задачу Коши, имеющую аналитическое решение.

y′ = 0,5ex y2 , x [0,1], y(0) =1.

(5.2)

Это легко интегрирующее уравнение с разделяющимися переменными. Общее решение получается следующим образом:

69

 

2dy

= ex dx

2

= ex +c y =

2

. Подставляя дополни-

 

y2

y

ex +c

 

 

 

 

тельное условие

y(0) =1, получаем теоретическое решение по-

ставленной задачи Коши y = 3 2ex .

Найдем значение полученного теоретического решения в

правой точке границы области y(1) =

 

2

 

7.09929356.

 

3

e

 

 

 

 

5.1.1. Решение задачи Коши методом Эйлера

 

Напомним формулу Эйлера с постоянным шагом h для

решения задачи (5.1)

 

 

 

 

 

y0 = y0; yi+1 = yi + h f (xi , yi );

 

i = 0,1,2,, N,

(5.3)

где N – число разбиений отрезка [a, b] на подынтервалы постоянной длины h. При этом шаг разбиения h = b Na . Координаты уз-

ловых точек xi вычисляются по формуле xi = a + h i; i = 0,1,2,, N.

Алгоритм решения задачи Коши методом Эйлера достаточно простой.

1.Задание начальных данных.

2.i = 0, y0 = y0 .

3. yi+1 = yi + h f (xi , yi ), i = i +1.

4.Если i<N перейти на пункт 3.

5.Вывод решения задачи Коши в узловых точках и построе-

ние графика искомой функции по точкам {xi , yi }, i = 0,1,2,, N.

Представим теперь программу, реализующую данный алгоритм на Mathcad. Для наглядности, программа снабжена комментариями, которые можно опустить при написании программы. Все комментарии заключены в обрамленные прямоугольные блоки. Для отладки программы выберем небольшое значение, N=5.

70

Начало программы.

Начальные данные.

a := 0 b :=1 N := 5

h :=

b a

f (x, y) :=

ex y2

N

2

 

 

 

Создание ранжированных векторов i и j , предназначенных для

организации циклов. i := 0..N j := 0..N 1

Вычисление координат узловых точек. xi = a + h i

Цикл последовательного вычисления значений искомой функции y(x) в узловых точках y1, y2 ,, yN .

y0 := y0 y j+1 := y j + h f (x, y).

Вывод вектора решений.

yT = (1 1.1 1.248 1.48 1.879 2.665).

Конец программы.

Погрешность полученного решения накапливается на каждом интервале и принимает максимальное значение при x=1. Сравнивая полученное численное решение при N=5 с точным решением, получаем достаточно большую погрешность 4.434. При N=100 погрешность уменьшается до 0,991, а при N=1000 – до 0,123.

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

5.1.2. Решение задачи Коши методом Рунге–Кутта второго порядка

Метод Рунге–Кутта второго порядка точности описывается формулой, приведенной в работе [2].

y0 = y0,

 

 

 

 

 

(5.4)

 

 

 

h

 

h

 

y j+1

= y j +

(1α) f (x j , y j ) +α f (x j +

 

, y j +

 

f (x j , y j ) h.

 

2α

2α

 

 

 

 

 

 

 

Параметр α в данной формуле изменяется в диапазоне от 0 до 1 и задает скорость сходимости численного решения. Этот параметр необходимо подбирать для каждой конкретной задачи. Как показали численные исследования для задачи Коши (5.2) при ма-

71

лых значениях числа разбиений N, наиболее оптимальным значением для параметра α является значение 0.26.

Программа данного метода отличается от метода Эйлера, только немного более сложной формулой. В методе Рунге–Кутта второго порядка необходимо на каждой итерации два раза вычислять значение правой части. Приведем только фрагмент программы, реализующий формулу Рунге–Кутта второго порядка. С целью экономии времени вычисления функции формула разбита на три составляющие.

α := 0.25

y0 :=1 y j+1 :=

 

k1 f (x j , y j )

h

 

 

h

 

 

 

 

 

 

 

k2

f (x j +

 

, y j +

k1)

 

2

α

2 α

 

 

 

 

 

 

 

 

 

 

y j +[(1α) k1+α k2] h

 

yT = (1

1.129 1.34 1.736

2.695 6.823).

 

 

 

Погрешность полученного решения при N=5 равна 0,277, при

N=100 – 0,009 и при N=1000 – 0,0001. Таким образом, метод Рун-

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

5.1.3. Решение задачи Коши методом Рунге–Кутта четвертого порядка

На практике для решения задачи Коши чаще всего применяют метод Рунге–Кутта четвертого порядка точности.

Метод Рунге–Кутта четвертого порядка точности описывается формулой, приведенной в работе [2].

y

= y0,

y

j+1

= y

j

+

(k

+ 2k

 

+ 2k

+ k

 

)

h

,

 

(5.5)

 

 

 

 

0

 

 

 

 

 

 

 

 

1

 

 

 

 

2

 

3

 

4

6

 

 

 

где

 

 

 

 

 

 

 

 

 

 

 

 

h

 

 

 

h

 

 

 

 

 

 

 

 

k = f (x

, y ),

k

 

= f (x +

, y +

k ),

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

1

i

i

 

 

 

2

 

 

 

 

i

2

 

 

i

 

1

 

 

 

 

 

 

k = f (x +

h

, y +

h

k

 

),

k

 

= f (x + h, y + hk

 

).

 

2

 

 

 

3

i

2

 

i

 

 

 

2

 

 

 

4

 

 

 

i

 

 

i

 

3

 

72

В данном методе на каждой итерации правая часть вычисляется четыре раза в различных точках интервала [xi , xi+1].

Вычислительная программа имеет такой же вид, как и для метода Рунге–Кутта второго порядка.

y0 :=1 y j+1 :=

 

k1 f (x j , y j )

 

 

 

 

 

 

 

 

 

 

 

 

 

k2 f

x j +

h

, y j +

h

k1

 

 

 

 

 

 

 

 

 

 

2

2

 

 

 

k3 f

x j +

h

 

, y j +

h

 

k2

 

 

 

 

 

 

 

 

2

 

2

 

 

 

 

k4 f (x j + h, y j + h k3)

 

 

y j +

h

(k1+ 2 k2 + 2 k3 + k4)

 

 

 

6

 

 

 

 

 

 

 

 

 

 

yT := (1 1.124 1.326

1.698

 

 

2.581

 

6.857).

Погрешность полученного решения при N=5 равна 0,242, при

N=100 – 0,000006 и при N=1000 – 6 1010 . Таким образом, метод Рунге–Кутта четвертого порядка значительно точнее других методов при одинаковом уровне сложности алгоритмов.

Ниже на одной диаграмме представлены графики решений для всех трех методов при N=5 и график теоретического решения. Из графиков видно, что при переходе на следующий интервал ошибки накапливаются, при этом метод Рунге–Кутта четвертого порядка (yR4), уже при таком малом значении N, дает приемлемой результат. Метод Рунге–Кутта второго порядка (yR2) и метод Эйлера (yE) отслеживают тенденцию изменения теоретического решения, но дают большую погрешность.

73

Здесь приведены значение всех трех методов и теоретического решения в узловых точках при N=5 и α = 0.5.

Для наглядности приведем полностью всю программу решения задачи Коши (5.2) всеми тремя методами при N=100.

Начало программы.

74

Конец программы.

Как видно из графиков, результаты, полученные по методу Рунге–Кутта второго и четвертого порядков, совпадают с теоретическим решением, а метод Эйлера требует увеличение числа N.

Задание для самостоятельной работы.

Решить задачу Коши (5.1) методом Эйлера и Рунге–Кутта второго и четвертого порядков точности для приведенных ниже уравнений и начальных данных. На одной диаграмме построить все три решения для трех значений параметра N: N=10, N=100 и

N=1000.

75

Дифференциальное уравнение

[a; b]

вар.

 

 

 

 

 

 

 

 

 

 

 

1

y/

+ xysin5x = e0,1x2

 

 

[0; 4]

2

y

+ x1,5 y = y2 sin 2x

 

[0; 3]

3

y′+ y4

 

=1x

 

 

 

[0; 1]

4

2y′− ytg0,2x = xy2

 

 

[0; 5]

5

y/

+e0,1x y = sin(xy)

 

 

[0; 10]

6

y

+ xy cos3x = e0,3x

 

 

[0; 4]

7

y

+ xy

 

= sin 2x

 

 

[0; 4]

8

y

+ xy

 

= e0,2 x2

 

 

 

[0; 5]

9

y

+3x0,2 y = ysin 5x

 

[0; 2]

10

y

+ y4 ln(x2 +5) =1x5 y

[0; 2,5]

11

y

+3x2 y3 = sin 3x

 

 

[0; 5]

12

y

+lg y3 = x2 y

 

 

[–1; 2]

13

y

+lg y2 =

 

y cos x

 

[0; 10]

14

y

+ y3 ln(x2 +5) = x x4 y

[0; 2]

15

y

+lg y3 = ysin x2

 

 

[–1; 2]

16

y′+

lg y =

 

y sin x

 

[0; 12]

 

 

 

 

 

 

 

 

 

 

 

 

17

 

 

x

=

y

3

sin(x

2

+1)

[0; 5]

 

y y e

 

 

 

 

18

y′+ x 3

 

y = ysin(x2 +1)

[0; 5]

19

y′+ x4 4 y5

= y cos(x +5)

[–1; 2]

20

y′+ 3

x7 y = y cos2 (0,2x +5)

[1; 20]

21

y′+ 3

x4 y = ln x + y2e2 x

[0; 1]

22

y′+ 3

x4 y = x2 ln x + yex

[1; 8]

23

y′+ 5

y3 sin x = ysin(x2 +1)

[0; 5]

24

y′+ 5

y3 sin x = ye

x

[0; 20]

25

y′− 5

y3 cos x = ye

 

2 x

[0; 12]

26

y′+ +y 3 x = ey cos3 2x

[1; 10]

Дополн. условие y(0) =1

y(0) =1 y(0) = 0 y(0) =1 y(0) =1 y(0) = 2 y(0) =1 y(0) = 3 y(0) = 2.1 y(0) = 3 y(0) = 0 y(1) =15 y(0) =10 y(0) = 2 y(1) = 20 y(0) =10 y(0) =10 y(0) =10 y(1) =15 y(1) =15 y(0) = 2 y(1) = 20 y(0) =10 y(0) =10 y(0) =15 y(1) = 2

76