闫世军 neu
2008-05-31, 00:10
函数fun1.m文件为
function dy=fun1(t,y)
u=[t/1000+0.1 t/1000+0.1];
dy=zeros(6,1);
m1=0.2;m2=0.000034;m3=0.0337;m4=0.0386;
w1=0.3;w2=0;w3=0.1;
p=0;
k1=0.1;k2=0.125;
d1=0.0079;d2=0.0068;
dy(1)=m2*(y(1)+y(2)+y(3)+y(4)+y(5)+y(6))-y(1)*(m1*y(4)+w1*m1*y(2)+w2*m1*y(3)+w3*m1*y(5))/(y(1)+y(2)+y(3)+y(4)+y(5)+y(6))-m2*y(1);
dy(2)=p+y(1)*(m1*y(4)+w1*m1*y(2)+w2*m1*y(3)+w3*m1*y(5))/(y(1)+y(2)+y(3)+y(4)+y(5)+y(6))-(u(1:366)+k1+m2).*y(2);---------------------------------错误行
dy(3)=u(1:366).*y(2)-(k2+m2)*y(3);
dy(4)=k1*y(2)-(u(367:end)+d1+m3+m2).*y(4);
dy(5)=u(367:end).*y(4)+k2*y(3)-(d2+m4+m2)*y(5);
dy(6)= m3*y(4)+m4*y(5)-m2*y(6);
主程序为
clear;
clc;
t=0:365;
u=[t./1000+0.1 t./1000+0.1];
y0=[12000000;1565;292;695;326;20];
[t,y]=ode45(@fun1,t,y0);
plot(t,y(:,1),'m')
matlab提示出现错误:
??? Index exceeds matrix dimensions.
Error in ==> fun1 at 10
dy(2)=p+y(1)*(m1*y(4)+w1*m1*y(2)+w2*m1*y(3)+w3*m1*y(5))/(y(1)+y(2)+y(3)+y(4)+y(5)+y(6))-(u(1:366)+k1+m2).*y(2);
Error in ==> funfun\private\odearguments at 110
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ==> ode45 at 173
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
Error in ==> xuxiang at 6
[t,y]=ode45(@fun1,t,y0);
针对u的两个分量是函数的情况,出现了上面的错误,应该怎么改正,谢谢高手!!!!!!!!!!!!
function dy=fun1(t,y)
u=[t/1000+0.1 t/1000+0.1];
dy=zeros(6,1);
m1=0.2;m2=0.000034;m3=0.0337;m4=0.0386;
w1=0.3;w2=0;w3=0.1;
p=0;
k1=0.1;k2=0.125;
d1=0.0079;d2=0.0068;
dy(1)=m2*(y(1)+y(2)+y(3)+y(4)+y(5)+y(6))-y(1)*(m1*y(4)+w1*m1*y(2)+w2*m1*y(3)+w3*m1*y(5))/(y(1)+y(2)+y(3)+y(4)+y(5)+y(6))-m2*y(1);
dy(2)=p+y(1)*(m1*y(4)+w1*m1*y(2)+w2*m1*y(3)+w3*m1*y(5))/(y(1)+y(2)+y(3)+y(4)+y(5)+y(6))-(u(1:366)+k1+m2).*y(2);---------------------------------错误行
dy(3)=u(1:366).*y(2)-(k2+m2)*y(3);
dy(4)=k1*y(2)-(u(367:end)+d1+m3+m2).*y(4);
dy(5)=u(367:end).*y(4)+k2*y(3)-(d2+m4+m2)*y(5);
dy(6)= m3*y(4)+m4*y(5)-m2*y(6);
主程序为
clear;
clc;
t=0:365;
u=[t./1000+0.1 t./1000+0.1];
y0=[12000000;1565;292;695;326;20];
[t,y]=ode45(@fun1,t,y0);
plot(t,y(:,1),'m')
matlab提示出现错误:
??? Index exceeds matrix dimensions.
Error in ==> fun1 at 10
dy(2)=p+y(1)*(m1*y(4)+w1*m1*y(2)+w2*m1*y(3)+w3*m1*y(5))/(y(1)+y(2)+y(3)+y(4)+y(5)+y(6))-(u(1:366)+k1+m2).*y(2);
Error in ==> funfun\private\odearguments at 110
f0 = feval(ode,t0,y0,args{:}); % ODE15I sets args{1} to yp0.
Error in ==> ode45 at 173
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...
Error in ==> xuxiang at 6
[t,y]=ode45(@fun1,t,y0);
针对u的两个分量是函数的情况,出现了上面的错误,应该怎么改正,谢谢高手!!!!!!!!!!!!