6 votos

¿Cuál es la mejor manera de calcular la representación decimal de una fracción con una precisión arbitraria?

Supongamos que se te da una fracción, por ejemplo $\frac{1}{37}$. ¿Cuál es la mejor manera de calcular su notación decimal con una precisión arbitraria?

¿Existe una mejor manera que utilizar un algoritmo numérico, por ejemplo, el método de Newton? ¿Es esto lo que hace tu calculadora en segundo plano? ¿Y qué hay de la otra manera?

10voto

Mike Powell Puntos 2913

1

Para calcular la notación decimal con una precisión "infinita", solo puedes usar aritmética de enteros, manteniendo los restos, de la misma forma en que lo harías con un lápiz y papel. Por ejemplo, para encontrar $1/37$:

  • $\lfloor 1/37 \rfloor = 0$, entonces escribe "$0.$" y "baja" un $0$: es decir, actualiza tu dividendo actual (una palabra arcaica para el número por el cual estás dividiendo por $37$) a $10 = 10(1 - 0\cdot 37)$.
  • $\lfloor 10/37 \rfloor = 0$, entonces escribe $0$ y actualiza tu dividendo a $100 = 10(10 - 0\cdot 37)$.
  • $\lfloor 100/37 \rfloor = 2$, entonces escribe $2$ y actualiza tu dividendo a $10(100 - 2\cdot37) = 260$

Y así sucesivamente. Cuando veas que un dividendo se repite, puedes detenerte porque sabes que a partir de allí, el proceso seguirá de la misma manera que la última vez que viste ese dividendo: has encontrado la parte periódica de la expansión decimal. Debido a que después de cada paso el dividendo se actualiza a 10 veces el resto módulo 37, solo hay 37 restos posibles; siempre obtendrás una repetición después de un máximo de 37 pasos.


2

Lo anterior no es lo que hacen los calculadores normales (y los cálculos de punto flotante en una computadora). Están construidos no para una precisión arbitraria, sino para una precisión fija. Tampoco distinguen entre números racionales e irracionales para la computación de punto flotante. Se utilizan diferentes métodos de división (ver Wikipedia), incluyendo el algoritmo de división ingenuo, el método de Newton, la multiplicación por el recíproco (calculado ya sea con una rutina especializada o incluso posiblemente una tabla de búsqueda), Hensel lifting, etc. (Ver por ejemplo la publicación de sigfpe sobre la división por 7 usando números 2-ádicos.) Algo como el método de Newton, optimizado para el tamaño de palabra de la calculadora/computadora, es preferido. Por cierto, los números suelen almacenarse en forma de mantisa-exponente, como un par de enteros binarios $(s,e)$ denotando el número $1.s \times 2^e$. (Por ejemplo, $37.0$ que es $100101.0$ en binario puede ser almacenado como el par $(00101,5)$.)


3

Dada la expansión decimal de un número, escribirla como una fracción es fácil si sabes que es exacta. Por ejemplo si sabes que un número es exactamente $0.453$, entonces es $453/1000$. Pero generalmente con precisión fija conoces la expansión decimal solo aproximadamente: dado $0.333333333$, lo que probablemente quieres es $1/3$ en lugar de $333333333/1000000000$. Para esto, la mejor herramienta son fracciones continuas. Por ejemplo, $1/37 = 0.\overline{027}$ pero si tienes en cambio $0.02702703$, su fracción continua da la secuencia de convergentes $0$, $1/36$, $1/37$, $245700/9090899$, $737101/27272734$, $982801/36363633$, $2702703/100000000$, y puedes usar tu criterio para decidir que $1/37$ es probablemente lo que quieres.

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