Interface
#include <codecogs/maths/rootfinding/aitken.h>
using namespace Maths::RootFinding;
| double | aitken (double (*f)(double), double x0 = 0, double eps = 1E-10, int maxit = 1000, double c = -1)
Calculates the zeros of a function using Aitken acceleration. |
Use the following HTML code to embed the calculators within other websites:
Aitken
Let

be a sequence with limit

. The Aitken method consists of transforming

into

where
The

sequence converges more rapidly than

towards the same limit

.
It is good practice to avoid the above form of

, which is numerically unstable, and write it in the
following equivalent form:
This algorithm finds the roots of the user-defined function
f starting with an initial guess
x0 and iterating the
sequence above until either the accuracy <em> eps </em> is achieved or the maximum number of iterations
maxit is
exceeded. The
c factor is used to aid convergence; c = -1 is a normal value, however if divergence occurs,
smaller and/or positive values should be tried.
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
#include <codecogs/maths/rootfinding/aitken.h>
#include <iostream>
#include <iomanip>
#include <cmath>
// user-defined function
double f(double x) {
return sin(x);
}
int main()
{
double x = Maths::RootFinding::aitken(f, 3);
std::cout << "The calculated zero is X = " << std::setprecision(12) << x << std::endl;
std::cout << "The associated ordinate value is Y = " << f(x) << std::endl;
return 0;
}
Output:
The calculated zero is X = 3.14159265462
The associated ordinate value is Y = -1.02635576671e-009
Parameters
| f | the user-defined function |
| x0 | Default value = 0 |
| eps | Default value = 1E-10 |
| maxit | Default value = 1000 |
| c | Default value = -1 |
Authors
- Lucian Bentea (August 2005)
Source Code
Source code is available when you agree to a GP Licence or buy a Commercial Licence.
Not a member, then Register with CodeCogs. Already a Member, then Login.