1 | initial version |

The question is about integrating a polynomial over a region defined by linear inequalities.

Such a region is called a polytope or a polyhedron.

In Sage one can construct such regions using the
`Polyhedron`

class.

This class provides a method `integrate`

which allows,
when the `latte_int`

optional package is installed,
to integrate a polynomial function over a polyhedron.

In a way, the trick is: rather than start from the function
`integrate`

and somehow specify a region, we fist define
a polyhedron and then use the method `integrate`

to compute
the integral of a polynomial over that polyhedron.

The region is defined by five inequalities:

```
x + 2 y + 3 z < 2
-1 < x
x < y
y < z
z < 1
```

and the function to integrate is

```
x^2 + 2 y z
```

The five inequalities can be rewritten as

```
2 + (-1) * x + (-2) * y + (-3) * z > 0
1 + (+1) * x > 0
0 + (-1) * x + (+1) * y > 0
0 + (-1) * y + (+1) * z > 0
1 + (-1) * z > 0
```

Encode these inequalities in Sage as

```
sage: ieqs = [[2, -1, -2, -3],
....: [1, 1, 0, 0],
....: [0, -1, 1, 0],
....: [0, 0, -1, 1],
....: [1, 0, 0, -1], ]
```

Create a polyhedron from those inequalities:

```
sage: P = Polyhedron(ieqs=ieqs)
```

Define polynomial variables and a polynomial:

```
sage: x, y, z = polygens(QQ, names='x, y, z')
sage: f = x^2 + 2*y*z
```

Integrate that polynomial over the polyhedron we defined:

```
sage: P.integrate(f)
53833/151875
```

This last command requires the `latte_int`

optional package
for Sage to be installed.

`latte_int`

optional packageTo install that package, if you installed Sage from source or from binaries downloaded from the Sage website, run the following command in a terminal:

```
$ sage -i latte_int
```

- Ask Sage question 50839: (defining polyhedron via inequalities)
- Sage Trac ticket 22824: Add see also section to integrate over a polytope

2 | No.2 Revision |

The question is about integrating a polynomial over a region defined by linear inequalities.

Such a region is called a polytope or a polyhedron.

In Sage one can construct such regions using the
`Polyhedron`

class.

This class provides a method `integrate`

which allows,
when the `latte_int`

optional package is installed,
to integrate a polynomial function over a polyhedron.

In a way, the trick is: rather than start from the function
`integrate`

and somehow specify a region, we fist define
a polyhedron and then use the method `integrate`

to compute
the integral of a polynomial over that polyhedron.

The region is defined by five inequalities:

```
x + 2 y + 3 z < 2
-1 < x
x < y
y < z
z < 1
```

and the function to integrate is

```
x^2 + 2 y z
```

The five inequalities can be rewritten as

```
2 + (-1) * x + (-2) * y + (-3) * z > 0
1 + (+1) * x > 0
0 + (-1) * x + (+1) * y > 0
0 + (-1) * y + (+1) * z > 0
1 + (-1) * z > 0
```

Encode these inequalities in Sage as

```
sage: ieqs = [[2, -1, -2, -3],
....: [1, 1, 0, 0],
....: [0, -1, 1, 0],
....: [0, 0, -1, 1],
....: [1, 0, 0, -1], ]
```

Create a polyhedron from those inequalities:

```
sage: P = Polyhedron(ieqs=ieqs)
```

Define polynomial variables and a polynomial:

```
sage: x, y, z = polygens(QQ, names='x, y, z')
sage: f = x^2 + 2*y*z
```

Integrate that polynomial over the polyhedron we defined:

```
sage: P.integrate(f)
53833/151875
```

This last command requires the `latte_int`

optional package
for Sage to be installed.

`latte_int`

optional packageTo install that package, if you installed Sage from source or from binaries downloaded from the Sage website, run the following command in a terminal:

```
$ sage -i latte_int
```

~~Ask Sage question 50839: (defining polyhedron via inequalities)~~- Sage Trac ticket 22824: Add see also section to integrate over a polytope

3 | No.3 Revision |

The question is about integrating a polynomial over a region defined by linear inequalities.

Such a region is called a polytope or a polyhedron.

In Sage one can construct such regions using the
`Polyhedron`

class.

This class provides a method `integrate`

which allows,
when the `latte_int`

optional package is installed,
to integrate a polynomial function over a polyhedron.

In a way, the trick is: rather than start from the function
`integrate`

and somehow specify a region, we fist define
a polyhedron and then use the method `integrate`

to compute
the integral of a polynomial over that polyhedron.

The region is defined by five inequalities:

```
x + 2 y + 3 z < 2
-1 < x
x < y
y < z
z < 1
```

and the function to integrate is

```
x^2 + 2 y z
```

The five inequalities can be rewritten as

```
2 + (-1) * x + (-2) * y + (-3) * z > 0
1 + (+1) * x > 0
0 + (-1) * x + (+1) * y > 0
0 + (-1) * y + (+1) * z > 0
1 + (-1) * z > 0
```

Encode these inequalities in Sage as

```
sage: ieqs = [[2, -1, -2, -3],
....: [1, 1, 0, 0],
....: [0, -1, 1, 0],
....: [0, 0, -1, 1],
....: [1, 0, 0, -1], ]
```

Create a polyhedron from those inequalities:

```
sage: P = Polyhedron(ieqs=ieqs)
```

Define polynomial variables and a polynomial:

```
sage: x, y, z = polygens(QQ, names='x, y, z')
sage: f = x^2 + 2*y*z
```

Integrate that polynomial over the polyhedron we defined:

```
sage: P.integrate(f)
53833/151875
```

This last command requires the `latte_int`

optional package
for Sage to be installed.

`latte_int`

optional packageTo install that package, if you installed Sage from source or from binaries downloaded from the Sage website, run the following command in a terminal:

```
$ sage -i latte_int
```

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.