I'm study Computer science in 4 degree and i'm trouble with bisection method implementation in c++. The error is about the code run one time and end, i tried some changes but any good result :( If you can help me, please do it. I saw some alternative done codes, but not helped me because my is so different.
my code following:
#include <iostream>
#include <math.h>
using namespace std;
double funcao(double x)
{
double resultado;
resultado = x*log10(x)-1;
return resultado;
}
double E(double xk,double xkAnt)
{
double resultado =0;
resultado= fabs((xk-(xkAnt))/xk);
cout<<"O resultado de E é: "<<resultado<<"\n\n";
return resultado;
}
// 1)metodo da Bissecção:
// Este programa implementa o método da bissecção para obter a raíz
int main()
{
setlocale(LC_ALL,"Portuguese");
double a,b,xk,xkAnt,erro;
xkAnt=0;
a=2.0;
b=3.0;
//cout<<"Digite o valor(double) para o erro \n"<<"Erro: ";
erro=0.005;
while(E(xk,xkAnt)>erro)
{
xk= (a+b)/2;
if((funcao(a)*funcao(xk))<0)
{
b=xk;
xkAnt=xk;
cout<<"Multiplicação das Func. <0 B = xk \n\n";
}
else
{
a=xk;
xkAnt=xk;
cout<<"Multiplicação das Func. >0 A = xk \n\n";
}
if(xkAnt==0)
{
cout<<"A: "<<a<<endl<<"B: "<<b<<endl<<"XK: "<<xk<<endl<<"Fun(XK): "<<funcao(xk)<<endl<<"Erro: *"<<endl<<endl;
}
else
{
cout<<"A: "<<a<<endl<<"B: "<<b<<endl<<"XK: "<<xk<<endl<<"Fun(XK): "<<funcao(xk)<<endl<<"Erro: "<<E(xk,xkAnt)<<endl<<endl;
}
}
return 0;
}