Matlab调用ode函数程序出错

我在Matlab实用教程的书上联系一个求解微分方程的程序它是求解一个y'=-2y+2x²+2x,y(0)=1在M文件中输入functf=example(x,y)... 我在Matlab实用教程的书上联系一个求解微分方程的程序它是求解一个y'=-2y+2x²+2x,y(0)=1在M文件中输入funct f=example(x,y);f=-2*y+2*x.^2+2*x;在命令窗格中输入[x,y]=ode23('example',[0,0.5],1)运行结果显示找不到指定模块然后就错误弹出了 展开
 我来答
咆盏颜方驮绽付Cx
2018-06-13 · TA获得超过328个赞
知道小有建树答主
回答量:395
采纳率:50%
帮助的人:60万
展开全部
你贴的代码不完整(尤其是出错的函数opfun的代码),原因不太容易判断。
猜测比较大的可能是,在出错的那行之前,变量Y被赋过值,但行数不是10。
其实检查这类问题非常容易,在出错的地方设置断点,然后运行程序到该行暂停,这时检查等号右边算出来的结果是什么,再看看左边的Y是什么,基本上就找到原因了。
追问
你说的是odefun吗,ode23语法规则的function就是这个等式右侧的函数。还有出错的提示都没有直接就弹出来了,像图上那样。
愈桖杉0iv
2018-06-13 · 超过58用户采纳过TA的回答
知道小有建树答主
回答量:164
采纳率:0%
帮助的人:11.3万
展开全部
你这个程序出错是因为目标函数写错了,可这样改:
function dy = ndd_fun(t,y,C)
chi=C(1);lambda=C(2);lambda_s=C(3);chi_s=C(4);Z_s=C(5);mu=C(12);
theta=C(6);B=C(7);V=C(8);Delta=C(9);delta=C(10);alpha=C(11);
Z = y(1); l = y(2); v = y(3);
psi = (Z>=0&Z<1).*( chi*Z.*(1 + lambda*Z + mu*Z) ) +...
(Z>=1&Z<Z_s).*( chi_s*Z.*(1 + lambda_s*Z) ) +...
(Z>=Z_s)*1;
l_psi = 1 - (Delta/delta)*(1-psi) - alpha*Delta*psi;
p = ( psi - v*v )/( l + l_psi );
dy(1) = sqrt(theta/(2*B))*(p^V)*(Z>=0&Z<=Z_s);
dy(2) = v;
dy(3) = theta*p/2;
dy=[dy(1);dy(2);dy(3)];
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式