早教吧作业答案频道 -->其他-->
matlab 程序出错,帮我看看错在哪儿了函数function dvdt=huxi(t,v) global W L A po pc pn t v P0 P xo xc xn ro rcdvdt=[A/L*po*(xo*P0/100-v(1)/(v(1)+v(2)+v(3)+v(4))*P)-ro*W;A/L*pc*(xc*P0/100-v(2)/(v(1)+v(2)+v(3)+v(4))*P)+rc*W;A/L*pn*(xn*P0/10
题目详情
matlab 程序出错,帮我看看错在哪儿了
函数
function dvdt=huxi(t,v)
global W L A po pc pn t v P0 P xo xc xn ro rc
dvdt=[
A/L*po*(xo*P0/100-v(1)/(v(1)+v(2)+v(3)+v(4))*P)-ro*W;
A/L*pc*(xc*P0/100-v(2)/(v(1)+v(2)+v(3)+v(4))*P)+rc*W;
A/L*pn*(xn*P0/100-v(3)/(v(1)+v(2)+v(3)+v(4))*P);
0
];
运行
t_start=0;
t_end=1;
vv0=[yo0*V/100;yc0*V/100;yn0*V/100;ye0*V/100];
for ro=romin:0.1:romax
for rc=rcmin:0.1:rcmax
[t,v]=ode45('huxi',[t_start,t_end],vv0);
yo=v(end,1)/(v(end,1)+v(end,2)+v(end,3)+v(end,4));
yc=v(end,2)/(v(end,1)+v(end,2)+v(end,3)+v(end,4));
yn=v(end,3)/(v(end,1)+v(end,2)+v(end,3)+v(end,4));
if yo(1)==yoend/100 & yc(1)==ycend/100
break
ro
rc
end
end
end
说明
其中的参数如W,A,L,po,pc,pn,V,yo0,yc0,yn0,romax,romin,rcmax,rcmin,yoend,ycend等,已经在前面通过输入赋值了.
出错
Error using ==> funfun\private\odearguments
Solving HUXI requires an initial condition vector of length 2.
Error in ==> ode45 at 173
[neq,tspan,ntspan,next,t0,tfinal,tdir,y0,f0,odeArgs,odeFcn,...
%把程序补充完整了
function dvdt=huxi(t,v)
global W L A po pc pn P0 P xo xc xn ro rc;
dvdt=zeros(4,1);
dvdt=[
A/L*po*(xo*P0/100-v(1)/(v(1)+v(2)+v(3)+v(4))*P)-ro*W;
A/L*pc*(xc*P0/100-v(2)/(v(1)+v(2)+v(3)+v(4))*P)+rc*W;
A/L*pn*(xn*P0/100-v(3)/(v(1)+v(2)+v(3)+v(4))*P);
0];
%运行
W=0.106;L=0.012/1000;A=600/10000;V=500;
po=0.032498;pc=0.044255;pn=0.03837;
yo0=20.9;yc0=0.03;yn0=78.08;ye0=100-yo0-yc0-yn0;
romax=190;romin=150;rcmax=190;rcmin=150;
yoend=17.6;ycend=3.4;
xo=20.95;xc=0.03;xn=78.08;P0=101000;P=101000;
t_start=0;
t_end=1;
vv0=[yo0*V/100;yc0*V/100;yn0*V/100;ye0*V/100]; %初值
for ro=romin:0.1:romax
for rc=rcmin:0.1:rcmax
[t,v]=ode45('huxi',[t_start,t_end],vv0);
yo=v(end,1)/(v(end,1)+v(end,2)+v(end,3)+v(end,4));
yc=v(end,2)/(v(end,1)+v(end,2)+v(end,3)+v(end,4));
yn=v(end,3)/(v(end,1)+v(end,2)+v(end,3)+v(end,4));
if yo(1)==yoend/100 & yc(1)==ycend/100
ro
rc
end
end
end
函数
function dvdt=huxi(t,v)
global W L A po pc pn t v P0 P xo xc xn ro rc
dvdt=[
A/L*po*(xo*P0/100-v(1)/(v(1)+v(2)+v(3)+v(4))*P)-ro*W;
A/L*pc*(xc*P0/100-v(2)/(v(1)+v(2)+v(3)+v(4))*P)+rc*W;
A/L*pn*(xn*P0/100-v(3)/(v(1)+v(2)+v(3)+v(4))*P);
0
];
运行
t_start=0;
t_end=1;
vv0=[yo0*V/100;yc0*V/100;yn0*V/100;ye0*V/100];
for ro=romin:0.1:romax
for rc=rcmin:0.1:rcmax
[t,v]=ode45('huxi',[t_start,t_end],vv0);
yo=v(end,1)/(v(end,1)+v(end,2)+v(end,3)+v(end,4));
yc=v(end,2)/(v(end,1)+v(end,2)+v(end,3)+v(end,4));
yn=v(end,3)/(v(end,1)+v(end,2)+v(end,3)+v(end,4));
if yo(1)==yoend/100 & yc(1)==ycend/100
break
ro
rc
end
end
end
说明
其中的参数如W,A,L,po,pc,pn,V,yo0,yc0,yn0,romax,romin,rcmax,rcmin,yoend,ycend等,已经在前面通过输入赋值了.
出错
Error using ==> funfun\private\odearguments
Solving HUXI requires an initial condition vector of length 2.
Error in ==> ode45 at 173
[neq,tspan,ntspan,next,t0,tfinal,tdir,y0,f0,odeArgs,odeFcn,...
%把程序补充完整了
function dvdt=huxi(t,v)
global W L A po pc pn P0 P xo xc xn ro rc;
dvdt=zeros(4,1);
dvdt=[
A/L*po*(xo*P0/100-v(1)/(v(1)+v(2)+v(3)+v(4))*P)-ro*W;
A/L*pc*(xc*P0/100-v(2)/(v(1)+v(2)+v(3)+v(4))*P)+rc*W;
A/L*pn*(xn*P0/100-v(3)/(v(1)+v(2)+v(3)+v(4))*P);
0];
%运行
W=0.106;L=0.012/1000;A=600/10000;V=500;
po=0.032498;pc=0.044255;pn=0.03837;
yo0=20.9;yc0=0.03;yn0=78.08;ye0=100-yo0-yc0-yn0;
romax=190;romin=150;rcmax=190;rcmin=150;
yoend=17.6;ycend=3.4;
xo=20.95;xc=0.03;xn=78.08;P0=101000;P=101000;
t_start=0;
t_end=1;
vv0=[yo0*V/100;yc0*V/100;yn0*V/100;ye0*V/100]; %初值
for ro=romin:0.1:romax
for rc=rcmin:0.1:rcmax
[t,v]=ode45('huxi',[t_start,t_end],vv0);
yo=v(end,1)/(v(end,1)+v(end,2)+v(end,3)+v(end,4));
yc=v(end,2)/(v(end,1)+v(end,2)+v(end,3)+v(end,4));
yn=v(end,3)/(v(end,1)+v(end,2)+v(end,3)+v(end,4));
if yo(1)==yoend/100 & yc(1)==ycend/100
ro
rc
end
end
end
▼优质解答
答案和解析
问题所在:
Solving HUXI requires an initial condition vector of length 2.
初始条件长度为2,这儿有问题,(实际应该是4吧)
只能说明函数的定义不满足条件
改一下函数定义:
function dvdt=huxi(t,v)
global W L A po pc pn P0 P xo xc xn ro rc %去掉t v ,但应该不是主要问题
dvdt=zeros(4,1);%主要是检测函数有用
dvdt=[
A/L*po*(xo*P0/100-v(1)/(v(1)+v(2)+v(3)+v(4))*P)-ro*W;
A/L*pc*(xc*P0/100-v(2)/(v(1)+v(2)+v(3)+v(4))*P)+rc*W;
A/L*pn*(xn*P0/100-v(3)/(v(1)+v(2)+v(3)+v(4))*P);
0];
从你给的信息只能看到这些了,如果还有问题,信息再详细点
直接拷贝下面代码也可以运行
function solFOUND
global W L A po pc pn P0 P xo xc xn ro rc;
W=0.106;L=0.012/1000;A=600/10000;V=500;
po=0.032498;pc=0.044255;pn=0.03837;
yo0=20.9;yc0=0.03;yn0=78.08;ye0=100-yo0-yc0-yn0;
yoend=17.6;ycend=3.4;
xo=20.95;xc=0.03;xn=78.08;P0=101000;P=101000;
romax=190;romin=150;rcmax=190;rcmin=150;
t_start=0;
t_end=1;
vv0=[yo0*V/100;yc0*V/100;yn0*V/100;ye0*V/100]; %初值
for ro=romin %改回原来的
for rc=rcmin %改回原来的
[t,v]=ode45(@huxi,[t_start,t_end],vv0);
yo=v(end,1)/(v(end,1)+v(end,2)+v(end,3)+v(end,4));
yc=v(end,2)/(v(end,1)+v(end,2)+v(end,3)+v(end,4));
yn=v(end,3)/(v(end,1)+v(end,2)+v(end,3)+v(end,4));
if yo(1)==yoend/100 & yc(1)==ycend/100
ro
rc
end
end
end
function dvdt=huxi(t,v)
global W L A po pc pn P0 P xo xc xn ro rc;
dvdt=zeros(4,1);
dvdt=[
A/L*po*(xo*P0/100-v(1)/(v(1)+v(2)+v(3)+v(4))*P)-ro*W;
A/L*pc*(xc*P0/100-v(2)/(v(1)+v(2)+v(3)+v(4))*P)+rc*W;
A/L*pn*(xn*P0/100-v(3)/(v(1)+v(2)+v(3)+v(4))*P);
0];
Solving HUXI requires an initial condition vector of length 2.
初始条件长度为2,这儿有问题,(实际应该是4吧)
只能说明函数的定义不满足条件
改一下函数定义:
function dvdt=huxi(t,v)
global W L A po pc pn P0 P xo xc xn ro rc %去掉t v ,但应该不是主要问题
dvdt=zeros(4,1);%主要是检测函数有用
dvdt=[
A/L*po*(xo*P0/100-v(1)/(v(1)+v(2)+v(3)+v(4))*P)-ro*W;
A/L*pc*(xc*P0/100-v(2)/(v(1)+v(2)+v(3)+v(4))*P)+rc*W;
A/L*pn*(xn*P0/100-v(3)/(v(1)+v(2)+v(3)+v(4))*P);
0];
从你给的信息只能看到这些了,如果还有问题,信息再详细点
直接拷贝下面代码也可以运行
function solFOUND
global W L A po pc pn P0 P xo xc xn ro rc;
W=0.106;L=0.012/1000;A=600/10000;V=500;
po=0.032498;pc=0.044255;pn=0.03837;
yo0=20.9;yc0=0.03;yn0=78.08;ye0=100-yo0-yc0-yn0;
yoend=17.6;ycend=3.4;
xo=20.95;xc=0.03;xn=78.08;P0=101000;P=101000;
romax=190;romin=150;rcmax=190;rcmin=150;
t_start=0;
t_end=1;
vv0=[yo0*V/100;yc0*V/100;yn0*V/100;ye0*V/100]; %初值
for ro=romin %改回原来的
for rc=rcmin %改回原来的
[t,v]=ode45(@huxi,[t_start,t_end],vv0);
yo=v(end,1)/(v(end,1)+v(end,2)+v(end,3)+v(end,4));
yc=v(end,2)/(v(end,1)+v(end,2)+v(end,3)+v(end,4));
yn=v(end,3)/(v(end,1)+v(end,2)+v(end,3)+v(end,4));
if yo(1)==yoend/100 & yc(1)==ycend/100
ro
rc
end
end
end
function dvdt=huxi(t,v)
global W L A po pc pn P0 P xo xc xn ro rc;
dvdt=zeros(4,1);
dvdt=[
A/L*po*(xo*P0/100-v(1)/(v(1)+v(2)+v(3)+v(4))*P)-ro*W;
A/L*pc*(xc*P0/100-v(2)/(v(1)+v(2)+v(3)+v(4))*P)+rc*W;
A/L*pn*(xn*P0/100-v(3)/(v(1)+v(2)+v(3)+v(4))*P);
0];
看了 matlab 程序出错,帮我...的网友还看了以下:
一个光滑斜面,一物体以4米每秒的初速度由斜面底端的A点匀速滑上斜面,途径C和B,C为A,B的中点, 2020-05-16 …
在密闭容器重进行可逆反应,A与B反应生成C,其反应速率分别用V(A).V(B).V(C)(mol/ 2020-05-23 …
multiplydefinedsymbolsfound#includemain(){doublea 2020-07-23 …
若V={(a+bi,c+di)|a,b,c,d∈R}其中i=√-1.则V对于通常的加法和数乘,在若 2020-07-26 …
已知y1=ax,y2=bx是指数函数,y3=xc,y4=xd是幂函数,它们的图象如图所示,则a,b, 2020-10-31 …
2012年新疆公fdf务dx员考xc试v答v案sq:9...5.6,0↖(^ω^)↗54594∴⊕⊕ 2020-11-01 …
ax四分之一=bx六分之一=五分之一xc(a,b,c均是非零自然数),最大的数是().ax四分之一= 2020-11-18 …
A正定C可逆,如何推出C'AC是正定?由“任意非0向量V,因为C可逆,所以,存在X,使得:C*V=X 2020-12-28 …
关于质点瞬时速度v、加速度a=△v△t,下面说法中不正确的是()A.v为零时,△v可能不为零,a可能 2021-01-22 …
关于质点瞬时速度v、加速度a=△v△t,下面说法中错误的是()A.v为零时,a可能不为零B.当v大小 2021-01-22 …