По формуле Лагранжа уравнение этой параболы можно

advertisement
- 35 <== Возврат к содержанию раздела
1.6 Решение обыкновенных дифференциальных уравнений
Обыкновенные дифференциальные уравнения - это уравнения, содержащие производные функций одного переменного. Они используются для
математического описания физических ситуаций, требующих рассмотрения
степени изменения одной переменной величины по отношению к другой:
уравнения химической кинетики, теплопроводности, диффузии и т.д. Необходимость решения таких уравнений часто возникает в вычислительной
практике.
Аналитические методы решения обыкновенных дифференциальных
уравнений редко удается использовать для решения практических задач. Задолго до появления ЭВМ для этого использовали численные методы.
Постановка задачи: Найти решение y=y(x) уравнения y= f(x, y), удовлетворяющее условию y(x0)=y0. Условие y(x0)=y0 называется начальным
условием и используется для выделения одной конкретной интегральной
кривой y(x) из множества решений уравнения y=f (x, y). Например, для того,
чтобы выделить из множества решений уравнения y=y решение y=ex необходимо задать условие y(0)=1. Эта задача называется задачей Коши. На практике она обычно решается для заданного интервала значений аргумента [x0; xn].
1.6.1 Методы численного решения задачи Коши для одного уравнения
Решение задачи Коши можно представить в виде y( x)  xx f ( x, y) dx  c .
0
Поскольку y( x0 )  y0 ,
y0  xx0
0
f ( x, y ) dx  c
 c y0 и y( x)  y0  xx0 f ( x, y) dx .
