Successive approximation in C++

In this tutorial, we will learn how to find out the root of an equation using the successive approximation method in C++. Before proceeding further let’s first understand what is a successive approximation.

Successive approximation: It is an iterative method that is used for finding the root of an equation. It starts its iterative process with an initial approximation. At each stage, it tries to approximate the root of an equation in such a way that the inconsistency between the newest estimated root and the original root is systematically reduced.

It has huge importance in mathematics. it is widely used in many fixed point theories.

Algorithm: Successive approximation

  1. Initialize x0(initial approximation) and xn.
  2. assign x0 to xn and increment x0.
  3. repeat step 2 until f(x0)*f(xn) is positive.
  4. assign xn to x0.
  5. assign the result of the g(x0) to xn.
  6. repeat steps 4-5 until |xn-x0| is greater than the accepted error.

Program to find the root of an equation using the successive approximation method in C++

#include<iostream>
/* cmath header file is included for cos() function */
#include<cmath>
/* iomanip header file is included for setprecision() function */
#include<iomanip>
using namespace std;

double f(double x)
{
  /* return the equation whose root is to be determined. Here, we have used equation: cos(x)-3x+5=0 */
  return (double)cos(x)-3*x+5;
}

double g(double x)
{
  /* In this function we have to return x. For cos(x)-3*x+5=0, value of x will be (cos(x)+5)/3. */
  return (double)(cos(x)+5)/3;
}

int main()
{
  double x0,xn=1;
  int iter=0;

  cout<<"Enter the initial approximation: ";
  cin>>x0;
  
  cout<<"\nIteration     x0        xn\n";
  
  while(f(x0)*f(xn)>0)
  {
    xn=x0;
    x0++;
  }
  
  /* 0.000001 is the accepted error */
  while(fabs(xn-x0)>0.000001)
  {
    x0=xn;
    xn=g(x0);
    iter++;
    
    cout<<"     "<<iter<<"     "<<x0<<"     "<<setprecision(6)<<xn<<"\n";
  }
  cout<<"\n\nThe root of the equation cos(x)-3x+5=0 is "<<xn;
  
  return 0;
}

Input/Output:

Enter the initial approximation: 0

Iteration     x0      xn
    1         1      1.84677
    2      1.84677   1.57584
    3      1.57584   1.66499
    4      1.66499   1.63532 
    5      1.63532   1.64517
    6      1.64517   1.6419
    7      1.6419    1.64299
    8      1.64299   1.64262
    9      1.64262   1.64274
   10      1.64274   1.6427
   11      1.6427    1.64272
   12      1.64272   1.64271
   13      1.64271   1.64271
   14      1.64271   1.64271

The root of the equation cos(x)-3x+5=0 is 1.64271

You may also learn:

  1. Find the root of an equation using Newton Raphson method in C++
  2. Secant Method to find the root of an equation in C++

Leave a Reply

Your email address will not be published. Required fields are marked *