Re: Numerical integration over an arbitrary 2D domain
- To: mathgroup at smc.vnet.net
- Subject: [mg127167] Re: Numerical integration over an arbitrary 2D domain
- From: Fred Bartoli <""@news.free.fr>
- Date: Mon, 2 Jul 2012 22:22:35 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <jsopu3$12g$1@smc.vnet.net>
- Reply-to: myname_with_a_dot_inbetween at free.fr
Alfonso Pagani a écrit :
> Hi all,
> I am a new user of Wolfram Mathematica. I need to integrate
> (numerically of course) generic functions above complex 2D domains.
> For example, i would like to find the moments of inertia of an airfoil
> cross-section. Is it possible?
> My idea was to import a triangular mesh (list of nodes and element
> connectivity) of the integration domain. Then integrate my functions
> using a trapezoidal integration. How could i do this?
> Thank you very much,
>
> Alfonso
>
Alfonso,
No need to mess with that.
Just use a weighting function and then integrate the weighted function
over a simple rectangular region that contains all your shape:
(* First define the integrating region *)
weightFunc[x_, y_] =
Piecewise[{{1, x^2 + y^2 <= 2 && x >= 0}, {1,
y >= 0 && y <= Sqrt[2] (x + 1)^2 && x >= -1 && x <= 0}, {1,
y <= 0 && y >= -Sqrt[2] (x + 1) && x >= -1 && x <= 0}}, 0];
(* Then plot it and check its shape *)
toLogic[v_] = Switch[v, 1, True, 0, False];
RegionPlot[toLogic@weightFunc[x, y], {x, -2, 2}, {y, -2, 2}]
(* Finally integrate the moment inertia about the (1/2,0) point *)
NIntegrate[((x - 1/2)^2 + y^2) weightFunc[x, y], {x, -2, 2}, {y, -2,
2}]
Integrate[((x - 1/2)^2 + y^2) weightFunc[x, y], {x, -2, 2}, {y, -2, 2}]
N[% - %%]
--
Thanks,
Fred.