Borrar filtros
Borrar filtros

Double integral with singularity point (relative tolerance)

2 visualizaciones (últimos 30 días)
Hyunseop Lee
Hyunseop Lee el 5 de Feb. de 2018
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);

Respuestas (0)

Categorías

Más información sobre 푸리에 분석과 필터링 en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!