急求各位帮我看看这个ode45()程序为什么出错了?

我这是在matlabhelp里拷贝的程序,但是不能运行,不知道怎么回事,请哪位高手指点一下,程序如下:functiondy=rigid(t,y)dy=zeros(3,1)... 我这是在matlab help里拷贝的程序,但是不能运行,不知道怎么回事,请哪位高手指点一下,程序如下:
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);
并且我在书上,网上也找了很多这样关于求解微分方程组的程序,但都出现了同样的输入变量没有定义的情况。
展开
 我来答
匿名用户
2010-05-05
展开全部
第一, 要把从 function dy = rigid(t, y) 到 dy(3)=-0.51*y(1)*y(2) 放到另一个档案, 档名 rigid.m. 其余的三行看是要放到另一个档案, 或者是直接放到工作视窗.
第二, 在 plot 命令列中, 大写的 T 要全部改成小写的 t, 因为你之前的 ode45 命令的返回值中, 自变数部份是以小写的 t 作为返回变数名的.

然后你就可以执行了, 我试了一下, 没有任何问题.
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式