Численные методы решения дифференциальных уравнений
Общий вид обыкновенного дифференциального уравнения, устанавливающего связь между независимой переменной x неизвестной функцией y и ее производными y’,y”,…,y(n), может мыть представлен следующим образом:
F(x, y, y , y ,.....y(n) ) 0
Порядок наивысшей производной, входящей в уравнение, называется порядком этого уравнения. Решение дифференциального уравнения (интегрированием) является
некоторая функциональная зависимость y=y(x), которая при подстановке в уравнение обращает его в тождество.
Общее решение дифференциального уравнения записывается в виде: y=y(x,c1,c2,…,cn), где c1,c2,…,cn произвольные постоянные.
Решение, полученное из общего решения при фиксированных значениях, называется частным решением уравнения. Постоянные c1,c2,…,cn можно определить, задав n условий.
Если эти условия заданы как совокупность значений искомой функции и всех ее производных до (n-1)ого порядка включительно в некоторой течке x0, то задача решения
уравнения называется задачей Коши, а заданные условия:
y(x0)=y0, y’(x0)=y’0, y”(x0)=y”0,…, yn-1(x0)=yn-10 называются начальными условия.
Если же условия заданы при нескольких значениях x, то задача решения |
|
дифференциального уравнения будет называться граничной или краевой задачей. |
1 |
|
Рассмотрим дифференциальное уравнение первого порядка:
F(x, y, y ) 0
соотношение часто удается записать в виде:
y f (x, y)
Последнее уравнение называется дифференциальным уравнением, разрешенным относительно производной. Значение производной равно тангенсу угла наклона
касательной к графику функции в точке (x,y). Функцию f(x,y) будем называть правой частью дифференциального уравнения.
Общим решением уравнения будет являться семейство функций y=y(x,c1) различающихся значение постоянной c1. Задаем одно начальное условие y(x0)=y0, которое определяет значение c1и конкретное частное решение – задача Коши.
Для простейшего дифференциального уравнения y’=3x2. Общее решение имеет вид y=x3+c, а подставив в общее решение начальное условие x0=1, y0=2 вычислим с=1 и определим
частное решение как: y=x3+1
2
|
|
|
10 |
|
|
|
|
|
|
|
9 |
|
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
7 |
|
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
5 |
|
|
|
|
|
|
|
4 |
|
|
|
|
|
|
y0 |
3 |
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
0 |
|
x0 |
|
|
-3 |
-2 |
-1 |
-1 |
0 |
2 |
3 |
|
-2 |
1 |
||||||
|
|
|
-3 |
|
|
|
|
|
|
|
-4 |
|
|
|
|
|
|
|
-5 |
|
|
|
|
|
|
|
-6 |
|
|
|
|
|
|
|
-7 |
|
|
|
|
|
|
|
-8 |
|
|
|
|
|
|
|
-9 |
|
|
|
|
Метод Эйлера
Дано дифференциальное уравнение y’=f(x,y), удовлетворяющее начальному условию y(x0)=y0 . Требуется найти решение на отрезке [a,b]. Разобьем отрезок интегрирования на n
равных частей: x0=a, x1= a+h, x2=x1+h,…,xi=xi–1+h,…,xn=b, тогда величина шага
h b a |
3 |
интегрирования будет равна:
n
|
|
|
|
y |
|
|
|
|
|
|
|
|
y2 |
|
|
|
|
|
|
Значение функции y1 |
в |
y1 |
|
|
|
|
|
|
|
точке x1 можно определить |
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|||
как точку пересечения |
|
|
|
|
|
y=y(x) |
|
||
касательной проведенной к |
|
|
|
|
|
|
|
||
функции y=y(x) в точке |
|
|
|
|
|
|
|
||
(x0,y0) с вертикальной |
|
|
|
β |
|
|
|
|
|
прямой проходящей через |
y0 |
|
|
|
|
|
|||
точку x1. |
|
|
|
|
|
|
|
|
x |
|
|
|
|
x0 |
x1 |
x2 |
xi |
xn-1 |
xn |
Тангенс угла наклона касательной есть значение производной в точке (x0,y0) и задается |
|||||||||
правой частью дифференциального уравнения, т.е. tg( β)=f(x0,y0). С другой стороны из |
|||||||||
геометрического представления метода можно записать: |
|
|
|
||||||
tg( ) y1 |
y0 y1 |
y0 |
Следовательно |
y1 y0 |
f (x0 , y0 ) |
|
|
||
x1 |
x0 |
h |
|
|
h |
|
|
|
|
Откуда |
y1 y0 h f (x0 , y0 ) |
y2 y1 |
h f (x1, y1) |
и т.д. |
|
|
|||
x1 x0 h |
|
x2 x1 |
h |
|
|
|
|
||
|
|
|
|
|
|
||||
Решение будет заключаться в последовательном применении формул: |
|
||||||||
yi yi 1 |
h f (xi 1, yi 1) |
где i = 1, 2, 3, …, n |
xi xi 1 |
h |
4 |
Результат будет представлен функцией заданной таблицей.
Пример
|
y |
; a 1; |
b 3; |
n 4; |
h 0.5 |
x0 1; |
y0 2; |
y |
C |
C 2 |
|
|
|||||||||
y |
x |
x |
y1 = -2+0.5*(-(-2/1)) = -1 x1 = 1+0.5 =1.5
y2 = -1+0.5*(-(-1/1.5)) = -0.667 x2 = 1.5+0.5 =2
и т.д.
X |
Y(Эйлер) |
Y(теор) |
|
|
|
1 |
-2 |
-2 |
|
|
|
1.5 |
-1 |
-1.333 |
|
|
|
2 |
-0.667 |
-1 |
|
|
|
2.5 |
-0.5 |
-0.8 |
|
|
|
3 |
-0.4 |
-0.667 |
|
|
|
5
|
|
|
|
|
|
Модифицированный метод Эйлера |
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
Графическая интерпретация. |
|
|
|
h |
|
|
|
|
|||||||||
Определяем точку |
x 12 |
x0 |
h |
и вычисляем значение |
y 12 |
y0 |
|
f (x0 , y0 ) |
|||||||||||||||||
2 |
функции в этой точке |
|
2 |
||||||||||||||||||||||
Значение функции y1 в точке x1 |
определяем, как точку пересечения касательной, |
||||||||||||||||||||||||
вычисленной в точке (x1/2,y1/2) и проведенной к функции y=y(x) в точке (x0,y0) , с |
|||||||||||||||||||||||||
вертикальной прямой проходящей через точку x1. |
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
y |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y1/2 |
|
|
|
|
|
|
|
|
|
|
|
y=y(x) |
|
|
|
|
|
|
|
|
||
|
|
|
y1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y0 |
|
|
|
|
β |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
x |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
x0 |
x1/2 |
x1 |
|
x2 |
|
|
xi |
xn-1 |
h |
xn |
h f (x |
|
|
|
|
|
|||
y |
y |
|
h f (x |
, y |
|
) |
или |
y |
y |
|
h f (x |
|
, y |
|
|
, y |
|
)) |
|||||||
1 |
|
0 |
|
|
12 |
|
12 |
|
|
1 |
|
0 |
|
|
0 |
2 |
|
0 |
2 |
0 |
|
|
0 |
|
|
x1 x0 |
h |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
произвольную точку определим
yi yi 1 |
h f (xi 1/ 2 |
, yi 1/ 2 ) или |
yi 1 h f (xi 1 |
h |
, yi 1 |
h f (xi 1, yi 1)) |
|||||||
xi xi 1 |
h |
|
|
|
|
2 |
|
2 |
|
|
|||
где i = 1, 2, 3, …, n |
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
Пример |
|
|
|
|
|
|
|
|
|
y |
; a 1; b |
3; |
n 4; |
h 0.5 |
x0 1; |
y0 |
2; |
y |
C |
C 2 |
|
|
|
|
|||||||||||
y |
x |
x |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||
y1/2 = -2+0.25*(-(-2/1)) = -1.5; x1/2 = 1+0.25 = 1.25
y1 = -2+0.5*(-(-1.5/1.25)) = -1.4; x1 = 1+0.5 = 1.5
y3/2 = -1.4 +0.25*(-(-1.4/1.5)) = -1.1667; x3/2 = 1.5+0.25 = 1.75
y2 = -1.4 +0.5*(-(-1.1667/1.75)) = -1.0667; y2 = 1.5+0.5 = 2
и т.д.
X |
Y(мод) |
Y(теор) |
|
|
1 |
-2 |
-2 |
|
|
1.5 |
-1.4 |
-1.3333 |
|
|
2 |
-1.0667 |
-1 |
|
|
2.5 |
-0.8593 |
-0.8 |
7 |
|
3 |
-0.7187 |
-0.6667 |
||
|
0
0 |
1 |
2 |
3 |
4 |
-0.5
-1 |
Y(Эйлер) |
|
|
|
Y(Мод) |
-1.5 |
Y(теор) |
|
-2
-2.5
8
Begin
euler(x,y,h)
x0,y0,xn,n
h:=(xn-x0)/n x(1):=x0; y(1):=y0 i=0
i=2 step 1 to n+1
y(i)=euler(x(i-1),y(i-1),h) x(i):=x(i-1)+h
function y=euler(x,y,h)
dfdx(x,y)
y=y+h*dfdx(x,y)
End
function y=us_euler(x,y,h)
dfdx(x,y)
y=y+h/2*(dfdx(x,y)+dfdx(x+h,y+h*dfdx(x,y))
End
plot(x,y)
End
function f=dfdx(x,y)
dfdx = 2 * (x ^ 2 + y)
function y=m_euler(x,y,h)
dfdx(x,y)
y=y+h*dfdx(x+h/2,y+h/2*dfdx(x,y))
End
function y=rungekutt(x,y,h)
dfdx(x,y)
k0:=dfdx(x,y)
k1:=dfdx(x+h/2,y+h*k0/2)
k2:=dfdx(x+h/2,y+h*k1/2)
k3:=dfdx(x+h,y+h*k2)
y=y+h/6*(k0+2*k1+2*k2+k3)
End
End |
9 |
Аналитический вывод формул
dxdy f (x, y)
Необходимо найти значения функции y(x) в заданных точках x1, x2,… xn, если известны начальные значения (x0, y0 ), где y0=y(x0) . Преобразуем уравнение
dy f (x, y)dx
Проинтегрируем левую и правую части уравнения между xi и xi+1 точкой |
|
|||||
yi 1 |
xi 1 |
|
xi 1 |
|
|
|
dy |
f (x, y)dx |
yi 1 yi f (x, y)dx |
|
|||
yi |
xi |
|
xi |
|
|
|
Интегрируем методом прямоугольники вперед |
|
|
||||
xi 1 |
|
f (xi , yi ) (xi 1 xi ) yi f (xi , yi ) h |
|
|||
yi 1 yi f (xi , yi )dx yi |
|
|||||
xi |
|
|
|
|
|
|
Интегрируем методом в среднем |
xi 1/ 2 xi h / 2 |
|
||||
xi 1 |
|
f (xi 1/ 2 , yi 1/ 2 ) h |
|
|||
yi 1 yi f (xi 1/ 2 , yi 1/ 2 )dx yi |
yi 1/ 2 yi h / 2 f (xi , yi ) |
|||||
xi |
|
|
|
|||
|
Интегрируем методом трапеций |
|
|
|||
yi 1 yi h / 2 (f (xi , yi ) f (xi 1, yi 1)) |
xi 1 xi |
h |
10 |
|||
yi 1 yi |
h f (xi , yi ) |
|||||
|
|
|
|
|||
|
|
|
|
Система дифференциальных уравнений |
|
|
|
||||||||||
|
|
|
|
|
|
y1' f (x, y1, y2 , y3,..., yn ) |
|
|
|
|
|||||||
|
|
|
|
|
|
y2 |
' f (x, y1, y2 , y3,..., yn ) |
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
yn |
' f (x, y1, y2 , y3,..., yn ) |
|
|
|
|
||||||
где x — независимая переменная, а |
y1(x), y2(x), ..., yn(x) — неизвестные функции, n — |
|
|||||||||||||||
порядок системы. |
y1 |
'(x) |
|
|
f1(x, y1, y2 |
, yn |
|
|
|
||||||||
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
'(x) |
|
|
|
|
|
(x, y1, y2 |
|
|
|
|
|
|
Обозначив |
|
y2 |
|
|
|
f2 |
, yn или |
Y' F (x, Y) |
|||||||||
|
Y' |
|
|
|
|
F (x, Y) |
|
|
|
|
|
|
|
|
|
||
|
|
y |
n |
'(x) |
|
|
f |
n |
(x, y , y |
2 |
, y |
|
|
|
|
||
|
|
|
|
|
|
|
|
|
1 |
|
n |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Решением системы называется вектор-функцияY(x), которая определена и непрерывно |
|||||||||||||||||
дифференцируема на интервале (a, b) и удовлетворяет системе, т.е. для всех |
xo (a,b) |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
справедливо |
Y' |
F (x, Y) |
|
|
|
|
|
|
|
yn f (x, y, y', y'',..., yn 1) |
|||||||
дифференциальные уравнения n-ого порядка |
|||||||||||||||||
Приводим к системе дифференциальных уравнений |
|
|
|
||||||||||||||
|
|
|
|
|
|
y y1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y1' y2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y2 ' y3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
............ |
|
|
|
|
|
|
|
|
|
11 |
|
|
|
|
|
|
|
yn ' f (x, y1, y2 , y3,..., yn ) |
|
|
|
|
|||||||
