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

Cita:
Iniciado por eferion Ver Mensaje
El tipo float tiene una precisión aproximada de 6 dígitos... El resto de dígitos menos significativos se consideran basura. El motivo es que la representación decimal no es precisa 100%. Si quieres conseguir más precisión necesitas usar el tipo double.

Si ya necesitas más precisión tendrás que usar librerías externas o currarte un almacenamiento propio con mas precisión.

Un saludo
Mil gracias quedo un lujo.

Código:
#include <stdio.h>
#include <conio.h>
main (){
float n=0,error=0; //inizializa las variables
double a=999999,ri=1;
int v=0; //(ri puede valer cualquier nro)
printf ("ingresar valor para buscar raiz : ");
scanf ("%f",&n);
printf ("ingresar margen de error (usar punto para los decimales\nEl numero debe ser mayor de 0.00000000000001):");
scanf ("%f",&error);
if (error<0.00000000000001){ // en caso de que el valor ingresado sea menor para el programa
        printf ("para mayor precision hay que hacer otro algoritmo");
    }else{

    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(mientras tanto en en el algoritmo(?))\nwhile [(ri*ri) - (n)]=(%10.10f)>=(error)(%10.10f)\n\n",ri,v,a,error);

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

Última edición por c64; 13/06/2015 a las 18:18