Matlab:使用匿名函数求解二阶 ODE
Matlab: Solve 2nd order ODE using anonymous function
用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)
我收到这个错误:
Error using odearguments (line 91) @(T,X)XDOT(X(1),X(2)) must return a
column vector.
你的 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)
用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)
我收到这个错误:
Error using odearguments (line 91) @(T,X)XDOT(X(1),X(2)) must return a column vector.
你的 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)