2011-02-12 6 views
1

MATLAB에서 다음과 같은 정수를 계산하는 방법을 묻고 싶습니다.MATLAB - 몇 가지 인수로 정수 함수

%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"이어야합니다

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

및 스크립트 begin.m :

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

I는 함수 파일, pn을 만들었습니다.

답변

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

+0

예, m = 0, s = 1 인 경우로 줄이기 위해 정수 아래에서 변수 z = (x - m)/(sqrt (2) s)를 변경하십시오. – MarkV

0

두 개의 적분 값의 합계로 나누는 것이 좋습니다. 하나는 -Inf에서 0으로, 다른 하나는 0에서 + Inf로 나누는 것입니다.

+0

좋습니다, 감사합니다! 나는 아래처럼 그것을했다, 나는 그것을 역시 시도 할 것이다. – George