Integration on 2D domain

12 次查看(过去 30 天)
Gabriele Librandi
Gabriele Librandi 2017-10-28
Hello,
I should compute an integral on a 2D domain which has several holes. I know the positions and the sizes of these holes. The domain looks like a square with an array of holes arranged on a square lattice (i.e. big square with a lot of ordered equi-spaced holes in it). I would like to define the domain first, mesh it afterwards, and integrate a function such that f(x,y) on it. Is this possible in Matlab? How?
Thanks in advance

回答(1 个)

Vaidyanathan Thiagarajan
编辑:Vaidyanathan Thiagarajan 2017-11-2
Hi,
There are many possible solutions :
Solution 1 :
The simplest is to use the principle of superposition due to linearity of the integrals. Thus, using the linearity of integrals, you could compute the required integral as :
Integral_of_f = Integral_of_f_Over_Rectangle - Integral_of_f_Over_all_holes;
Integral_of_f_Over_Rectangle can be computed numerically using the 'integral2' function as explained here :
Integral_of_f_Over_all_holes is the summation of integrals of 'f' over each of these holes. Assuming the holes are circular, the integral could be computed using one of the following ways :
a. Convert to polar coordinates and then use 'integral2' function
b. Mesh the circular hole and then use specialized quadrature rules for triangles. You can mesh the geometry using the PDE toolbox function 'generatemesh'. Please see the following for more details :
c. Directly integrate over circular regions using specialized quadrature rules developed for disks. For instance, you could use the weights and nodes as given by the following function (accounting for the difference in radius) :
Solution 2 :
Alternatively, you can do the following :
1. Create a 2D geometry with holes using CSG operations as explained here (using PDE toolbox) :
2. Generate a triangular mesh of the geometry from step 1 using 'generateMesh' function
3. Use triangular quadrature rule over every triangle of the mesh to compute the integral of 'f' over each of those triangles and then sum the result. You can use one of the following MATLAB file exchange submissions to generate the any order quadrature rule for a triangular element :
Hope it helps!
Best Regards,
Vaidyanathan

Community Treasure Hunt

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

Start Hunting!

Translated by