![]() |
[求助]请教一下,下面这段代码怎么修改!
函数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的两个分量是函数的情况,出现了上面的错误,应该怎么改正,谢谢高手!!!!!!!!!!!! |
[QUOTE=闫世军 neu;11671]函数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...[/QUOTE] dy(2) 算出來應該是一個值 但是因為 u(1:366) 這個地方會使得 dy(2) 算出來是一個向量 所以不對了 這邊修一下吧:smile: |
[QUOTE=fgabertb;11673]dy(2) 算出來應該是一個值
但是因為 u(1:366) 這個地方會使得 dy(2) 算出來是一個向量 所以不對了 這邊修一下吧:smile:[/QUOTE] 为什么算出来非得是一個值,算出来就是个向量怎么了????不明白,请教高手解答!!! |
所有时间均为北京时间。现在的时间是 11:17。 |
Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.