I have forgotten
my Password

get GPL
this unit 2.98
sub units 0.00


viewed 2040 times and licensed 50 times
Calculates the zeros of a function using Aitken acceleration.
Controller: CodeCogs




doubleaitkendouble(*f)(double)[function pointer]
doublex0 = 0
doubleeps = 1E-10
intmaxit = 1000
doublec = -1 )
Let \inline (x_n) be a sequence with limit \inline \overline{x}. The Aitken method consists of transforming \inline (x_n) into \inline (y_n) where

The \inline (y_n) sequence converges more rapidly than \inline (x_n) towards the same limit \inline \overline{x}. It is good practice to avoid the above form of \inline (y_n), 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.


  • 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;
The calculated zero is X = 3.14159265462
The associated ordinate value is Y = -1.02635576671e-009


fthe user-defined function
x0Default value = 0
epsDefault value = 1E-10
maxitDefault value = 1000
cDefault value = -1


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.