Ver Mensaje Individual
  #7 (permalink)  
Antiguo 15/09/2015, 12:23
Avatar de Jose_A
Jose_A
 
Fecha de Ingreso: mayo-2015
Ubicación: México, Sonora.
Mensajes: 180
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Error al dar valor mayor de 1 en el programa

Claro, así es como lo tengo actualmente:
Código:
#include <iostream>
#include <stdlib.h>
#include <math.h>

using namespace std;

double eval_funcion(double);

int main(){
 double TOL, xi, xs, xr, xra;
 double fxi , fxs, fxr; 
 double validador, exr, er;
 double A, B, C, D;
 int N, i=0;
 
 cout<< "Ingrese el extremo inferior (Xi) : " << endl;
 cin >> xi; 
 cout << "Ingrese el extremo superior (Xs) : " << endl;
 cin >> xs; 
 cout << "Ingrese la tolerancia : " << endl;
 cin >> TOL; 
 cout << "Ingrese el n\xA3mero de iteraciones : " << endl;
 cin >> N; 

 fxi=eval_funcion(xi); 
 fxs=eval_funcion(xs);
 A = xi - xs;
 B = fxs * A;
 C = fxi - fxs;
 D = B/C;   

 xr = xs - D;   
 cout<<"\nAproximaci\xA2n de la ra\xA1z buscada: " << xr;    fxr = eval_funcion(xr);
 
 cout<<"\n"<<"n"<<"\t"<<"Ra\xA1z"<<"\t\t"<<"f(ra\xA1z)"<<"\t\t\t"<<"Error";

 while(i <= N)
 {
  xra = xr; 
  validador = fxi * fxr;
  
  if(validador < 0) {   
  	 xs=xr;    
  }
  else{
    xi=xr;   
  } 

  fxi=eval_funcion(xi); 
  fxs=eval_funcion(xs);
  A = xi - xs;
  B = fxs * A;
  C = fxi - fxs;
  D = B/C;
  xr = xs - D;
  fxr=eval_funcion(xr);    

  //error relativo
  exr = xr - xra;  
  er = exr/xr; 
  if(er<0){
     er=er*(-1);
  }

  //resultados iteración a iteración
  cout<<"\n"<<i<<"\t"<<xr<<"\t\t"<<fxr<<"\t\t"<<er;

  if((fabs(fxr)<1e-6)||(er<TOL)){
  	cout<<"\nEl proceso se realiz\xA2 de manera correta." << endl;
	  system("pause"); exit(1);
  }
  
  i++;
 } 
 
 if((i>N)&&(er>TOL)) {
   cout<<"\nEl m\x82todo fracas\xA2 despu\x82s de "<< N <<" iteraciones\n" << endl;
 }
   system("pause");     
}
/******************************************************************************/

double eval_funcion(double v)
{
 double r , ee, emx, logx;
 ee = pow(2.718281828,v); emx = 1/ee;
 logx = log(v);
 
 r = emx - logx; 
 return r;    
}