#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: