# NMath User's Guide

34.2 Integrating Functions of Two Variables (.NET, C#, CSharp, VB, Visual Basic, F#)

The Integrate() method on integrates a given two-variable function over a given region. For example, to compute the double integral: First write the function:

Code Example – C# integration

```private double F( DoubleVector v )
```
```{
```
```  return 1.0 / ( 1.0 - ( v * v * v * v ) );
```
```}
```

Code Example – VB integration

```Function F(V As DoubleVector) As Double
```
```  Return 1.0 / (1.0 - (V(0) * V(0) * V(1) * V(1)))
```
```End Function
```

Then encapsulate the function as a MultiVariableFunction:

Code Example – C# integration

```var function = new MultiVariableFunction(
```
```  new Func<DoubleVector, double>( F ) );
```

Code Example – VB integration

```Dim MultiFunction As New MultiVariableFunction(
```
```  New Func(Of DoubleVector, Double)(F))
```

Finally, compute the integral:

Code Example – C# integration

```var integrator = new TwoVariableIntegrator();
```
```double xLower = 0;
```
```double xUpper = 1;
```
```double yLower = 0;
```
```double yUpper = 1;
```
```double integral = integrator.Integrate( function, xLower, xUpper,
```
```  yLower, yUpper );
```

Code Example – VB integration

```Dim Integrator As New TwoVariableIntegrator()
```
```Dim XLower As Double = 0
```
```Dim XUpper As Double = 1
```
```Dim YLower As Double = 0
```
```Dim YUpper As Double = 1
```
```Dim Integral As Double = integrator.Integrate(MultiFunction,
```
```  XLower, XUpper, YLower, YUpper)
```

The code above explicitly sets the x and y bounds. You can also set the y lower bound, y upper bound, or both, as a function of x. For example, to compute this double integral: First define the function:

Code Example – C# integration

```private double F( DoubleVector v )
```
```{
```
```  return ( 9.0 * v * v ) - ( 3.0 * v );
```
```}
```

Code Example – VB integration

```Function F(V As DoubleVector) As Double
```
```  Return (9.0 * V(0) * V(0)) - (3.0 * V(1))
```
```End Function
```

Then encapsulate the function as a MultiVariableFunction:

Code Example – C# integration

```var function = new MultiVariableFunction(
```
```  new Func<DoubleVector, double>( F ) );
```

Code Example – VB integration

```Dim function As New MultiVariableFunction(
```
```  New Func(Of DoubleVector, Double)(F))
```

Then define the y bounding functions and encapsulate them as OneVariableFunction objects:

Code Example – C# integration

```private double YUpperF( double x )
```
```{
```
```  return Math.Sqrt( 9.0 - ( x * x ) );
```
```}

```

```private double YLowerF( double x )
```
```{
```
```  return -YUpperF( x );
```
```}

```

```var yLowerFunction = new OneVariableFunction(
```
```  new NMathFunctions.DoubleUnaryFunction( YLowerF ) );
```
```var yUpperFunction = new OneVariableFunction(
```
```  new NMathFunctions.DoubleUnaryFunction( YUpperF ) );
```

Code Example – VB integration

```Function YUpperF(X As Double) As Double
```
```  Return Math.Sqrt(9.0 - (X * X))
```
```End Function

```

```Function YLowerF(X As Double) As Double
```
```  Return -YUpperF(X)
```
```End Function

```

```Dim YLowerFunction As New OneVariableFunction(
```
```  New Func(Of Double, Double)(AddressOf YLowerF))
```
```Dim YUpperFunction As New OneVariableFunction(
```
```  New Func(Of Double, Double)(AddressOf YUpperF))
```

Finally, compute the integral:

Code Example – C# integration

```var integrator = new TwoVariableIntegrator();
```
```double xLower = -3;
```
```double xUpper = 3;
```
```double integral = integrator.Integrate( function, xLower, xUpper,
```
```  yLowerFunction, yUpperFunction );
```

Code Example – VB integration

```Dim Integrator As New TwoVariableIntegrator()
```
```Dim XLower As Double = -3
```
```Dim Xupper As Double = 3
```
```Dim Integral As Double = integrator.Integrate(MultiFunction,
```
```  XLower, XUpper, YLowerFunction, YUpperFunction)

```

Top

Top