Newton Raphson

 #include<iostream>

#include<iomanip>

#include<cmath>

using namespace std;

double f(double x)

{

    return //write your equation

}

double fprime(double x)

{

    return //write derivative of your equation

}

int main()

{

    cout<< fixed << setprecision(8);

    double x0,aerr;

    int maxitr;

    cout<<"Enter initial guess (x0): ";

    cin>>x0;

    cout<<"Enter allowed error: ";

    cin>>aerr;

    cout<<"Enter maximum iteration: ";

    cin>>maxitr;

    double x = x0;

    cout<<"\nIter\t x\t\t f(x)\t\t |dx|\n";

    for(int i = 1;i<=maxitr;++i)

    {

        double fx = f(x);

        double fpx = fprime(x);

        if(fpx == 0)

        {

            cout<<"Derivative is zero at x = "<<x<<". Method fails.\n";

            return 0;

        }

        double dx = fx/fpx;

        double x1 = x-dx;

        cout<<i<<"\t"<<x1<<"\t"<<f(x1)<<"\t"<<fabs(dx)<<"\n";

        if(fabs(dx) <= aerr)

        {

            cout<<"\nRoot = "<<x1<<" (converged in "<<i<<" iterations)\n"<<endl;

            return 0;

        }

        x = x1;

    }

    cout<<"\nDidnot converge within "<<maxitr<<" iterations.\n";

    cout<<"Last estimate of root: "<<x<<", f(x) = "<<f(x)<<endl;

    return 0;

}

0 Comments: