function dfdt=myfun(t,x)
dfdt = [...
x(2);
(1.5*((x(2))^2)*(cos(3*(x(1)))))-(((pi/2)^2) * ...
(sin((pi*t)/2)))-(20*((x(1))-(sin((pi*t)/2)))) - ...
((0.5*((x(2))^2)*abs(cos(3*(x(1)))))+0.1) * ...
sat(((x(2)-((pi/2)*cos((pi*t)/2))) + ...
(20*(x(1)-(sin((pi*t)/2)))))/0.1)-(((abs(sin(t)))+1) * ...
(cos(3*x(1)))*((x(2))^2))
];
sat
在这个等式中定义如下:
function f = sat(y)
if abs(y) <= 1
f = y;
else
f = sign(y);
end
我首先使用 ODE45 将其作为 ODE 求解,其中我将微分方程定义为向量:
[t, x] = ode45(@myfun, [0 4], [0 pi/2])
这工作正常。但是当我尝试使用以下方法求解同一组方程时fde12
:
[T,Y] = FDE12(ALPHA,FDEFUN,T0,TFINAL,Y0,h)
现在我称之为:
t0 = 0;
tfinal= 4 ;
h = 0.01;
x0 = [0 pi/2];
[t, x] = fde12(0.95, @myfun, t0,tfinal, x0,h);
(alpha
是分数阶微分,例如,0.95
)
它给出了以下错误:
Attempted to access x(2); index out of bounds because numel(x) = 1.