1

我想问如何在 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”。

4

2 回答 2

1

quad和其他集成例程在其第一个槽中期望一个函数句柄。此外,这个函数必须除了向量输入和返回向量输出。要解决您的问题,请改用此方法,

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

这应该做你想要的。

于 2011-02-12T14:45:26.767 回答
0

我建议将其分解为两个积分的总和:一个从 -Inf 到零,另一个从零到 +Inf。

于 2011-02-12T14:46:00.540 回答