2011-02-12 81 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。