Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-10-22
帖子: 3
声望力: 0 ![]() |
![]()
Matlab编程时,数值积分采用inline函数进行关联,出现错误,程序如下:
function w = fenggonglv(mu,sigma,rho) syms v; % mu = 2.93; %样本平均值 % sigma = 1.99; %样本方差 % rho=1.0722; %风功率密度 v1=3; %启动风速 v2=25; %停机风速 k=(sigma/mu)^(-1.086); %weibull分布参数k c=mu/(gamma(1+1/k)); %weibull分布参数c %利用simplson数值积分计算有效风功率密度表达式中的积分因子 g='v.^3.*(v./c).^(k-1).*exp(-(v./c).^k)'; fun = inline (g,'v'); q=quadl(fun,v1,v2); w=rho/2*(k/c)/(exp(-(v1/c)^k)-exp(-(v2/c)^k))*q ; end Command窗口运行fenggonglv(2.93,1.99,1.0722) 之后,结果如下: ??? Input argument "sigma" is undefined. Error in ==> fenggonglv at 8 k=(sigma/mu)^(-1.086); %weibull分布参数k ??? Error using ==> inlineeval at 15 Error in inline expression ==> v.^3.*(v./c).^(k-1).*exp(-(v./c).^k) Undefined function or variable 'c'. Error in ==> inline.feval at 36 INLINE_OUT_ = inlineeval(INLINE_INPUTS_, INLINE_OBJ_.inputExpr, INLINE_OBJ_.expr); Error in ==> quadl at 70 y = feval(f,x,varargin{:}); y = y( ![]() Error in ==> fenggonglv at 13 q=quadl(fun,v1,v2); 但是,如果将事先算好的 k=1.5222与c=3.2513代入g='v.^3.*(v./c).^(k-1).*exp(-(v./c).^k)'重新计算,则会得到正确结果:w =81.4403 所以,本人认为,很明显是inline函数的用法出错了,不知如何修改,或者不使用inline函数,而采用其他数值积分方法,请教高手解决,不胜感激!(参考结果:k=1.5222,c=3.2513,w =81.4403) |
![]() |
![]() |