www.gusucode.com > matlab 案例源码 matlab代码程序 > matlab/SingularityonInteriorofIntegrationDomainExample.m

    %% Singularity on Interior of Integration Domain  
% This example shows how to split the integration domain to place a
% singularity on the boundary.

%% Define the Integrand with an Anonymous Function 
% The integrand of the complex-valued integral 
%
% $$\int_{-1}^1 \int_{-1}^1 \frac{1}{\sqrt{x+y}} \: dx \: dy$$
%
% has a singularity when |x = y = 0| and is, in general, singular on the
% line |y = -x|. 
%
% Define this integrand with an anonymous function. 
fun = @(x,y) ((x+y).^(-1/2));  

%% Integrate Over a Square 
% Integrate |fun| over a square domain specified by $-1 \le x \le 1$ and
% $-1 \le y \le 1$.
format long
q = integral2(fun,-1,1,-1,1) 

%%
% If there are singular values in the interior of the integration region,
% the integration fails to converge and returns a warning.  

%% Split the Integration Domain into Two Triangles 
% You can redefine the integral by splitting the integration domain into
% complementary pieces and adding the smaller integrations together. Avoid
% integration errors and warnings by placing singularities on the boundary
% of the domain. In this case, you can split the square integration region
% into two triangles along the singular line |y = -x| and add the results. 
q1 = integral2(fun,-1,1,-1,@(x)-x);
q2 = integral2(fun,-1,1,@(x)-x,1);
q = q1 + q2 

%%
% The integration succeeds when the singular values are on the boundary.  

%% 
% The exact value of this integral is 
%
% $$\frac{8 \sqrt{2}}{3} \left( 1-i \right)$$
%
8/3*sqrt(2)*(1-i)