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 (); }