Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2010-12-05, 21:14   #1
yyc1048
初级会员
 
注册日期: 2009-10-22
帖子: 3
声望力: 0
yyc1048 正向着好的方向发展
默认 Matlab程序inline函数出错

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)
yyc1048 当前离线   回复时引用此帖
旧 2010-12-06, 09:26   #2
yyc1048
初级会员
 
注册日期: 2009-10-22
帖子: 3
声望力: 0
yyc1048 正向着好的方向发展
默认 回复: Matlab程序inline函数出错

问题已解决!!!!!!
yyc1048 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 13:39


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.