8 votos

Calcular el $\pi$ con una precisión de 5 decimales?

En este mensaje, en el punto 18 vi de programación siguiente pregunta:

Dado que el $\pi$ puede ser estimada usando la función de $4(1 – 1/3 + 1/5 – 1/7 + \ldots)$ con más de un término, dando mayor precisión, escribir una función que calcula Pi con una precisión de 5 decimales.

Así que sé cómo implementar la función dada y cómo elegir la forma de "lejos" que debo calcular, pero ¿cómo puedo saber cuando he llegado a la "precisión de 5 decimales" ?

11voto

Jay Puntos 44

Alternan la suma y resta de disminución de los valores. Así que el siguiente valor es el límite de la diferencia entre el resultado actual y el Pi.

7voto

Lissome Puntos 31

La serie que escribí es una Alternancia de serie. La alternancia de serie de la prueba, dice que para este tipo de serie, el error en la aproximación es menor que el valor absoluto de la primer término que falta.

En otras palabras, si el último término que tiene es de la forma $\pm \frac{1}{2n+1}$, entonces su aproximación es buena dentro de $\frac{1}{2n+3}$. Para estar seguro de que este es precisa para el 5º dígito, usted necesita

$$\frac{1}{2n+3} \leq 0.00001$$

3voto

Eliot Ball Puntos 150

Usted puede simplemente seguir adelante hasta el número de decimales que usted está interesado en no cambiar por dos términos. Desde que sumar y restar alternativamente, y la posterior términos tienen un efecto menor, usted puede estar seguro de que el número de decimales nunca va a cambiar, si no para los dos turnos.

Tenga en cuenta que esta serie de pi es muy lento!

2voto

Tachyons Puntos 10001

4 * 1 / 400000 = 0.00001. Cualquier término menor que la que no va a contribuir a los 5 primeros decimales de la suma acumulada.

Así, en pseudo-código:

val = 0;
for d = 1; d <= 400000; d += 4
    val += 1 / d
    val -= 1 / (d+2)
return val*4 

2voto

Jake Puntos 118

La iteración debe ser simple; es la forma de saber cuando tienes que hacer, sin saber la respuesta, eso es más complicado. Básicamente, si usted necesita saber la respuesta a 5 decimales, luego se detiene tan pronto como el 5º lugar decimal no ha cambiado en algunos arbitraria número de ensayos.

Una forma más elegante (no es necesario multiplicar por 4 después de cada paso para asegurar la precisión de que el número final es dentro de la epsilon) es dejar de fumar tan pronto como se alcance un valor que no cambia el dígito menos significativo del valor decimal que se iba a producir el valor correcto de la Pi. Pi a 5 decimales es 3.14159. Dividido por 4, la realización de la necesaria suma de la serie infinita), eso es .7853975. Esto es lo que tenemos que llegar. Por lo tanto, la fracción más grande que se pueden sumar a la serie que no va a afectar a la precisión es 1E-8 (cien millones).

Así, el punto final de la iteración N en que $|\dfrac{-1}{2n-1} + \dfrac{1}{2n+1}| < .00000001$, de modo que al final de la iteración (una iteración de ser una resta y una suma), la suma de la serie no ha cambiado por un grado mayor que el epsilon. Por inspección, vemos que la suma de las dos fracciones será negativa, por lo que:

$\dfrac{1}{2n+1} - \dfrac{1}{2n-1} = -0.00000001$

$\dfrac{2n-1}{(2n+1)(2n-1)} - \dfrac{2n+1}{(2n+1)(2n-1)} = -1*10^{-8}$

$\dfrac{(2n-1)-(2n+1)}{(2n+1)(2n-1)} = -1*10^{-8}$

$\dfrac{-2}{4n^2-1} = -1*10^{-8}$

$-2 = (-1*10^{-8})(4n^2-1)$

$\dfrac{-2}{-1*10^{-8}} = 4n^2-1$ <-- a partir de aquí prácticamente se puede enchufar en cualquier necesitan de precisión

$2*10^{8} = 4n^2-1$

$200000001/4 = n^2$

$50000000.25 = n^2$

$n > 7071$

Conectando de nuevo a comprobar, obtenemos $\dfrac{1}{2(7072)+1} - \dfrac{1}{2(7072)-1} = \dfrac{1}{14145} - \dfrac{1}{14143} = -0.9997*10^{-8}$ que es menos importante que $-1*10^{-8}$.

Por lo tanto, deben tomar 7072 iteraciones, al menos, de restar el inverso de un número natural impar, luego agregar el siguiente más pequeño impar inversa, para llegar a una suma que va a producir pi con la precisión necesaria. De hecho, en realidad puede tener muchas más para producir un valor que rondas correctamente para el necesario número de decimales; si simplemente truncar a la necesaria sig higos, esta es la respuesta.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X