matlab使用ode45函数老是报错(line115),求助! 5

functiondydt=myfunY1(t,y,P1,P2,c1,c2,d1,d2)dydt=zeros(2,1);dydt(1)=y(1)*(1-y(1))*(y(2... 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');
展开
 我来答
田晓灵15
2023-04-12 · 互联网超新兴势力1122
田晓灵15
采纳数:26 获赞数:33

向TA提问 私信TA
展开全部

根据您提供的代码,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 工作空间中的所有变量和函数,以确保代码中使用的变量和函数没有被其他命名空间中的同名变量和函数影响。

  • 如果您能提供更多的详细信息,例如报错信息和代码执行时的环境和输入参数,我可以帮助您更好地诊断和解决问题。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式