- 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 ... xn1 на 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 В общем виде yi1 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 ) т.е. yi1 yi h f ( xi , yi ), i0,..., n1 . (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.5241=0.524; x2=/3, y2=y1+hсos(x1)=0.524+0.5240.866=0.524+0.453=0.977; x3=/2, y3=y2+hсos(x2)=0.977+0.5240.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 yi1 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 xii1 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+hf (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 yi1 yi f ( xi , yi )4 f xi , yi f ( xi , yi ) f xi h, yh f ( xi , yi ), i=0,1,…,n. 6 2 2 Это формула метода Рунге-Кутта 3-го порядка. На практике чаще используется метод Рунге-Кутта 4-го порядка: h (1.32) yi1 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(k11) ) , i 1,2,..., n 1; k 1,2,... (1.34) 2 Процесс (1.34) прекращается в момент выполнения неравенства y i(k1) y i(k11) . Методом (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 f1xi , 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 f1xi , 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 f1xi , 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(,ki11) , y 2( k,i11) ) 2 до момента выполнения неравенства: max y1(,ki) 1 y1(,ki11) , y 2(k,i)1 y 2(k,i11) . (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 . <== Возврат к содержанию раздела