ВУЗ:
Составители:
Рубрика:
165
)( ) ( , )(
k k k k k
y x y f x y x x
. При этом имеем узловые значения решения:
1 0 0 0 2 1 1 1 1 1 1
.( , ) , ( , ) ,..., ( , )
n
n n n
y y f x y y y f x y y y f x y
Мы здесь приравниваем отношение приращений функции и аргумента
производной в точке, соответствующей началу отрезка разбиения:
1
( , )
kk
kk
yy
f x y
.
Очевидно, что такое приближение является тем менее точным, чем дальше
мы отойдем от точки
00
( , )xy
. Метод Эйлера является наиболее примитивным.
Здесь интегральная кривая заменяется ломаной, состоящей из прямолинейных
отрезков. Возможны его некоторые модификации, несколько улучшающие
точность. Например, если брать постоянные значения в виде
1
( , ( , ) )
22
k k k k k k
y y f x y f x y
.
Наиболее распространенным численным методом решения указанной
задачи Коши является метод Рунге-Кутта. При решении дифференциального
уравнения этим методом интегральная кривая заменяется ломаной, состоящей из
кусков парабол. Метод Рунге-Кутта встроен в пакет программ MAXIMA.
Например, мы хотим решить дифференциальное уравнение
2
y y x
с
начальным условием
(0) 0.3y
. При этом мы задаем отрезок [0,1], на котором
хотим получить численное решение и шаг разбиения этого отрезка, равный 0.05.
Мы должны ввести команду
load(dynamics); rk(y^2+x,y,0.3,[x,0,1,0.05]);
После того, как мы нажмем клавиши Shift+Enter, получим данные
[[0,0.3],[0.05,0.30583128660202],[0.1,0.31438277172198],[0.15,
0.32574776902574],[0.2,0.34003114365951],[0.25,0.35735268712942],[0.3,
0.37785103897622],[0.35,0.40168830090343],[0.4,0.42905553899765],[0.45,
0.46017943684494],[0.5,0.49533045405802],[0.55,0.53483297195895],[0.6,
0.57907808748734],[0.65,0.62853997325452],[0.7,0.6837970957275],[0.75,
0.74556013793749],[0.8,0.81470931041585],[0.85,0.89234502470182],[0.9,
0.97985793824278],[0.95,1.079027666994073],[1.0,1.192164923146931]].
Это означает, что мы получили узловые значения решения: y(0.05)=
0.30583128660202,…, y(0.4)= 0.42905553899765,…..
Приближенное решение дифференциальных уравнений высших
порядков сводятся к решению систем уравнений первого порядка. Например,
требуется решить дифференциальное уравнение
22
( ) 3 2y x y x y
на отрезке
[0,2] с шагом 0.1 при начальных условиях
(0) 1, (0) 0yy
. Введем новую
функцию
zy
. Теперь уравнение запишется в виде системы
22
,
23
yz
z xz x y
с начальными условиями
(0) 1, (0) 0yz
.
yk ( x) yk f ( xk , yk )( x xk ) . При этом имеем узловые значения решения: y1 y0 f ( x0 , y0 ), y2 y1 f ( x1, y1),..., yn yn1 f ( xn1, yn1). Мы здесь приравниваем отношение приращений функции и аргумента производной в точке, соответствующей началу отрезка разбиения: yk 1 yk f ( xk , yk ) . Очевидно, что такое приближение является тем менее точным, чем дальше мы отойдем от точки ( x0 , y0 ) . Метод Эйлера является наиболее примитивным. Здесь интегральная кривая заменяется ломаной, состоящей из прямолинейных отрезков. Возможны его некоторые модификации, несколько улучшающие точность. Например, если брать постоянные значения в виде yk 1 yk f ( xk , yk f ( xk , yk ) ) . 2 2 Наиболее распространенным численным методом решения указанной задачи Коши является метод Рунге-Кутта. При решении дифференциального уравнения этим методом интегральная кривая заменяется ломаной, состоящей из кусков парабол. Метод Рунге-Кутта встроен в пакет программ MAXIMA. Например, мы хотим решить дифференциальное уравнение y y 2 x с начальным условием y(0) 0.3 . При этом мы задаем отрезок [0,1], на котором хотим получить численное решение и шаг разбиения этого отрезка, равный 0.05. Мы должны ввести команду load(dynamics); rk(y^2+x,y,0.3,[x,0,1,0.05]); После того, как мы нажмем клавиши Shift+Enter, получим данные [[0,0.3],[0.05,0.30583128660202],[0.1,0.31438277172198],[0.15, 0.32574776902574],[0.2,0.34003114365951],[0.25,0.35735268712942],[0.3, 0.37785103897622],[0.35,0.40168830090343],[0.4,0.42905553899765],[0.45, 0.46017943684494],[0.5,0.49533045405802],[0.55,0.53483297195895],[0.6, 0.57907808748734],[0.65,0.62853997325452],[0.7,0.6837970957275],[0.75, 0.74556013793749],[0.8,0.81470931041585],[0.85,0.89234502470182],[0.9, 0.97985793824278],[0.95,1.079027666994073],[1.0,1.192164923146931]]. Это означает, что мы получили узловые значения решения: y(0.05)= 0.30583128660202,…, y(0.4)= 0.42905553899765,….. Приближенное решение дифференциальных уравнений высших порядков сводятся к решению систем уравнений первого порядка. Например, требуется решить дифференциальное уравнение y x( y)2 3x2 y 2 на отрезке [0,2] с шагом 0.1 при начальных условиях y(0) 1, y(0) 0 . Введем новую y z, функцию z y . Теперь уравнение запишется в виде системы z 2 xz 3x y 2 2 с начальными условиями y(0) 1, z(0) 0 . 165