Eloy
1. Dada una función f (x) = 0 convertirla de la forma x = f(x)
Existen dos maneras de realizar esta operación:
a) Agregar de ambos lados de la ecuación una x.
b) Despejar la x deltérmino de primer grado de la ecuación.
2. Elegir un valor inicial Xo. Este valor inicial debe cumplir con el criterio de convergencia:
| f’(x0) | < 1
3. Obtener una nueva aproximación evaluando laformula general del método
x n+1 = f ( xn )
4. Evaluar la aproximación relativa
| ( x n+1 - x n ) / x n+1 | < Tolerancia
No. (Falso) repetir el paso 3 y 4
Si . (Verdadero), entonces Xn+1 es laRaíz
/**************************************/
/* Programa de Metodos Numericos */
/* Aproximaciones Sucesivas o */
/* de punto fijo */
/* Para unafuncion dada */
/**************************************/
#include
#include
#include
/************ Declaracion de Funciones ***********/
/* Ejemplo Ecuacion Original --> X^2-0.5*/
/****************************************************/
void Lee_Datos(void);
double Funcion(double Xi);
double Xo;
float Tolera;
int Ciclos;
int main()
{
double Fx;double Xn;
float Error = 1;
int Cont = 0;
Lee_Datos();
printf("\n======================================================");
printf("\n Ciclo Xo Fx XnError");
printf("\n======================================================");
while (Error > Tolera && Ciclos > Cont)
{
Fx = Funcion(Xo);
Xn = Fx;
Error = fabs( (Xn - Xo)/Xn );Cont++;
printf("\n%3d%10.4lf%10.4lf%10.4lf%10.4f",Cont,Xo,Fx,Xn,Error);
Xo = Xn;
}
printf("\n======================================================");
if (Ciclos > Cont)printf("\n La raiz de la ecuacion es %.5lf ",Xn);
else
printf("\n\n No converge en %3d Ciclos !!!! Dar nuevos valores",Ciclos);
getch();
}
void Lee_Datos(void)
{
clrscr();
printf("\n...
Regístrate para leer el documento completo.