0

下面用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)) 必须返回列向量。

4

1 回答 1

1

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)
于 2019-05-26T15:07:37.287 回答