My Bisection method in c++ -


i'm study computer science in 4 degree , i'm trouble bisection method implementation in c++. error code run 1 time , end, tried changes result :( if can me, please it. saw alternative done codes, not helped me because 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 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 = 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; } 

i've reading more , solution these consist in add int variable call k(iteration numbers) , if statement, wich ignore when k equals 0, after xkanterior=xk , program runs shine. thomas matthews me thinking.

    #include <iostream> #include <math.h>  using namespace std;       double funcao(double x){         double resultado;         resultado = x*log10(x)-1;         return resultado;     }      double calculaerro(double xk,double xkanterior){         double resultado;         resultado= fabs((xk-xkanterior)/xk);         return resultado;         cout<<"o resultado de e é: "<<resultado;     }  //   1)metodo da bissecção: // este programa implementa o método da bissecção para obter raíz int main() {     setlocale(lc_all,"portuguese");     double a,b,xk,xkanterior,k=0,e;      a=2.0;     b=3.0;          cout<<"digite o valor(double) para o erro \n"<<"e: ";         cin>>e;                      {             if(k==0)             {                 xkanterior=1;             }             else             {                 xkanterior=xk;             }              xk= (a+b)/2;         cout<<"a: "<<a<<endl<<"b: "<<b<<endl<<"xk: "<<xk<<endl<<"fun(xk): "<<funcao(xk)<<endl<<"erro: "<<calculaerro(xk,xkanterior);         cout<<endl<<"xk: "<<xk<<endl<<"xk_anterior: "<<xkanterior<<endl;          if((funcao(a)*funcao(xk))<0)             {             b=xk;             cout<<"multiplicação das func. <0 b = xk \n\n";             }         else             {             a=xk;             cout<<"multiplicação das func. >0 = xk \n\n";             }             k++;         }while(calculaerro(xk,xkanterior)>e);      return 0; } 

Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -