function dydt=myfunY1(t,y,P1,P2,c1,c2,d1,d2)
dydt=zeros(2,1);
dydt(1)=y(1)*(1-y(1))*(y(2)*(P1+c1-d2)-c1);
dydt(2)=y(2)*(1-y(2))*(y(1)*(P2+c2-d1)-c2);
end
%%%%figure1
clc;
clear all;
close all;
%参考数值
alpha = 7/12;
V=60;
P1=alpha*V;
P2=(1-alpha)*V;
c1=7;
c2=10;
d1=30;
d2=20;
h=0.2;
tspan=[0:h*0.1:1];
x0=[0.6;0.6];
P1_I=[15 35 45 55];
result=[];
for i=1:length(P1_I)
p1=P1_I(i);
[t,x]=ode45(@(t,y) myfunY1(t,y,P1,P2,c1,c2,d1,d2),tspan,x0) ;
result=[result ;x'];
end
figure(1);
plot(t',result(1,:),'b-o');
hold on;
plot(t',result(3,:),'b-p');
plot(t',result(5,:),'b-x');
plot(t',result(7,:),'b-s');
xlabel('Time');
ylabel('Solution');
legend('x:P1=15','x:P1=35','x:P1=45','x:P1=55');
根据您提供的代码,ode45 函数在正常情况下不应该报错。然而,可能有以下几种情况导致 ode45 函数报错:
函数 myfunY1(t,y,P1,P2,c1,c2,d1,d2) 中存在错误,例如语法错误、函数定义错误、参数传递错误等。请确保函数 myfunY1(t,y,P1,P2,c1,c2,d1,d2) 在调用时没有报错。
变量 P1, P2, c1, c2, d1, d2, h, tspan, x0, P1_I 等参数的赋值存在错误。请确保这些参数的赋值没有错误,并且在 ode45 函数调用时使用的值是正确的。
可能存在 MATLAB 工作空间中的其他变量或函数与代码中的变量或函数发生冲突,导致 ode45 函数无法正确解析。建议在运行该代码前,清除 MATLAB 工作空间中的所有变量和函数,以确保代码中使用的变量和函数没有被其他命名空间中的同名变量和函数影响。
如果您能提供更多的详细信息,例如报错信息和代码执行时的环境和输入参数,我可以帮助您更好地诊断和解决问题。
matlab使用ode45函数老是报错(line115),求助!
可能存在 MATLAB 工作空间中的其他变量或函数与代码中的变量或函数发生冲突,导致 ode45 函数无法正确解析。建议在运行该代码前,清除 MATLAB 工作空间中的所有变量和函数,以确保代码中使用的变量和函数没有被其他命名空间中的同名变量和函数影响。如果您能提供更多的详细信息,例如报错信息和代码执行时的环...
matlab使用ode45函数一直报错,哪位大佬能帮帮忙?
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函数名不统一 2...
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函数老是报错,求助!解答出来愿意加币!
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的函数没有足够的输入参数
长时间未接触 MATLAB 编程,近期尝试求解微分方程组,使用 ode45 函数却遭遇报错。长时间调试未果,怀疑是环境问题,尝试在不同电脑运行仍无解。最终求助 ChatGPT 才得知问题所在。记录这一经历。简化代码至基本形式,方便查看:脚本文件(MAIN.m):函数文件(FUNC.m):运行上述代码后,报错信息明确指出...
为什么matlab r2016a用ode45会报错
为什么matlab r2016a用ode45会报错,其主要原因是ode45函数格式书写错误,应按下列格式修改 [t,x]=ode45(@odefun3,[0,4],[1,0])修改后运行可得到如下结果。
matlab ode45用法报错
把 “[t,C]=ode45(@func1,tspan,C0,[],k)”改成 [t,C]=ode45(@(t,C)func1(t,C,k),tspan,C0)你原来那句是老用法,新版不支持了,改用@.
求大神看下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 ode45求解有错误
MATLAB提供了7个常微分方程求解器(solver),分别是ode45, ode23, ode113, ode15s, ode23s, ode23t, ode23tb,其中前3个适用于求解非刚性(Nonstiff)问题,后4个适用于刚性问题。所谓刚性问题,简单点说,就是系统包含多个相互作用但变化速度相差十分悬殊的子过程。ode45基于显式4-5阶龙格库塔公式...
Matlab的ode45函数出错,高分求解!!
因为你x=0时2\/x是无穷大呀,然后y'又是0,然后(2\/x)y'就是nan了,所以后面算的全是nan了。