2011-02-12 80 views
1

我想问一下如何在MATLAB中计算下面的积分。MATLAB - 函数积分只有几个参数

integral(PN(x,m,s), x(-Inf,Inf) , m>0 , s>0. 

我创建了一个功能文件,pn,那就是:

function PN = pn(x,m,s) 
    PN = exp(-(x-m).^2 ./ (2*s.^2)) ./ sqrt(2*pi*s.^2); 
end 

和脚本begin.m

%ezplot(@(x)pn(x,0,1),[-3,3]) --> This is OK! 
quad(pn(x,m,s),x,-Inf,Inf)  --> I can't manipulate this, I tried several ways. 

答案积分必须为 “1”。

回答

1

quad和其他集成例程预计在其第一个插槽中有一个function handle。此外,该功能必须除矢量输入和返回矢量输出外。要解决您的问题,请尝试使用此功能,

m=0; 
s=1; 
F = @(x) pn(x,m,s); % a function handle 
quadgk(F,-inf,inf) % quadgk excepts -inf to inf as limits 

这应该做你想做的。

+0

谢谢!这工作正常!但我们正在采取m = 0和s = 1。我想m> 0和s> 0.这是否一样? – George 2011-02-12 14:57:18

+0

yup,在积分之下做一个变量z =(x - m)/(sqrt(2)s),以将其减小到m = 0,s = 1的情况。 – MarkV 2011-02-12 16:45:48

0

我建议把它分成两个积分的和:一个从-Inf到零,另一个从零到+ Inf。