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

これを 2 つの積分の合計に分割することをお勧めします。1 つは -Inf からゼロまで、もう 1 つはゼロから +Inf までです。

于 2011-02-12T14:46:00.540 に答える