Trouble evaluating integral where function is made of huge and tiny values

조회 수: 2 (최근 30일)
supernoob
supernoob 2019년 2월 25일
편집: supernoob 2019년 3월 3일
Hi there,
I'm trying to integrate a function which is the product of one tiny and one large value. Analytically, this makes the integrand work out but numerically I am running into problems. Say I have the following parameters:
ChiSq = @(x,y) a.*x.^2 + b.*x.*y + c ;
Chi = @(x,y) sqrt(a.*x.^2 + b.*x.*y + c );
n = 840; %degrees of freedom, a fixed number
a = 1e6;
b = -1.5e5;
c = 837; %a,b,c are parameters fit from experimental data
I plug these functions into the main function I want to integrate:
Zfun = @(x,y) (Chi(x,y).^(n/2-1)).*exp(-1/2*ChiSq(x,y));
The problem is, I can't integrate Zfun because Chi(x,y)^n/2-1 returns INF and exp(-1/2ChiSq) returns 0. If they could all be evaluated together the integrand would be reasonable, but due to numerical limitations this breaks.
How can I get around this?
UPDATE: I've tried the following but vpaintegral doesn't work with polar coordinates as far as I can tell. I'm confused about if the algorithm would integrate over a circular area if I transform into cartesian coordinates.
n = sym(840);
Zfun = @(x,y) (Chi(x,y).^(n/2-1)).*exp(-sym(1/2)*ChiSq(x,y));
polarZfun = @(theta,r) Zfun(r.*cos(theta),r.*sin(theta)).*r;
I(i) = vpaintegral(vpaintegral(polarZfun, theta, [0 2*pi]), r, [0 big_r]);
  댓글 수: 4
supernoob
supernoob 2019년 3월 3일
편집: supernoob 2019년 3월 3일
Walter, thanks for pointing out the typo, I fixed that, as well as put some example a,b values in. I have also simplified the integrand as there are some numerical factors I can account for later. As for integration limits: I transform the function into polar coordinates then integrate out to r=0.3 over all angles (I integrate over a circle in the polar plane). Is it possible to use sym() and vpaintegral to do this? I couldn't find any information on vpaintegral in polar coordinates.
supernoob
supernoob 2019년 3월 3일
Are, thanks so much for your suggestions. Unfortunately I can't change the value of n as it is a real parameter in the experimental data. You comment gave me some food for thought, though. It's appreciated.

댓글을 달려면 로그인하십시오.

답변 (0개)

카테고리

Help CenterFile Exchange에서 Numerical Integration and Differentiation에 대해 자세히 알아보기

제품

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by