New Version 6.0! |
---|

Try it for free with our fully functional 60-day trial version. |

QuickStart Samples

# Chebyshev Series QuickStart Sample (Visual Basic)

Illustrates the basic use of the ChebyshevSeries class in Visual Basic.

C# code F# code IronPython code Back to QuickStart Samples

Option Infer On ' The ChebyshevSeries class resides in the ' Extreme.Mathematics.Curves namespace. Imports Extreme.Mathematics.Curves ' The Constants class and Func(Of Double, Double) delegate reside in the ' Extreme.Mathematics namespace. Imports Extreme.Mathematics Namespace Extreme.Numerics.QuickStart.VB Module ChebyshevExpansions ' Illustrates the use of the ChebyshevSeries class ' in the Extreme.Mathematics.Curve namespace of the Extreme ' Optimization Numerical Libraries for .NET. Sub Main() ' Chebyshev polynomials form an alternative basis ' for polynomials. A Chebyshev expansion is a ' polynomial expressed as a sum of Chebyshev ' polynomials. ' ' Using the ChebyshevSeries class instead of ' Polynomial can have two major advantages: ' 1. They are numerically more stable. Higher ' accuracy is maintained even for large problems. ' 2. When approximating other functions with ' polynomials, the coefficients in the ' Chebyshev expansion will tend to decrease ' in size, where those of the normal polynomial ' approximation will tend to oscillate wildly. ' Index variable. Dim index As Int32 ' ' Constructing Chebyshev expansions ' ' Chebyshev expansions are defined over an interval. ' The first constructor requires you to specify the ' boundaries of the interval, and the coefficients ' of the expansion. Dim coefficients = New Double() {1, 0.5, -0.3, 0.1} Dim chebyshev1 As New ChebyshevSeries(0, 2, coefficients) ' If you omit the boundaries, they are assumed to be ' -1 and +1: Dim chebyshev2 As New ChebyshevSeries(coefficients) ' ' Chebyshev approximations ' ' A third way to construct a Chebyshev series is as an ' approximation to an arbitrary function. For more ' about the Func(Of Double, Double) delegate, see the ' FunctionDelegates QuickStart Sample. ' ' Chebyshev expansions allow us to obtain an ' excellent approximation at minimal cost. ' ' The following creates a Chebyshev approximation ' of degree 7 to Cos(x) over the interval (0, 2): Dim cos As Func(Of Double, Double) = AddressOf Math.Cos Dim approximation1 = ChebyshevSeries.GetInterpolatingPolynomial(cos, 0, 2, 7) Console.WriteLine("Chebyshev approximation of cos(x):") For index = 0 To 7 Console.WriteLine(" c{0} = {1}", index, _ approximation1.Parameters(index)) Next ' The largest errors are approximately at the ' zeroes of the Chebyshev polynomial of degree 8: For index = 0 To 8 Dim zero As Double = _ 1 + Math.Cos(index * Constants.Pi / 8) Dim err As Double = _ approximation1.ValueAt(zero) - Math.Cos(zero) Console.WriteLine(" Error {0} = {1}", index, err) Next ' ' Least squares approximations ' ' We will now calculate the least squares polynomial ' of degree 7 through 33 points. ' First, calculate the points: Dim xValues = New Double(32) {} Dim yValues = New Double(32) {} For index = 0 To 32 Dim angle As Double = index * Constants.Pi / 32 xValues(index) = 1 + Math.Cos(angle) yValues(index) = Math.Cos(xValues(index)) Next ' Next, define a ChebyshevBasis object for the ' approximation we want: interval (0,2) and degree ' is 7. Dim basis As New ChebyshevBasis(0, 2, 7) ' Now we can calculate the least squares fit: Dim approximation2 = CType(basis.LeastSquaresFit(xValues, yValues, xValues.Length), ChebyshevSeries) ' We can see it is close to the original ' approximation we found earlier: For index = 0 To 7 Console.WriteLine(" c{0} = {1}", index, _ approximation2.Parameters(index)) Next Console.Write("Press Enter key to exit...") Console.ReadLine() End Sub End Module End Namespace

Copyright Â© 2003-2018, Extreme Optimization. All rights reserved.

*Extreme Optimization,* *Complexity made simple*, *M#*, and *M Sharp* are trademarks of ExoAnalytics Inc.

*Microsoft*, *Visual C#, Visual Basic, Visual Studio*, *Visual Studio.NET*, and the *Optimized for Visual Studio* logo

are registered trademarks of Microsoft Corporation.