15/09/2015, 12:23
|
| | | 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;
}
|