2014-11-19 5 views
0

s, gamma1, gamma2 이상의 수치 삼중 적분을 수행하려고합니다. 제한은 각각 (-inf +int), (0,+inf)(gamma1,+inf)입니다. 다음 내 함수의 모양에서 무서워하지 말아주십시오 (gamma1의 그것의 단지 기능, gamma2, s)수치 삼중 정수 실수는 어디입니까?

나는 다음과 같은 오류가 내 코드

syms s 
syms gamma1 
syms gamma2 

fun=-(exp(-(28035689158432973*pi*gamma2^(2/3))/2305843009213693952)* 
exp(-(pi*s*7120816246010697*i)/112589990684262400)* 
(1/((pi*s*(4194304/gamma1^2 + 4194304/gamma2^2)*i)/(50* 
(6144/gamma1 + 6144/gamma2)) + 1)^((3*(2048/gamma1 + 2048/gamma2)^2) 
/(4194304/gamma1^2 + 4194304/gamma2^2)) - 1) 
*(exp(-(pi^2*s*(log((-(gamma2*25*i)/(1024*pi*s))^(1/3) + 1)/3; 


[email protected](s,gamma1,gamma2)fun; 
[email protected](s,gamma1) gamma1; 
prob=integral3(y,-inf,+inf,0,+inf,gamma2min,+inf) 

입니다

Error using integralCalc/finalInputChecks (line 511) 
Input function must return 'double' or 'single' values. Found 'sym'. 

어떤 충고?

대단히 감사합니다!

+0

'integral3'은 기호식으로 정의 할 때 숫자 공식이 필요합니다. 'integral3'의 문서를 읽으면 ** 수치 적으로 ** 적분을 계산합니다. 당신이해야 할 일은'int '를 세 번 사용하는 것입니다 - 각 변수에 하나씩. 자세한 내용은 다음 링크를 확인하십시오. http://www.math.umd.edu/~jmr/241/tripleint.html – rayryeng

+0

하지만 숫자로 평가하고 싶습니다. 원하는 작업입니다. 이것이 함수 핸들을 정의한 이유입니다. – George

+0

'integ3'를 사용하기 위해 숫자로 된 점의 격자를 정의해야합니다. 'integral3'은 수치 적분을 사용하여 적분에 대한 근사값을 찾습니다. 'integral3'에 대한 기호식을 사용할 수 없습니다. – rayryeng

답변

2

당신은 수치 (I 내 대답을 테스트하는 데 사용)

[email protected](a,b,c) 1/abs(a^2+b^2+c^2+1); 

같이 정의 기능을 통합 할 수 quadgk를 사용할 수 있습니다.

quadgk 벡터 입력을 받아, 함수 값의 벡터를 반환하는 함수를 기대하고 있기 때문에이 까다로운,하지만 당신은 arrayfun 년대를 많이 사용하여 주위를 얻을 수 있습니다 :

[email protected](s,gamma1) quadgk(@(gamma2) arrayfun(@(k) y(s,gamma1,k),gamma2),gamma1,Inf) 
[email protected](s) quadgk(@(gamma1) arrayfun(@(k) R(s,k),gamma1),0,Inf) 
T=quadgk(@(s) arrayfun(@(k) S(k),s),-Inf,Inf) 

그러나! 매우 느리고 대답을 기다릴만큼 참을성이 없었습니다. 예를 들어 Inf-Inf 한도를 100과 -100으로 바꾸면 답변을 얻을 수 있습니다. 어쩌면 50과 -50으로 시도해보고 해결책이 얼마나 바뀌는 지 확인하십시오. 변화가 거의 없다면 답이 매우 정확하다고 확신 할 수 있습니다. 그렇지 않으면 숫자를 늘리고 더 오래 기다려야합니다! 함수가 빠를수록 쇠퇴 할 수있는 경계가 줄어 듭니다.

+0

R = @ (s, gamma1) quadgk (@ (gamma2) arrayfun (@, k), gamma2), gamma1, Inf)이 코드 라인은 gamma2를 통해 수치 적으로 s와 gamma1 변수를 유지하면서? @David – George

+0

@George 예, 이것은 특정's'와'gamma1'에 대한 내부 적분 값입니다. – David