想请教下关于fslove函数中我的错误有那几种可能
数学方程如下,用san.m表示的function dx=san(x)
global m v ms hs i ixz lf lr l ixx cof cor co kof kor ko sf u Df Dr Bf Br d hf hr
o1=x(1)+lf*x(2)/v-sf;
o2=x(1)-lr*x(2)/v;
B1=(Ffl+Ffr+Frl+Frr+ms*hs*9.8*O10)/(m*v)-x(2);
O10=((ms*hs*9.8-ko)*x(3)+ms*hs*v*(B1+x(2))-co*x(4))/ixx;
as=v*(B1+x(2));
wf=ms*as*(hs/(1+(kor-ms*hs*9.8)/kof)+lr*hf/l)/d;
wr=ms*as*(hs/(1+(kof-ms*hs*9.8)/kor)+lf*hr/l)/d;
Nfl=lr*m*9.8/(2*l)-wf;
Nfr=lr*m*9.8/(2*l)+wf;
Nrl=lf*m*9.8/(2*l)-wr;
Nrr=lf*m*9.8/(2*l)+wr;
Ffl=-u*Nfl*sin(Df*atan(Bf*o1));
Ffr=-u*Nfr*sin(Df*atan(Bf*o1));
Frl=-u*Nrl*sin(Dr*atan(Br*o2));
Frr=-u*Nrr*sin(Dr*atan(Br*o2));
Ff=Ffl+Ffr;
Fr=Frl+Frr;
dx(1)=(Ff+Fr+ms*hs*O10)/(m*v)-x(2);
dx(2)=(Ff*lf-Fr*lr)*cos(x(1))/i;
dx(3)=x(4);
dx(4)=((ms*hs*9.8-ko)*x(3)+ms*hs*v*(B1+x(2))-co*x(4))/ixx;
dx=;
解方程程序如下:
%hold on
global m v ms hs i ixz lf lr l ixx cof cor co kof kor ko sf u Df Dr Bf Br d hf hr
m=1704.7;ms=1526.9;hs=0.455;i=3048.1;ixz=0;ixx=744;lf=1.035;lr=1.655;l=lf+lr;
cof=2823;cor=2653;co=cof+cor;kof=47300;kor=43300;ko=kof+kor;Df=1.56;Dr=1.56;Bf=11.275;Br=18.631;
d=1.535;hf=0.13;hr=0.11;
v=20;u=0.3;sf=0.01;
x0=;
options=optimset('Display','iter');
=fsolve('san',x0,options);
结果是错误:
??? Undefined function or variable "Ffl".
Error in ==> san at 5
B1=(Ffl+Ffr+Frl+Frr+ms*hs*9.8*O10)/(m*v)-x(2);
Error in ==> fsolve at 180
fuser = feval(funfcn{3},x,varargin{:});
Error in ==> jiesan at 9
=fsolve('san',x0,options);
想请教下可能是哪方面的错误。
B1是否应等Ffl/Ffr/...算出后才可算!? 本帖最后由 Rainyboy 于 2011-3-2 12:59 编辑
这错误提示不是很清楚么?
就是在B1=(Ffl+Ffr+Frl+Frr+ms*hs*9.8*O10)/(m*v)-x(2);语句之前没有定义Ffl变量。
而你所看到的下面提示:
Error in ==> san at 5
B1=(Ffl+Ffr+Frl+Frr+ms*hs*9.8*O10)/(m*v)-x(2);
Error in ==> fsolve at 180
fuser = feval(funfcn{3},x,varargin{:});
Error in ==> jiesan at 9
=fsolve('san',x0,options);其实是一个调用堆栈(call stack)的error trace back 过程;即由于jiesan.m调用了fsolve.m,而fsolve.m又调用了san.m,则call stack的大致结构为:
--栈顶--
fsolve at 180 (及该处的运行时上下文)
jiesan at 9(及该处的运行时上下文)
--栈底--
现在在san at 5 有错误,因此matlab不仅需要告诉你error occor in san at 5 而且需要告诉你是什么调用路径导致了这个错误,以便你检查参数,所以才有了上述错误信息。
因此,并不是错误报告中发现了fsolve字样,就一定是fsolve的问题。
页:
[1]