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'); 展开
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'); 展开
1个回答
展开全部
根据您提供的代码,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 工作空间中的所有变量和函数,以确保代码中使用的变量和函数没有被其他命名空间中的同名变量和函数影响。
如果您能提供更多的详细信息,例如报错信息和代码执行时的环境和输入参数,我可以帮助您更好地诊断和解决问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询