MATLAB - интеграл функции с несколькими аргументами - PullRequest
1 голос
/ 12 февраля 2011

Я хотел спросить, как я могу вычислить следующий интеграл в 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".

Ответы [ 2 ]

1 голос
/ 12 февраля 2011

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

Это должно делать то, что вы хотите.

0 голосов
/ 12 февраля 2011

Я бы рекомендовал разбить его на сумму двух интегралов: один от -Inf до нуля, а другой от нуля до + Inf.

...