Re: How to integrate a function over a polygon
- To: mathgroup at smc.vnet.net
- Subject: [mg123229] Re: How to integrate a function over a polygon
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Mon, 28 Nov 2011 05:52:33 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <201111270914.EAA07291@smc.vnet.net>
Actually, that was a mistake ;-) It should have been f[x_, y_, z_] := x^2 + y^2 + z^2 Expand[ Last[PolynomialReduce[f[x, y, z], {x + y + z - 1}, {z, x, y}]]] 1 - 2 x + 2 x^2 - 2 y + 2 x y + 2 y^2 But luckily it made not difference ;-) In this particular case PolynomialReduce was an overkill. You could equally well use a simple replacement: g[x_,y]:=x^2 + y^2 + z^2 /. z -> (1 - x - y) // Expand 1 - 2 x + 2 x^2 - 2 y + 2 x y + 2 y^2 PolynomialReduce could be useful if you wanted to integrate over a more complicated non-linear regions, when a simple syntactical substitution might not be possible. Andrzej Kozlowski On 27 Nov 2011, at 10:14, Mikael wrote: > Many thanks indeed for your elegant solution, Andrzej. May I ask a related question regarding the last argument in > > Expand[Last[PolynomialReduce[f[x, y, z], {x + y + z - 1}, {z, x, z}]]]. > > I wonder what is the role of {z, x, z} there. I get the same answer if I change it to {z, x} or {z} and I could not figure it out from the help page for PolynomialReduce either. > > /Mikael > > > > >> Well, perhaps you mean this. Let the function be: >> >> f[x_, y_, z_] := x^2 + y^2 + z^2 >> >> We want to integrate it over the simplex: x+y+z==1, >> 0<=x<=1,0<=y<=1,0<=y<=1 >> >> On the simplex the function can be expressed in terms >> of only x and y as follows: >> >> g[x_, y_] = >> Expand[Last[PolynomialReduce[f[x, y, z], {x + y + z >> z - 1}, {z, x, z}]]] >> >> 2*x^2 + 2*x*y - 2*x + 2*y^2 - 2*y + 1 >> >> In terms of x and y the simplex can be described as: >> >> cond[x_, y_] := x + y <= 1 && 0 <= x <= 1 && 0 <= y >> <= 1 >> >> So now we simply compute: >> >> Integrate[Boole[cond[x, y]]*g[x, y], {x, 0, 1}, {y, >> 0, 1}] >> >> 1/4 >> >> >> Andrzej Kozlowski >> >> >> On 25 Nov 2011, at 10:57, Mikael wrote: >> >>> Well, as I wrote in my OP, it is a 2-diemnsional >> unit simplex so you can always re-parametrize the >> function to have 2 arguments. >>> >>> In any case, your answer is not useful unless you >> had also answered the original question apart from >> your remark. >>> >>>> First of all, f would need three arguments. >>>> >>>> Bobby >>>> >>>> On Wed, 23 Nov 2011 06:07:00 -0600, Mikael >>>> <mikaen.anderson.1969 at gmail.com> wrote: >>>> >>>>> The subject line asks the general question but to >>>> be more specific >>>>> suppose I have a 2-dimentional unit simplex >> defined >>>> as >>>>> >>>>> Polygon[{{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}]. >>>>> >>>>> I winder how I can integrate a function f(x,y) >> over >>>> this simplex. Thanks. >>>>> >>>> >>>> >>>> -- >>>> DrMajorBob at yahoo.com >>>> >>> >> >> >
- References:
- Re: How to integrate a function over a polygon
- From: Mikael <mikaen.anderson.1969@gmail.com>
- Re: How to integrate a function over a polygon