Menú

Mostrar Mensajes

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ú

Mensajes - bourne1191

#1
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....
#2
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

buena respuesta.. por ahora estoy empezando con C y no sé como meter ese tipo de límites en el compilador, pero suena bastante interesante y me pondré a investigarlo. desde luego, mi algoritmo era un poco "de andar por casa"... saludos y gracias
#3
joder, que despiste... muchas gracias, a ver si voy corrigiendo estos errores tan tontos. un saludo!!
#4
Hola! soy nuevo por aqui. Estoy estudiando ingeniería, y en una asignatura de informática han mandado hacer un programa para calcular la raíz cuadrada de un número real N sin usar la funcion sqrt sin la libreria math. Entonces, pensé en hacer una iteracíon desde i=0.1 a i=X hasta que i*i=>N... pero no me salen las cosas como quiero. os pongo el código;

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


sabéis ayudarme de alguna manera? gracias!