Clear Filters
Clear Filters

Double integral with singularity point (relative tolerance)

2 views (last 30 days)
HI. I have a problem with my code.
I would like to evaluate double integral which contains singular point. and I found that integral2 function can evaluate double integral when put the singular point on integral boundary. So I tried that, but after doing that there is message "Maximum number of function evaluations has been exceeded" and calculated value is very different with value with low relative tolerance. (this message doesn't show when I decrease relative tolerance into 1e-3)
But, I am not sure about value which I gain from decreasing relative tolerance. (and I don't know about relative tolerance. In this function, how to compare calculate value with some value?)
This is my question. 1. What means of relative tolerance? and in matlab, what method which compare calculate value and some value? 2. How can I make more accurate calculations? I would like to use a lower relative tolerance value, so that the calculated values converge.
Here is my code
const = 3/(2*pi);
R = 1e-3 ;
domain = [0.000353553390593274 0.000146446609406726 0.000923879532511287 0 0.785398163397448 0 0.785398163397448 ] ;
RelTol = 1e-6 ;
dx = @(phi,th) domain(1) - (R.*sin(phi).*cos(th)) ;
dy = @(phi,th) domain(2) - (R.*sin(phi).*sin(th)) ;
dz = @(phi,th) domain(3) - (R.*cos(phi)) ;
nx = @(phi,th) - sin(phi).*cos(th) ;
ny = @(phi,th) - sin(phi).*sin(th) ;
nz = @(phi,th) - cos(phi) ;
rxy5 = @(phi,th) (dx(phi,th).^2 + dy(phi,th).^2 + dz(phi,th).^2).^(5/2);
Jac = @(phi,th) R^2*sin(phi) ;
T111 = @(phi,th) const.*(dx(phi,th).*dx(phi,th).*dx(phi,th))./(rxy5(phi,th));
T121 = @(phi,th) const.*(dx(phi,th).*dx(phi,th).*dy(phi,th))./(rxy5(phi,th));
T131 = @(phi,th) const.*(dx(phi,th).*dx(phi,th).*dz(phi,th))./(rxy5(phi,th));
T11_B11 = @(phi,th) (T111(phi,th).*nx(phi,th) + T121(phi,th).*ny(phi,th) + T131(phi,th).*nz(phi,th)).*(Jac(phi,th));
a = 0.5*(domain(4)+domain(5));
b = 0.5*(domain(6)+domain(7));
D11_B11_1 = integral2(T11_B11, domain(4), a, domain(6), b, 'Method', 'tiled','RelTol',RelTol);
D11_B11_2 = integral2(T11_B11, a, domain(5), domain(6), b, 'Method', 'tiled','RelTol',RelTol);
D11_B11_3 = integral2(T11_B11, domain(4), a, b, domain(7), 'Method', 'tiled','RelTol',RelTol);
D11_B11_4 = integral2(T11_B11, a, domain(5), b, domain(7), 'Method', 'tiled','RelTol',RelTol);

Answers (0)

Categories

Find more on 푸리에 분석과 필터링 in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!