1 votos

$10^9 \times \sqrt{3}$ ¿qué son los dos primeros dígitos después del punto decimal?

Debido al error de punto flotante, mi ordenador básicamente dice $10^9 \sqrt{3} \approx 1.73205 \times 10^9$ por lo que si ignoramos los números antes del punto decimal, el parte fraccionaria es: $$\{ 10^9 \sqrt{3} \} = 0$$

Es evidente que eso es un error. A medida que el algoritmo avanza, el programa va perdiendo precisión, obteniendo efectivamente el error que acabo de describir. si lo escribo directamente obtenemos la respuesta correcta:

$$ 10^9 \sqrt{3} = 1732050807.\color{#00D000}{56}88772$$

pero el ordenador no almacena todos estos dígitos para siempre. Me gustaría saber cómo obtener los dos primeros decimales sin una calculadora.

2voto

Matthew Scouten Puntos 2518

Quieres los dos dígitos antes de el punto decimal de $10^{11} \sqrt{3} = \sqrt{3 \times 10^{22}}$ . Veamos si podemos obtener una buena aproximación racional de eso. Dejemos que $A = 3 \times 10^{22}$ . La iteración del método de Newton para $\sqrt{A}$ es $x \to (x + A/x)/2$ . Si empezamos con $x_0 = 2 \times 10^{11}$ y aplicar esta iteración, redondeando cada resultado al entero más cercano, obtenemos $$ \eqalign{x_1 &= 175000000000\cr x_2 &= 173214285714\cr x_3 &= 173205081001\cr x_4 &= 173205080757\cr x_5 = x_4 &= 173205080757\cr}$$ Compruebe que $x_4^2 > A$ Así que lo que queremos es $x_4 - 1 = 173205080756$ y sus dos dígitos más bajos son la respuesta: $56$ .

2voto

Michael Steele Puntos 345

El error real $997489097* \sqrt 3 = 1727701796.0$ Nada después del punto decimal. No bromees.

Has encontrado una "buena" aproximación racional para $\sqrt 3$ y en este caso no es realmente sorprendente obtener una cadena de $0$ s después del punto decimal más o menos como los coeficientes enteros.

Por ejemplo, mira los números

$x_n = (2+\sqrt 3)^n(1+\sqrt 3)$ y $y_n = (2-\sqrt 3)^n(1-\sqrt 3)$

$x_ny_n = -2$ Así que mientras $x_n$ se hace muy grande, $y_n$ se hace muy pequeño.

Ampliar $x_n$ se obtiene $x_n = a_n + b_n\sqrt 3$ donde $a_n$ y $b_n$ son algunos enteros positivos.

Entonces $b_n\sqrt 3 = a_n - (a_n - b_n \sqrt 3) = a_n - y_n$ .

Por ejemplo, con $n=15$ , se obtiene

$299303201\sqrt 3 = 518408351 - y_{15} = 518408351.00000000192898\ldots$


Su ejemplo se obtiene con $x = (8+15\sqrt 3)(2+\sqrt 3)^{14} = 1727701796+997489097 \sqrt 3$

para que $997489097 \sqrt 3 = 1727701796 - (8-15\sqrt 3)(2-\sqrt 3)^{14} = 1727701796.000000176824\ldots$

que es menos "impresionante" porque $(8+15\sqrt 3)$ tiene norma $-611$ mientras que $(1+\sqrt 3)$ tiene norma $-2$ .

1voto

Justpassingby Puntos 5332

Puede utilizar el procedimiento a mano alzada: http://www.homeschoolmath.net/teaching/square-root-algorithm.php

0voto

Michael D. Puntos 521

Una aproximación puede partir del cuadrado de una fórmula de suma:

$(a+b)^2\approx a^2+2ab$ cuando $ a >>> b$

Eso te da:

$b \approx ((a+b)^2 - a^2)/2a$

Por lo tanto, si usted tiene una estimación buena a un cierto número de lugares (digamos $n$ ), la aproximación anterior debería dar la siguiente $(n-1)$ dígitos.

0voto

learner Puntos 370

Me parece que se trata de un problema informático. En cuyo caso, aquí está mi respuesta.

Yo consideraría usar $\sqrt 3$ como una cadena en lugar de un punto flotante para este caso.

Aquí está el código Python para esto :

n=3**(0.5)
string=str(n)
print("Non-negative integer n in 10^n*sqrt(3) ? = ")
val=int(input())
print("How many digits needed after decimal point ? = ")
prn=int(input())
for i in range(2+val,2+val+prn,1):
    print(string[i], end='')

Lo que hace el código es que toma el valor de $n$ en $10^n\sqrt 3$ y toma cuántos dígitos decimales imprimir después del punto decimal. Luego, un bucle cuidadosamente establecido imprime los dígitos requeridos comenzando por la posición que sería el primer dígito después del punto decimal en $10^n\sqrt 3$ .

Aquí El código que escribí en Ideone para esto hace un momento. Con las entradas $n=9$ y los dígitos decimales requeridos como $2$ la salida es $56$ según sea necesario.

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