Forsythe
Approximates an arbitrary function using Forsythe orthogonal polynomials.
Controller: CodeCogs
Interface
C++
Excel
Class Forsythe
This class approximates an arbitrary function by least squares fitting using Forsythe orthogonal polynomials. It uses a generalization of the three-term relation by G. Forsythe (1957), generating recursively a system of orthonormal polynomials over arbitrary sets of data points. Below you will find the regression graph for a set of points obtained by evaluating the function , displayed in light blue, at particular abscissas. The regression polynomial, displayed in red, has been calculated using this class. The root mean squared error is also displayed.MISSING IMAGE!
1/forsythe-378.png cannot be found in /users/1/forsythe-378.png. Please contact the submission author.
References:
- Jean-Pierre Moreau's Home Page, http://perso.wanadoo.fr/jean-pierre.moreau/
- F.R. Ruckdeschel, "BASIC Scientific Subroutines", Vol. II, BYTE/McGRAWW-HILL, 1981
Example 1
- The following example displays 10 approximated values (you may change this amount through
the N_out variable) for the given function with abscissas equally spaced in the
interval. The X and Y coordinate arrays are initialized by evaluating
this function for N = 12 points equally spaced in the domain from π to 5 π .
#include <codecogs/maths/regression/forsythe.h> #include <cmath> #include <iostream> #include <iomanip> using namespace std; #define PI 3.1415926535897932384626433832795 #define N 12 int main() { // Declare and initialize two arrays to hold the coordinates of the initial data points double x[N], y[N]; // Generate the points double xx = PI, step = 4 * PI / (N - 1); for (int i = 0; i < N; ++i, xx += step) { x[i] = xx; y[i] = sin(xx) + xx; } // Initialize the regression approximation routine with known data points Maths::Regression::Forsythe A(N, x, y, 11); // Interrogate the regression function to find approximated values int N_out = 10; xx = PI, step = (3 * PI) / (N_out - 1); for (int i = 0; i < N_out; ++i, xx += step) { cout << "x = " << setw(7) << xx << " y = "; cout << setw(11) << A.getValue(xx) << endl; } return 0; }
Output:x = 3.14159 y = 3.14159 x = 4.18879 y = 3.32358 x = 5.23599 y = 4.36968 x = 6.28319 y = 6.28329 x = 7.33038 y = 8.19637 x = 8.37758 y = 9.24362 x = 9.42478 y = 9.42478 x = 10.472 y = 9.60593 x = 11.5192 y = 10.6532 x = 12.5664 y = 12.5663
Authors
- Lucian Bentea (August 2005)
Source Code
Source code is available when you buy a Commercial licence.
Not a member, then Register with CodeCogs. Already a Member, then Login.
Members of Forsythe
Forsythe
Initializes the necessary data for following evaluations of the polynomial.Forsythe( int n double* x double* y int degree )[constructor] n The number of initial points in the arrays x and y x The x-coordinates for the initial points y The y-coordinates for the initial points degree The number of polynomials to use in the approximation
GetValue
Returns the approximated ordinate at the given abscissa.doublegetValue( double x ) x The abscissa of the approximation point
Forsythe Once
doubleForsythe_once( | int | n | |
double* | x | ||
double* | y | ||
int | degree | ||
double | a | ) |
Example 2
- The following graph are constructed by forming a regression of the following values, using a 3rd order orthogonal polynomials
x = 1 y = 0.22 x = 2 y = 0.04 x = 3 y = -0.13 x = 4 y = -0.17 x = 5 y = -0.04 x = 6 y = 0.09 x = 7 y = 0.11
There is an error with your graph parameters for Forsythe_once with options n=7 x="1 2 3 4 5 6 7" y="0.22 0.04 -0.13 -0.17 -0.04 0.09 0.11" degree=3 a=1:7 .inputError Message:Function Forsythe_once failed. Ensure that: Invalid C++
Parameters
n The number of initial points in the arrays x and y x The x-coordinates for the initial points y The y-coordinates for the initial points degree The number of polynomials to use in the approximation a The x-coordinate for the output point
Returns
- the interpolated y-coordinate that corresponds to a.
Source Code
Source code is available when you buy a Commercial licence.
Not a member, then Register with CodeCogs. Already a Member, then Login.