Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/06/2015, 08:19
c64
 
Fecha de Ingreso: noviembre-2014
Mensajes: 2
Antigüedad: 10 años
Puntos: 0
Raiz cuadrada por metodo newton.

Buenas saludos a todos.

Estoy aprendiendo c, haciendo ejercicios basicos. Me pidieron que haga la raiz cuadrada por el metodo newton.

Realice este algoritmo, funciona bien salvo cuando se ingresan valores muy altos en la presicion y la raiz es 5 por ejemplo (en las demas raices funciona bien).

Alguno puede darme una idea de porque es asi?

Código:
#include <stdio.h>
#include <conio.h>
main (){
float n=0,ri=1,error=0,a=10; //inizializa las variables
int v=0; //(ri puede valer cualquier nro)
char C;
printf ("ingresar valor para buscar raiz : ");
scanf ("%f",&n);
printf ("ingresar margen de error (usar punto para los decimales):");
scanf ("%f",&error);
    while (a>=error) {
    v++;
    ri = ( (n/ri) + ri ) / 2; //la formula
    a = (ri*ri) - (n) ; //el cuadrado de la raiz estimada menos el valor ingresado
    a = (a * a) / a;  // hago valor absoluto para a (por las dudas creo que no es necesario)
    printf ("\nLa estimacion es: %10.8f n En %d intentos.\n (en el algoritmo) while:(%10.17f)>=(%10.17f\n\n",ri,v,a,error);

    }
printf ("\n\nLa aproximacion final es: %10.17f\n En %d intentos.\n Con un margen de error de %10.17f\n:",ri,v,error);
getch ();
}