Autor
|
Tema: Error al dar valor mayor de 1 en el programa (Leído 2,198 veces)
|
Antoniio
Desconectado
Mensajes: 121
|
Hola, hace poco coloqué una duda sobre el método de Bisección, ahora tengo uno parecido, el de "Regla Falsa": http://esimecu-anumerico.blogspot.mx/2011/06/metodo-de-la-regla-falsa.htmlEl problema es que al momento de dar un valor mayor a 1 en el extremo inferior (xi) me marca error para cualquier número de iteraciones, este es el código: #include <iostream> #include <stdlib.h> #include <math.h> using namespace std; double eval_funcion(double); int main(){ float TOL, xi, xs, xr, xra; float fxi , fxs, fxr; float validador, exr, er; float A, B, C, D; int N, i; 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 iteracion a iteracion cout<<"\n"<<i<<"\t"<<xr<<"\t\t"<<fxr<<"\t\t"<<er; if((fxr==0)||(er<TOL)){ cout<<"\nEl proceso se realiz\xA2 de manera correta."; system("pause"); exit(1); } i++; } if((i>N)&&(er>TOL)) { cout<<"\nEl m\x82todo fracas\xA2 despu\x82s de "<< N <<" iteraciones\n"; } 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; }
Por qué sólo funciona dando el valor de 1 en xi?, gracias de antemano.
|
|
« Última modificación: 14 Septiembre 2015, 05:24 am por engel lex »
|
En línea
|
|
|
|
engel lex
|
intentaste hacer un debug del programa para ver linea a linea que pasa y si se comporta como esperas?
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
Antoniio
Desconectado
Mensajes: 121
|
Sí, lo hice pero no logro captar ningún error, no entiendo por qué no funciona el programa, debería funcionar perfecto así como está :s
|
|
|
En línea
|
|
|
|
engel lex
|
cuando hiciste el debug, calculaste en que linea el calculo matemático deja de ser correcto?
|
|
|
En línea
|
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
|
|
|
Antoniio
Desconectado
Mensajes: 121
|
Pues, tal parece que el error se encontraba en esta línea: if((fxr==0)||(er<TOL)){ y ya la modifiqué por esta otra: if((fabs(fxr)<1e-6)||(er<TOL)){ Pero sigo sin poder solucionarlo, creo que así lo dejaré, igual y debo comenzar todo desde 0.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Apple se convierte en la marca con mayor valor en el mercado
Noticias
|
wolfbcn
|
0
|
1,417
|
9 Mayo 2011, 21:05 pm
por wolfbcn
|
|
|
Como Obtener valor de un textbox, desde un valor, hasta otro valor [VB6]
Programación Visual Basic
|
revenge1252
|
4
|
6,297
|
17 Julio 2012, 09:38 am
por BlackZeroX
|
|
|
Duda: Programa devolviendo valor a otro programa
Programación C/C++
|
erest0r
|
6
|
3,532
|
3 Julio 2015, 01:38 am
por erest0r
|
|
|
Mayor valor de un vector en C
Programación C/C++
|
estudiante_1
|
7
|
5,127
|
27 Julio 2015, 11:18 am
por estudiante_1
|
|
|
Mostrar el mayor valor de una pila
Programación C/C++
|
Mar90_13
|
2
|
4,262
|
12 Agosto 2022, 17:02 pm
por dijsktra
|
|