bueno escribo este post sin haberme leido las respuestas en profundidad, antes que nada agradeceros el esfuerzo, voy a mirarme seriamente e ir planteando todo, a ver que tal se da la cosa....
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
Mostrar Mensajes MenúCita de: amchacon en 6 Diciembre 2013, 12:41 PM
Con todo el respeto del mundo, ese algoritmo es una auténtica caca. Primero porque es muy lento (ponle la raíz de 500 a ver que tal), segundo porque es muy poco preciso.
Lo que te están pidiendo esque hagas las series de taylor, la raíz de x puede expresarse como el limite de la siguiente sucesión:
Siendo x el número del que quieres obtener la raíz. El error con el que estás calculando la raíz puede expresarse como:
De modo que si quieres calcular de raíz de un numero con una precisión de 1e-15 (15 decimales de precisión). Tendrías que empezar en a(1) y ir aplicando la sucesión a(n). En cada calculo haces la resta con el valor anterior y paras cuando el error sea menor a 1e-15.
Ese es algoritmo que usa sqrt, debería darte el mismo resultado (puede variar en los decimales 16-17, pero es un error despreciable).
Pregunta si tienes alguna duda.
PD: No lo he dicho, pero para tener 15 decimales de precisión necesitaras usar double y no float
#include<stdio.h>
void main(void)
{
float n,res;
float i=0;
printf ("Introduzca variable n\n");
scanf ("%f",&n);
do
{
i= i+0.1;
res= i*i;
}while (res>=n);
printf ("\nLa raíz cuadrada de %f es %f",n,i);
getch();
}