要使用matlab解决以下ODE
t = 0:.01:20;
x0 = [0 0]';
xdot = @(t,x) [0 1; 0 0] * x;
ode45(@(t,x) xdot(x(1), x(2)),t,x0)
我收到此错误:
使用odearguments时出错(第91行)@(T,X)XDOT(X(1),X(2))必须返回一个 列向量。
答案 0 :(得分:0)
您的x0
是一个2 by 1
矩阵,请在您的函数句柄中进行精确设置
xdot = @(t,x) [0 1; 0 0] * x; ---> xdot = @(t,x) [0 1; 0 0] * [x(1);x(2)];
由于xdot
已被定义为一个函数,因此您不需要@
即可将其传递给ode45
代码如下
t = 0:.01:20;
x0 = [0 0]';
xdot = @(t,x) [0 1; 0 0] * [x(1);x(2)];
ode45(xdot,t,x0)