Regula Falsi

 #include <iostream>

#include<math.h>

#include <iomanip>

#define err 0.0001

using namespace std;


float f(float x){ 

    return //your equation

}


float regula(float x0,float x1)

{

    return x0-((x1-x0)/(f(x1)-f(x0))*f(x0));

}

int main()

{

    int i = 1,max;

    float x0,x1,x2,x3;

    cout<<"Enter initial approximate roots a: ";

    cin>>x0;

    cout<<"Enter initial approximate roots x1: ";

    cin>>x1;

    cout<<"Enter max no of iteration: ";

    cin>>max;

    cout<<setprecision(6)<<"Iteration\tRoot\n";

    x2 = regula(x0,x1);

    while(i<max)

    {

        cout<<i<<"\t\t"<<x2<<endl;

        if(f(x0) * f(x2) < 0)

        {

            x1 = x2;

        }

        else

        {

            x0=x2;

        }

        x3 = regula(x0,x1);

        i++;

        if(fabs(x3-x2)<err)

        {

            cout<<"\nRoot after "<<i<<" iteration = "<<setprecision(5)<<regula(x0,x1)<<endl;

            return 0;

        }

        x2 = x3;

    }

    cout<<"\nSolution does not cover: "<<i<<" iteration is insufficient";

    return 1;

}


0 Comments: