Решение дифференциальных уравнений

Maple располагает встроенной функцией dsolve для численного и аналитического решения дифференциальных уравнений и систем следующей структуры:
dsolve({ODE, 1С},{ funcs}, extra_args).
Здесь ODE - дифференциальное уравнение или система уравнений, 1С - начальные или граничные условия, funcs - неизвестная функция (или функции), extra_args - параметры, определяющие метод решения задачи, для численного решения необходимо указать type=numeric.
Решение дифференциального уравнения рассмотрим на примере.

Eq1:=diff(x(t),t$2)+4*diff(x(t),t)+13*x(t)=exp(t);#Определяем уравнение
Eq1 := diff(x(t),`$`(t,2))+4*diff(x(t),t)+13*x(t) = exp(t)
Init_cond:=x(0.25)=-1,D(x)(0.25)=1;#Определяем начальные условия
Init_cond := x(.25) = -1, D(x)(.25) = 1
dsolve({Eq1,Init_cond},x(t));#Решаем уравнение аналитически с помощью функции dsolve
x(t) = -1/18*exp(-2*t)*sin(3*t)/exp(-1/2)/(sin(3/4)^2+cos(3/4)^2)*(6*cos(3/4)+exp(1/4)*cos(3/4)+18*sin(3/4)+sin(3/4)*exp(1/4))+1/18*exp(-2*t)*cos(3*t)*(6*sin(3/4)+sin(3/4)*exp(1/4)-18*cos(3/4)-exp(1/4)...
x(t) = -1/18*exp(-2*t)*sin(3*t)/exp(-1/2)/(sin(3/4)^2+cos(3/4)^2)*(6*cos(3/4)+exp(1/4)*cos(3/4)+18*sin(3/4)+sin(3/4)*exp(1/4))+1/18*exp(-2*t)*cos(3*t)*(6*sin(3/4)+sin(3/4)*exp(1/4)-18*cos(3/4)-exp(1/4)...

Теперь на примере этой же задачи рассмотрим решение систем. Это уравнение может быть записано как система обыкновенных дифференциальных уравнений с начальными условиями. Решение систем,в Maple мало чем отличается от решения уравнений, просто вместо одного уравнения через запятую записывается несколько.

Eq2:=diff(y(t),t)+4*diff(y(t),t)+13*x(t)=exp(t),diff(x(t),t)=y(t);#Определяем систему уравнение
Eq2 := 5*diff(y(t),t)+13*x(t) = exp(t), diff(x(t),t) = y(t)
init_2:=y(0.25)=1,x(0.25)=-1;#Определяем начальные условия
init_2 := y(.25) = 1, x(.25) = -1
dsolve({Eq2,init_2},{x(t),y(t)}); #Решаем систему уравнение аналитически с помощью функции dsolve
{x(t) = -1/1170*sin(1/5*65^(1/2)*t)*(5*cos(1/20*65^(1/2))*exp(1/2)-90*cos(1/20*65^(1/2))*exp(1/4)+65^(1/2)*exp(1/2)*sin(1/20*65^(1/2))+18*sin(1/20*65^(1/2))*65^(1/2)*exp(1/4))*65^(1/2)/exp(1/4)-1/1170*...
{x(t) = -1/1170*sin(1/5*65^(1/2)*t)*(5*cos(1/20*65^(1/2))*exp(1/2)-90*cos(1/20*65^(1/2))*exp(1/4)+65^(1/2)*exp(1/2)*sin(1/20*65^(1/2))+18*sin(1/20*65^(1/2))*65^(1/2)*exp(1/4))*65^(1/2)/exp(1/4)-1/1170*...
{x(t) = -1/1170*sin(1/5*65^(1/2)*t)*(5*cos(1/20*65^(1/2))*exp(1/2)-90*cos(1/20*65^(1/2))*exp(1/4)+65^(1/2)*exp(1/2)*sin(1/20*65^(1/2))+18*sin(1/20*65^(1/2))*65^(1/2)*exp(1/4))*65^(1/2)/exp(1/4)-1/1170*...
{x(t) = -1/1170*sin(1/5*65^(1/2)*t)*(5*cos(1/20*65^(1/2))*exp(1/2)-90*cos(1/20*65^(1/2))*exp(1/4)+65^(1/2)*exp(1/2)*sin(1/20*65^(1/2))+18*sin(1/20*65^(1/2))*65^(1/2)*exp(1/4))*65^(1/2)/exp(1/4)-1/1170*...
{x(t) = -1/1170*sin(1/5*65^(1/2)*t)*(5*cos(1/20*65^(1/2))*exp(1/2)-90*cos(1/20*65^(1/2))*exp(1/4)+65^(1/2)*exp(1/2)*sin(1/20*65^(1/2))+18*sin(1/20*65^(1/2))*65^(1/2)*exp(1/4))*65^(1/2)/exp(1/4)-1/1170*...
{x(t) = -1/1170*sin(1/5*65^(1/2)*t)*(5*cos(1/20*65^(1/2))*exp(1/2)-90*cos(1/20*65^(1/2))*exp(1/4)+65^(1/2)*exp(1/2)*sin(1/20*65^(1/2))+18*sin(1/20*65^(1/2))*65^(1/2)*exp(1/4))*65^(1/2)/exp(1/4)-1/1170*...

Аналогичным образом можно решать и более сложные системы. В качестве еще одного примера рассмотрим жесткую систему.Однако, интервал интегрирования системы следует разбивать на меньшие участки и решать жесткую систему последовательно на каждом из них.

eq3:=diff(x(t),t)=-7*x(t)+7*y(t),diff(y(t),t)=157*x(t)+y(t)-1.15*x(t)*z(t),diff(z(t),t)=0.96*x(t)*y(t)-8.36*z(t);#Система дифференциальных уравнений
eq3 := diff(x(t),t) = -7*x(t)+7*y(t), diff(y(t),t) = 157*x(t)+y(t)-1.15*x(t)*z(t), diff(z(t),t) = .96*x(t)*y(t)-8.36*z(t)
init_3:=x(0)=-1,y(0)=0,z(0)=1; #Начальные условия системы
init_3 := x(0) = -1, y(0) = 0, z(0) = 1
XYZ:=dsolve({eq3,init_3},{x(t),y(t),z(t)},type=numeric);#Формируем численное решение системы
XYZ := proc (x_rkf45) local res, data, vars, solnproc, outpoint, ndsol, i; option `Copyright (c) 2000 by Waterloo Maple Inc. All rights reserved.`; _EnvDSNumericSaveDigits := Digits; Digits := 14; if _...
XYZ(0); XYZ(0,2); XYZ(1); #Вычмсляем значения x,y,z в нужных точках
[t = 0., x(t) = -1., y(t) = 0., z(t) = 1.]
[t = 0., x(t) = -1., y(t) = 0., z(t) = 1.]
[t = 1., x(t) = -28.4044374262255950, y(t) = 75.9537923768342296, z(t) = 110.900896315733888]