C# Polynomial Least Squares Example

← All NMath Code Examples

 

using System;
using System.Globalization;

using CenterSpace.NMath.Core;


namespace CenterSpace.NMath.Examples.CSharp
{
  class PolynomialLeastSquaresExample
  {
    /// <summary>
    /// A .NET example in C# showing how to fit a polynomial through a set of points
    /// while minimizing the least squares of the residuals.
    /// </summary>
    static void Main( string[] args )
    {
      var formatString = "F3";

      Console.WriteLine();

      // The points: (0.3, -0.9), (0.6, -0.6), (1.8, -13.4), (34.3, -19.3)
      var x = new DoubleVector( 0.3, 0.6, 1.8, 34.3 );
      var y = new DoubleVector( -0.9, -0.6, -13.4, -19.3 );

      // Fit the best 2nd degree polynomial to the points using the
      // polynomial fitter, PolynomialLeastSquares.
      var lsq = new PolynomialLeastSquares( 2, x, y );
      Console.WriteLine( "Best polynomial of degree " + lsq.Degree + " is: " );
      Console.WriteLine();
      Console.WriteLine( lsq.FittedPolynomial.ToString( formatString ) );
      Console.WriteLine();
      Console.WriteLine( "residual sum of squares: " + lsq.LeastSquaresSolution.ResidualSumOfSquares.ToString( "E3" ) );
      Console.WriteLine();
      Console.WriteLine();

      // Fit the best 3rd degree polynomial to the points.
      lsq = new PolynomialLeastSquares( 3, x, y );
      Console.WriteLine( "Best polynomial of degree " + lsq.Degree + " is: " );
      Console.WriteLine();
      Console.WriteLine( lsq.FittedPolynomial.ToString( formatString ) );
      Console.WriteLine();
      Console.WriteLine( "residual sum of squares: " + lsq.LeastSquaresSolution.ResidualSumOfSquares );
      Console.WriteLine();
      Console.WriteLine();

      // Fit the best 4th degree polynomial to the points.
      lsq = new PolynomialLeastSquares( 4, x, y );
      Console.WriteLine( "Best polynomial of degree " + lsq.Degree + " is: " );
      Console.WriteLine();
      Console.WriteLine( lsq.FittedPolynomial.ToString( formatString ) );
      Console.WriteLine();
      Console.WriteLine( "residual sum of squares: " + lsq.LeastSquaresSolution.ResidualSumOfSquares.ToString( "E3" ) );
      Console.WriteLine();

      // Evaluate the polynomial
      Polynomial p = lsq.FittedPolynomial;
      Console.WriteLine( "Polynomial evaluated at 4.5: " + p.Evaluate( 4.5 ).ToString( formatString ) );
      Console.WriteLine();

      // First derivative
      Console.WriteLine( "Derivative of the polynomial: " );
      Console.WriteLine( p.Derivative().ToString( formatString ) );
      Console.WriteLine();

      // Second derivative
      Console.WriteLine( "Second Derivative of the polynomial: " );
      Console.WriteLine( p.Derivative().Derivative().ToString( formatString ) );
      Console.WriteLine();

      // Integrate
      Console.WriteLine( "Integral of the polynomial from 3.2 to 4.6:" );
      Console.WriteLine( p.Integrate( 3.2, 4.6 ).ToString( formatString ) );

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

    }  // Main

  } // class

} // namespace


← All NMath Code Examples
Top