Matlab:使用匿名函数求解二阶ODE

时间:2019-05-26 12:40:39

标签: matlab anonymous-function ode45

要使用matlab解决以下ODE

enter image description here

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))必须返回一个   列向量。

1 个答案:

答案 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)