I have forgotten
my Password

Or login with:

  • Facebookhttp://facebook.com/
  • Googlehttps://www.google.com/accounts/o8/id
  • Yahoohttps://me.yahoo.com
COST (GBP)
this unit 2.98
sub units 0.00
+
0

Falseposition

Calculates the zeros of a function using the Regula-Falsi method.
Controller: CodeCogs

add cart

Interface

C++

Falseposition

 
doublefalsepositiondouble(*f)(double)[function pointer]
doublex0 = -1E+7
doublex1 = 1E+7
doubleeps = 1E-10
doublemaxit = 1000 )
The false position method, on contrast with Newton's method, in which the calculation of the derivative f'(x_n) was required, replaces it with its approximation

Given x_0 and x_1, the main algorithm is based on the following recurrence relation

This method has rate of convergence \frac {1 + \sqrt{5}} {2} \approx 1.618, therefore inferior to the method of Newton. However it is more accurate than Newton because only one function evaluation is required, f(x_n), f(x_{n - 1}) being calculated in the previous iteration, while Newton requires two, f(x_n) and f'(x_n).

To give you a better idea on the way this method works, the following graph shows different iterations in the approximation process. Here is the associated list of pairs chosen at consecutive steps

1/falseposition-378.png
+
This algorithm finds the roots of the user-defined function f starting with an initial interval [x0, x1] and iterating the sequence above until either the accuracy eps is achieved or the maximum number of iterations maxit is exceeded.

Example:

#include <codecogs/maths/rootfinding/falseposition.h>
 
#include <iostream>
#include <iomanip>
#include <cmath>
 
// user-defined function
double f(double x) {
    return cos(x);
}
 
int main() 
{
  double x = Maths::RootFinding::falseposition(f, 1, 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 = 1.70614146372
The associated ordinate value is Y = -0.134932299622

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

Parameters

fthe user-defined function
x0Default value = -1E+7
x1Default value = 1E+7
epsDefault value = 1E-10
maxitDefault value = 1000

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.