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