有人在用matlab解微分方程的时候遇到这个问题了吗?

来源:百度知道 编辑:UC知道 时间:2024/06/05 12:38:03
在matlab中用ode45解微分方程,在定义函数
function dy = rigid(t,y)
dy = zeros(3,1); % a column vector
dy(1) = y(2) * y(3);
dy(2) = -y(1) * y(3);
dy(3) = -0.51 * y(1) * y(2);
options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);
[T,Y] = ode45(@rigid,[0 12],[0 1 1],options);
plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'.')
此时在编译程序的时候,发生错误:
??? Input argument "y" is undefined.

Error in ==> rigid at 3
dy(1) = y(2) * y(3);
请问各位大侠知道怎么解决这个问题嘛?

我这里没有问题
你不会是把这些代码写在同一个地方了吧?。。。

应该是把
function dy = rigid(t,y)
dy = zeros(3,1); % a column vector
dy(1) = y(2) * y(3);
dy(2) = -y(1) * y(3);
dy(3) = -0.51 * y(1) * y(2);
写在rigid.m文件中

再新建一个m文件,在里面执行options = odeset('RelTol',1e-4,'AbsTol',[1e-4 1e-4 1e-5]);
[T,Y] = ode45(@rigid,[0 12],[0 1 1],options);
plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'.')

你原来是在一个函数里直接执行,它的参数没有被定义,当然有错误了啊