# VB One Variable Function Example

← All NMath Code Examples

```Imports System

Imports CenterSpace.NMath.Core

Namespace CenterSpace.NMath.Core.Examples.VisualBasic

' A .NET example in Visual Basic showing how to create and manipulate functions of one variable.
Module OneVariableFunctionExample

Private Function MyFunction(ByVal X As Double) As Double
Return Math.Sin(X) + Math.Pow(X, 3) / Math.PI
End Function

Sub Main()

Console.WriteLine()

' Class OneVariableFunction encapsulates an arbitrary function, and
' works with other numerical classes to approximate integrals and
' derivatives.

' A OneVariableFunction is constructed from an Func(Of Double, Double),
' a function delegate that takes a single double parameter and returns a double.
' For example, to encapsulate MyFunction (see above):
Dim D As Func(Of Double, Double) = AddressOf MyFunction
Dim F As New OneVariableFunction(D)

' The Evaluate() method evaluates a function at a given x-value.
Console.Write("f(pi) = ")
Console.WriteLine(F.Evaluate(Math.PI))
Console.WriteLine()

' Evaluate() also accepts a vector of x-values, and returns a vector of
' y-values, such that y[i] = f( x[i] ). This code evaluates f at 10 points
' between 0 and 1:
Dim X As New DoubleVector(10, 0, 1.0 / 10)
Dim Y As DoubleVector = F.Evaluate(X)
Console.WriteLine("x...")
Console.WriteLine(X)
Console.WriteLine()

Console.WriteLine("y...")
Console.WriteLine(Y.ToString("F3"))
Console.WriteLine()

' Class OneVariableFunction provides overloads of the arithmetic operators
' (and equivalent named methods) that work with either with two function
' objects, or with a function and a scalar. For example:
Dim G As OneVariableFunction = (F + 1) / 2
G = F * G
Console.Write("g(pi) = ")
Console.WriteLine(G.Evaluate(Math.PI))

' Evaluate() accepts another OneVariableFunction, and returns a new
' function encapsulating the composite, g( f(x) ).
Dim Composite As OneVariableFunction = G.Evaluate(F)
Console.Write("g( f(pi) ) = ")
Console.WriteLine(Composite.Evaluate(Math.PI))
Console.WriteLine()

' The Integrate() method approximates the integral of a function over a
' given interval.
Dim Integral As Double = F.Integrate(0, Math.PI / 2)
Console.Write("Integral of f from 0 to pi/2 = ")
Console.WriteLine(Integral)
Console.WriteLine()

' To perform integration, every OneVariableFunction has an IIntegrator
' object associated with it. NMath Core integration classes such as
' RombergIntegrator and GaussKronrodIntegrator implement the IIntegrator
' interface. The default integrator for a OneVariableFunction is an instance
' of RombergIntegrator, which may be changed using the Integrator property.
F.Integrator = New GaussKronrodIntegrator()
Integral = F.Integrate(0, Math.PI / 2)
Console.Write("Integral of f from 0 to pi/2 using Gauss-Kronrod = ")
Console.WriteLine(Integral)
Console.WriteLine()

' The Differentiate() method computes the derivative of a function at
' a given x-value.
Dim Derivative As Double = F.Differentiate(Math.PI / 2)
Console.Write("Derivative of f at pi/2 = ")
Console.WriteLine(Derivative)

' Derivative() returns a new function object encapsulating the first
' derivative of a function.
Dim F1stDeriv As OneVariableFunction = F.Derivative()
Dim F2ndDeriv As OneVariableFunction = F1stDeriv.Derivative()

Console.Write("1st derivative of f at pi/2 = ")
Console.WriteLine(F1stDeriv.Evaluate(Math.PI / 2))
Console.Write("2nd derivative of f at pi/2 = ")
Console.WriteLine(F2ndDeriv.Evaluate(Math.PI / 2))

Console.WriteLine()
Console.WriteLine("Press Enter Key")