Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

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
>>>>
>>>
>>
>>
>




  • Prev by Date: Villarceau circles of a torus
  • Next by Date: Re: Explicitly specifying the 3d viewing options (pan, rotate, etc.)
  • Previous by thread: Re: How to integrate a function over a polygon
  • Next by thread: Re: How to integrate a function over a polygon