Bisection Method
void Bisection(double xl , double xu, double es, int maxi) {
double xr = 0, xrOld = 0, i = 0, ea = 0;
if(f(xl)* f(xu) > 0) {
cout << "No root" << endl;
return;
}
cout << "i\\t" << "xl\\t" << "f(xl)\\t" << "xr\\t" << "f(xr)\\t" << "xu\\t" << "f(xu)\\t" << "ea\\t" << endl;
do {
xrOld = xr;
xr = (xl + xu) / 2;
ea = abs((xr - xrOld) / xr) * 100;
if (i == 0)
cout << ++i << "\\t" << xl << "\\t" << f(xl) << "\\t" << xr << "\\t" << f(xr) << "\\t" << xu << "\\t" << f(xu)
<< "\\t"
<< "--\\t" << endl;
else
cout << ++i << "\\t" << xl << "\\t" << f(xl) << "\\t" << xr << "\\t" << f(xr) << "\\t" << xu << "\\t" << f(xu)
<< "\\t"
<< ea << endl;
f(xl) * f(xr) < 0 ? xu = xr : xl = xr;
} while(ea > es && i < maxi);
}
False Position Method
void FalsePosition(double xl , double xu, double es, int maxi) {
double xr = 0, xrOld = 0, i = 0, ea = 0;
if(f(xl)* f(xu) > 0) {
cout << "No root" << endl;
return;
}
cout << "i\\t" << "xl\\t" << "f(xl)\\t" << "xr\\t" << "f(xr)\\t" << "xu\\t" << "f(xu)\\t" << "ea\\t" << endl;
do {
xrOld = xr;
xr = xu - (f(xu) * (xl - xu)) / (f(xl) - f(xu));
ea = abs((xr - xrOld) / xr) * 100;
if (i == 0)
cout << ++i << "\\t" << xl << "\\t" << f(xl) << "\\t" << xr << "\\t" << f(xr) << "\\t" << xu << "\\t" << f(xu)
<< "\\t"
<< "--\\t" << endl;
else
cout << ++i << "\\t" << xl << "\\t" << f(xl) << "\\t" << xr << "\\t" << f(xr) << "\\t" << xu << "\\t" << f(xu)
<< "\\t"
<< ea << endl;
f(xl) * f(xr) < 0 ? xu = xr : xl = xr;
} while(ea > es && i < maxi);
}
Simple Fixed Point
void SimpleFixedPoint (double x0, double es, double maxi){
double xOld = 0, ea = 0;
int i = 0;
cout << "i\\t" << "xi\\t" << "f(x\\t" << "ea\\t" << endl;
do {
xOld = x0;
x0 = f(x0);
ea = abs((x0 - xOld) / x0) * 100;
if (i == 0)
cout << ++i << "\\t" << x0 << "\\t" << f(x0) << "\\t" << "--\\t" << endl;
else
cout << ++i << "\\t" << x0 << "\\t" << f(x0) << "\\t" << ea << endl;
} while(ea > es && i < maxi);
}
Newton
void Newton(double x0, double es, double maxi) {
double xOld = 0, ea = 0;
int i = 0;
cout << "i\\t" << "xi\\t" << "f(xi)\\t" << "f'(xi)" << "ea\\t" << endl;
do {
xOld = x0;
x0 = df(x0);
ea = abs((x0 - xOld) / x0) * 100;
if (i == 0)
cout << ++i << "\\t" << x0 << "\\t" << f(x0) << "\\t" << df(x0) << "\\t" << "--" << endl;
else
cout << ++i << "\\t" << x0 << "\\t" << f(x0) << "\\t" << df(x0) << "\\t" << ea << endl;
} while(ea > es && i < maxi);
}0
Secant
void Secant(double x_1, double x0 , double es, int maxi){
double xr = 0, xrOld = 0, i = 0, ea = 0;
cout << "i\\t" << "xi-1\\t" << "f(xi-1)\\t" << "xi\\t" << "f(xi)\\t" << "ea\\t" << endl;
do {
xrOld = xr;
xr = x0 - (f(x0) * (x_1 - x0)) / (f(x_1) - f(x0));
ea = abs((xr - xrOld) / xr) * 100;
if (i == 0)
cout << ++i << "\\t" << x_1 << "\\t" << f(x_1) << "\\t" << xr << "\\t" << f(xr) << "\\t" << "--\\t" << endl;
else
cout << ++i << "\\t" << x_1 << "\\t" << f(x_1) << "\\t" << xr << "\\t" << f(xr) << "\\t" << ea << endl;
x_1 = x0;
x0 = xr;
} while(ea > es && i < maxi);
}