求大神看下MATLAB程序,提示ode45函数出错。

你这个程序出错是因为目标函数写错了,可这样改:
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)];追问

改好又出现这个错误了,大神求教。

温馨提示:内容为网友见解,仅供参考
无其他回答

matlab使用ode45函数一直报错,哪位大佬能帮帮忙?
1、主程序 1)时间区间设定错误,t=12000值设定偏大,不符合微分方程题意,所以t应取1.2。所以 tspan=[0 1.2]; 而不是tspan=[0 12000];2) for i=[1: (size(y,5))];...end 该循环语句没有作用 2、自定义微分方程函数 1)dTUdt=TMfunc(t,y)定义有误,与主程序 @TMfunc3函数...

matlab ode45为什么显示错误
错误的原因,有 1、自定义函数的格式不对。应该这样来写 dxy=@(t,x)[(-0.0106*x(1)+5400).*(t>=0&t<1)+600.*(t>=2&t<3)+13000.*(t>=5&t<6);-0.0544*x(2)];2、polt(t,xy(:,1),'r*',t,xy(:,2),'gD')这个命令,书写格式也存在问题。应该这样来写 plot(t,xy(...

matlab使用ode45函数老是报错(line115),求助!
根据您提供的代码,ode45 函数在正常情况下不应该报错。然而,可能有以下几种情况导致 ode45 函数报错:函数 myfunY1(t,y,P1,P2,c1,c2,d1,d2) 中存在错误,例如语法错误、函数定义错误、参数传递错误等。请确保函数 myfunY1(t,y,P1,P2,c1,c2,d1,d2) 在调用时没有报错。变量 P1, P2, c1,...

让我崩溃的MATLAB报错:ode45的函数没有足够的输入参数
长时间未接触 MATLAB 编程,近期尝试求解微分方程组,使用 ode45 函数却遭遇报错。长时间调试未果,怀疑是环境问题,尝试在不同电脑运行仍无解。最终求助 ChatGPT 才得知问题所在。记录这一经历。简化代码至基本形式,方便查看:脚本文件(MAIN.m):函数文件(FUNC.m):运行上述代码后,报错信息明确指出...

求大神看下MATLAB程序,提示ode45函数出错。
你这个程序出错是因为目标函数写错了,可这样改: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...

为什么matlab r2016a用ode45会报错
为什么matlab r2016a用ode45会报错,其主要原因是ode45函数格式书写错误,应按下列格式修改 [t,x]=ode45(@odefun3,[0,4],[1,0])修改后运行可得到如下结果。

matlab使用ode45函数老是报错,求助!解答出来愿意加币!
matlab使用ode45函数老是报错,其错误在func(t,x)返回值不对应,函数要求对应值为 f,而题主返回值却为func。纠正错误即可正常计算【t,x】值。function f=func(t,x)la=0.224676956228413 * exp( -0.06936774465917156 * t );mu=0.005191914574791744 * exp( 0.02411992774086811 * t );f=[(la...

matlab ode45计算出错,请问怎么改
“FUN 返回的向量的长度为 3,但初始条件向量的长度为6”的错误意思是,方程个数只有3个,而变量数有6个。也就是说,方程个数应等于变量数。解决的办法:再增加3个方程或把变量改为3个

matlab ode45用法报错
把 “[t,C]=ode45(@func1,tspan,C0,[],k)”改成 [t,C]=ode45(@(t,C)func1(t,C,k),tspan,C0)你原来那句是老用法,新版不支持了,改用@.

matlab ode45求解有错误
MATLAB提供了7个常微分方程求解器(solver),分别是ode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb,其中前3个适用于求解非刚性(Nonstiff)问题,后4个适用于刚性问题。所谓刚性问题,简单点说,就是系统包含多个相互作用但变化速度相差十分悬殊的子过程。ode45基于显式4-5阶龙格库塔公式...

相似回答