Разбив отрезок [x0; xn] точками x1 , x2 ... xn1 на n равных микроотрезков
[xi; xi+1], i=0,1,…,n-1 длиной h  ( xn  x0 ) / n , запишем правило определения
соответствующих значений y1, y2, …, yn:
y1  y 0  xx1 f ( x, y) dx;
0
y 2  y 0  xx2
0
f ( x, y)
dx  y 0  xx1
0
f ( x, y) dx  xx2 f ( x, y) dx  y1  xx2 f ( x, y) dx ;
1
1
………………………………………………………………………………………
y n  y 0  xxn f ( x, y) dx y 0  xx2 f ( x, y) dx  ...  xxn f ( x, y) dx y n 1  xxn f ( x, y) dx .
0
n 1
1
n 1
В общем виде
yi1  yi  xxi 1 f ( x, y) dx ,
i
Используя
x
xii 1
для
i  0,1,... n 1
приближенного
вычисления
(1.28)
интегралов
f ( x, y) dx различные квадратурные формулы, можно получить различные
методы численного решения задачи Коши. Наиболее популярны метод Эйлера и его модификации, метод Рунге-Кутта. Для достижения необходимой
- 36 точности решения используется прием уменьшения длины микроотрезков,
повторения вычислений и сравнения полученных результатов.
Классический метод Эйлера использует для вычисления интегралов
x
xii 1 f ( x, y ) dx "формулу левых прямоугольников" (высота прямоугольника
принимается равной значению подынтегральной функции на левой границе
микроотрезка [xi; xi+1]):
x
xii 1 f ( x) dx  h  f ( xi ) т.е. yi1  yi h f ( xi , yi ), i0,..., n1 .
(1.29)
Геометрическая интерпретация (рисунок 1.13): точки (xi+1,yi+1),
i=0,1,…,n-1 – это точки пересечения
касательных к кривой y(x) в точках
(xi,yi) и прямых x = xi+1.
Ошибки, возникающие при
определении значений y1, y2 ,…, yn,
приводят к тому, что каждая следующая касательная проводится к какой-то другой интегральной кривой из
Рисунок 1.13 Иллюстрация к методу Эйлера
семейства решений уравнения. Такое
свойство метода называют накоплением ошибки.
Метод прост, но имеет весьма малую точность, его называют методом первого порядка, так как его основное соотношение совпадает с разложением функции y=y(x) в ряд Тейлора в окрестности точки x=xi с точностью
до члена первого порядка относительно х
y"
y'''
y( x)  yi  ( x  xi ) yi  ( x  xi ) 2 i  ( x  xi )3 i  ...
2
3
Ошибка метода Эйлера пропорциональна h2 (первому отброшенному члену
ряда) и при удвоении числа n уменьшается в 4 раза.
Пример. Решить уравнение y=сos(x) методом Эйлера для x[0;/2]
при y(0)=0. Разобьем отрезок [0;/2] на 3 части: x0=0, y0=0; h=(/2-0)/3=/6,
тогда x1=/6, y1=y0+hсos(x0)=0+0.5241=0.524;
x2=/3, y2=y1+hсos(x1)=0.524+0.5240.866=0.524+0.453=0.977;
x3=/2, y3=y2+hсos(x2)=0.977+0.5240.5=0.977+0.262=1.239.
Точное решение: y = sin(x)  sin(x1)=0.5; sin(x2)=0.866; sin(x3)=1.
Метод Эйлера модифицированный использует для вычисления интегралов xxi 1 f ( x, y ) dx , i=0,1,…,n-1 классическую формулу прямоугольников:
i
xi 1
x
f ( x , y ) dx  h  f xi  h 2 , yi xi  h 2 . Для определения значения y в т.
i
xi  h 2
используется
y xi  h 2  yi  f ( xi , yi )  h 2 .
классический
метод
Эйлера:
Тогда
h
h


yi1  yi  h  f  xi  , yi   f ( xi , yi ), i  0,1,..., n 1 .
2
2


(1.30)
- 37 -
Рисунок 1.14 Метод Эйлера
модифицированный
Геометрическая интерпретация (рисунок 1.14): Точка (xi+1,yi+1)
лежит на пересечении прямой x = xi+1
и прямой, параллельной L и проходящей через исходную точку (xi,yi).
Прямая L – касательная к интегральной
кривой
в
точке
h
h


 xi  , yi   f ( xi , yi ) , образованной
2
2


пересечением прямой x  x i  h 2 и
касательной к искомой кривой y(x) в
исходной точке xi , yi  .
Метод Эйлера исправленный. Здесь для вычисления интегралов
x
xii 1 f ( x, y ) dx, i=0,1,…,n-1 используется формула трапеций:
h
x
xii1 f ( x, y) dx   f ( xi , yi )  f ( xi  h, y( xi  h)) , а значение y( xi  h) определя2
ется с помощью классического метода Эйлера: y( xi  h)  yi  h  f ( xi , yi ). Тогда
h
y i 1  y i   f ( xi , y i )  f ( x i  h, y i  h  f ( x i , y i ))  , i  0,1,2,..., n 1 . (1.31)
2
Геометрическая интерпретация (рисунок 1.15): Точка
(xi+1,yi+1) – это точка пересечения
прямой x = xi+1 и прямой, параллельной L, которая проходит через
исходную точку (xi,yi). Тангенс
угла наклона прямой L к оси х равен среднему арифметическому
тангенсов углов наклона касательных к кривой y (x ) в точках (xi,yi) и
Рисунок 1.15 Метод Эйлера исправленный
(xi+h, yi+hf (xi,yi)).
Модификации метода Эйлера значительно точнее классического, но
требуют и большего объема вычислений: положение каждой точки искомой
кривой определяется с помощью двукратного вычисления значения функции
f (x, y). Это методы второго порядка, т.к. их основные соотношения совпадают с разложением y(x) в ряд Тейлора с точностью до члена второго порядка
относительно x. Ошибка методов пропорциональна h3 и при уменьшении
величины шага вдвое уменьшается в 8 раз.
Метод Рунге-Кутта основан на использовании для вычисления интегралов xxi 1 f ( x, y) dx, i  0,1,..., n 1 формулы Симпсона:
i


h
h 
h 
x
xii 1 f ( x, y)dx   f ( xi , yi )  4 f  xi  , y xi    f x  h, y( x  h) .
6
2 
2 


- 38 Определив значения y( xi  h 2), y( xi  h) по методу Эйлера, получим

h
h
 h

yi1  yi   f ( xi , yi )4 f  xi  , yi   f ( xi , yi ) f xi h, yh f ( xi , yi ), i=0,1,…,n.
6
2
2



Это формула метода Рунге-Кутта 3-го порядка. На практике чаще используется метод Рунге-Кутта 4-го порядка:
h
(1.32)
yi1  yi   (k1  2k2  2k3  k4 ), i  0,1,2,..., n 1,
6
h
h 
h
h



где k1  f ( x i , y i ); k 2  f  x i  , y i   k1 ; k 3  f  x i  , y i   k 2 ;
2
2
2
2




k 4  f ( xi  h, y i  h  k 3 ). Ошибка формулы (1.32) пропорциональна h5.
Этот метод намного более точен, чем методы Эйлера, но требует и
большего объема вычислений: положение точки (xi+1, yi+1) определяется в
результате 4-кратного вычисления значения функции f (x,y). С появлением
ЭВМ этот недостаток перестал быть существенным и метод Рунге-Кутта
4-го порядка применяется на практике чрезвычайно широко.
Все рассмотренные методы решения задачи Коши называются одношаговыми, т.к. каждая следующая точка (xi+1,yi+1) искомой интегральной кривой определяется на основе информации только об одной предыдущей точке
(xi,yi). Число микроотрезков [xi; xi+1], на которые разбивается исходный отрезок [x0;xn], определяется требуемой точностью вычислений. Для достижения
нужной точности задача решается несколько раз при последовательно удваиваемом числе микроотрезков n. Точность считается достигнутой, если при
начальном и удвоенном числе n значения yi и y2i (в совпадающих точках x)
отличаются не более чем на заданную величину: max y i( n )  y 2( 2i n )   .
i 1, 2,..., n
Методы прогноза и коррекции - это общее название многошаговых методов численного решения задачи Коши. Они используют для определения
положения точек (xi+1,yi+1) искомой интегральной кривой информацию о положении нескольких предыдущих точек. Положение точки (xi+1,yi+1) вначале
прогнозируется с учетом известного положения двух или более предыдущих
точек, а затем корректируется с помощью итерационной процедуры. Наиболее часто применяемый на практике метод этого семейства использует для
прогноза значения yi+1 формулу:
y i(01)  y i 1  2  h  f ( x i , y i ), i 1,2,..., n 1 ,
(1.33)
а для коррекции применяется итерационный процесс
h
y i(k1)  y i   f ( xi , y i )  f ( xi 1 , y i(k11) ) , i 1,2,..., n 1; k 1,2,...
(1.34)
2
Процесс (1.34) прекращается в момент выполнения неравенства


y i(k1)  y i(k11)   . Методом (1.33)-(1.34) невозможно начать решение задачи,
т.к. в распоряжении имеется единственная точка (x0,y0) искомой интегральной кривой, а формула (1.33) ориентирована на две известные точки. Поэто-
- 39 му первый шаг (определение y1) делается обычно по методу Эйлера или Рунге-Кутта. Метод прогноза и коррекции позволяет оценить приемлемость выбранного шага интегрирования в ходе расчетов: если процесс (1.34) сходится
за 2-3 итерации, то считается, что шаг выбран верно; если необходима всего
одна итерация, то шаг следует увеличить; если требуется больше трех итераций, то шаг необходимо уменьшить. При изменении шага формулу прогноза
(1.33) применить не удается, приходится делать один или несколько шагов с
помощью одношагового метода.
Алгоритм метода (1.33)-(1.34) должен включать: алгоритм одного из
одношаговых методов, алгоритм вычисления прогнозируемых значений yi по
формуле (1.33) и алгоритм реализации итерационного процесса (1.34). Несмотря на сложность, этот алгоритм иногда требует меньших затрат машинного времени, чем алгоритмы одношаговых методов за счет меньшего количества вычислений значений f (x,y), варьирования шага, отсутствия необходимости повторных решений задачи.
1.6.2 Решение систем обыкновенных дифференциальных уравнений
Для решения систем обыкновенных дифференциальных уравнений используются те же методы, что и для решения одного уравнения: методы Эйлера, Рунге-Кутта, прогноза и коррекции. В качестве примера рассмотрим
задачу решения системы двух обыкновенных дифференциальных уравнений:
 y1  f1 ( x, y1 , y2 );
(1.35)
 y  f ( x, y , y ); .
1 2
 2 2
Задача заключается в нахождении интегральных кривых y1 x  и y 2 x  , удовлетворяющих начальным условиям:
(1.36)
y1 x0  y10 , y 2 x 0  y 20 .
Задача (1.35)-(1.36) также называется задачей Коши и на практике
обычно решается для фиксированного отрезка [x0;xn] оси х, который в ходе
решения разбивается на микроотрезки [xi; xi+1], i 1,2,...., n длиной h=(xn-x0)/n.
Число микроотрезков n определяется заданной точностью решения.
Классический метод Эйлера предусматривает определение положения
следующих точек искомых интегральных кривых y1 x  и y2 ( x) как точек
пересечения прямой x  x i  h с касательными к соответствующим кривым в
точках xi , y1i  и ( xi , y 2i ) , i  0,1,..., n 1 , т.е.

 y1,i 1  y1i  h  f 1 xi , y1i , y 2i ;
, i  0,1,.., n 1
(1.37)


 y 2,i 1  y 2i  h  f 2 xi , y1i , y 2i ;
Гораздо чаще классического на практике применяются модификации метода
Эйлера: модифицированный:
 y1,i 1  y1i  h  k12 ;
, i=0,1,…,n-1,
(1.38)
y
 2,i 1  y 2i  h  k 22 ;
- 40 h
h
h


где k12  f1  xi  , y1i   k11 , y 2i   k 21  ; k11  f1xi , y1i , y2i  ;
2
2
2


h
h
h


k21  f 2 xi , y1i , y2i  ; k 22  f 2  x i  , y1i   k11 , y 2i   k 21  и исправленный:
2
2
2


h

 y1,i 1  y1i  2  (k11  k12 );
, i=0,1,…,n-1,
(1.39)

h
 y 2,i 1  y 2i  (k 21  k 22 );
2

где k11  f1xi , y1i , y2i  ; k21  f 2 xi , y1i , y2i  ; k12  f1 xi  h, y1i  h  k11 , y 2i  h  k 21  ;
k 22  f 2 xi  h, y1i  h  k11 , y 2i  h  k 21  .
Метод Рунге-Кутта применяется на практике еще более широко, чем
модификации метода Эйлера. Его основные соотношения для решения задачи (1.35)-(1.36) можно получить из соотношения (1.32) аналогично тому, как
получены выражения (1.37)-(1.39) из (1.29)-(1.31) соответственно:
h

 y1,i 1  y1i  6  (k11  2k12  2k13  k14 );

, i=0,1,…,n-1,
(1.40)

h
 y 2,i 1  y 2i   (k 21  2k 22  2k 23  k 24 );

6

где k11  f1xi , y1i , y2i  ; k21  f 2 xi , y1i , y2i  ,
h
h
h
h
h
h




k12  f 1  x i  , y1i   k11 , y 2i   k 21  ; k 22  f 2  x i  , y1i   k11 , y 2i   k 21  ;
2
2
2
2
2
2




h
h
h
h
h
h




k13  f1  xi  , y1i   k12 , y 2i   k 22  ; k 23  f 2  xi  , y1i   k12 , y 2i   k 22  ;
2
2
2
2
2
2




k14  f1 xi  h, y1i  h k13 , y 2i  h k 23  ; k 24  f 2 xi  h, y1i  h  k13 , y 2i  h  k 23  .
Заданная точность аппроксимации искомых интегральных кривых
y1(x) и y2(x) ломаными Эйлера или кривыми, состоящими из отрезков квадратичных парабол, достигается в результате использования приема последовательного удвоения числа и элементарных интервалов интегрирования. Точность считается достигнутой, если при начальном и удвоенном n значения
y1i , y 2i в совпадающих точках х отличаются друг от друга не более чем на
заданную величину: max
i 1, 2,..., n
y
(n)
1i

 y1( 2 n ) , y 2( n )  y 2( 2 n )   . При неудачном вы2i
i
2i
боре начального значения n достижения нужной точности может потребовать
значительных затрат времени.
Метод прогноза и коррекции также может быть использован для решения задачи (1.35)-(1.36). Формула прогноза значений y1,i+1, y2,i+1 (см. (1.33)):
 y1(,0i ) 1  y1,i 1  2h  f 1 ( x i , y1i , y 2i )
, i=1,2,…,n-1.
(1.41)
 (0)
 y 2,i 1  y 2,i 1  2h  f 2 ( x i , y1i , y 2i )
Формула коррекции спрогнозированных значений y1,i 1 , y 2,i 1 (см. (1.34)):
- 41 -



h
 (k )
( k 1)
( k 1)
 y1,i 1  y1i  2  f 1 ( x i , y1i , y 2i ) f 1 ( x i h, y1,i 1 , y 2,i 1 )
, i=0,…,n-1; k=1,…(1.42)

h
 y 2( k,i)1  y 2i   f 2 ( x i , y1i , y 2i ) f 2 ( x i h, y1(,ki11) , y 2( k,i11) )
2

до момента выполнения неравенства:



max y1(,ki) 1  y1(,ki11) , y 2(k,i)1  y 2(k,i11)   .
(1.43)
Алгоритм этого метода предусматривает использование одношагового
метода для осуществления первого шага (определения y11, y21 ) и первого шага после изменения значения h, когда условие (1.43) выполняется уже при
k 1 (шаг h можно увеличить) или при k  3 (значение h следует уменьшить).
Рассмотренные методы решения систем обыкновенных дифференциальных уравнений могут быть использованы и для решения уравнений высоких порядков. Например, задача решения уравнения y" f x, y, y  при условиях y( x0 )  y 0 ; y ( x0 )  y 0 ; заменой переменных z  y   y x 0  y 0  z 0 сводится к задаче решения системы двух уравнений первого порядка:
y x0  y0 ;
 z   f x, z , y ;
при условиях
 y   z;
z x0  z0 .

<== Возврат к содержанию раздела
Download