jueves, 17 de marzo de 2016

Una curiosidad sin importancia

El día 11-2-16, publiqué en Twitter, según acostumbro, y  como una curiosidad, el siguiente desarrollo para esa fecha, escrita como 11216:


Una vez publicado me di cuenta de que cualquier número entero se puede expresar de forma parecida, eligiendo bien el factorial y el exponente racional de e. Es una mera curiosidad, sin valor teórico, pero que nos permitirá repasar algunas técnicas matemáticas.

Buscamos, pues, una expresión del tipo

Obtención del factorial

El cálculo del factorial lo puedes resolver mentalmente, como por ejemplo, en el caso de 6000, el factorial más cercano inferiormente es 7!, pero si deseas automatizarlo, deberás tener en cuenta el crecimiento tan rápido de los factoriales, que pueden sobrepasar la capacidad de una hoja de cálculo. Para obviar esto, podríamos averiguar el valor de a! por divisiones sucesivas. Lo Intentaremos, como muchas veces organizamos en este blog, mediante técnicas cada vez más automatizadas. Prescindiremos por ahora de la función Int.

Con cálculo de celdas

Basta con que observes esta imagen para darte cuenta de los sencillo de esta técnica de obtención del factorial más cercano a N:



Este ejemplo está diseñado para el número 239881. En cada celda de la columna de la derecha hemos escrito una fórmula similar a esta:

=SI(celda de arriba>=celda de la izquierda;celda de arriba/celda de la izquierda; " ")

Es una condicional, en la que, si la celda de arriba es mayor o igual que la de la izquierda, se intenta seguir dividiendo entre 1, 2, 3,…a, y, en caso contrario, se deja la celda en blanco. Ese blanco es el causante de que abajo aparezca el error #¡VALOR! En la imagen queda claro que el factorial correspondiente a 239881 es el 8. El cociente marcado en color, 5,94942956, es importante, porque coincide con el factor exponencial.

Mediante una función

Este proceso de divisiones sucesivas se puede automatizar con dos funciones, una que nos devuelva el factorial y otra que calcule el factor exponencial. En el Basic de las hojas de cálculo podría ser esta, en la que hemos reunido las dos funciones mediante el parámetro tipo, que si le damos el valor 0 nos devolverá el factorial, y con otro valor, el factor exponencial:

Public Function sacafactorial(n, tipo)
Dim p, v
p = 1: v = n
While v >= p ‘divisiones sucesivas para obtener el factorial
v = v / p: p = p + 1
Wend
If tipo = 0 Then sacafactorial = p - 1 Else sacafactorial = v
End Function

Es sencilla y rápida, y nos permite calcular estas dos cantidades para cualquier entero. En el siguiente esquema hemos añadido el exponente de e, que será objeto de la segunda parte de nuestros cálculos.



Si retrocedemos al cálculo con el que iniciamos esta entrada, comprobaremos que el exponente 0,79993525 está muy cercano a 4/5, que era la fracción propuesta. Volvamos al segundo ejemplo:



Aquí el exponente es 1,78329534. El problema ahora es aproximarlo con el número racional más sencillo posible. Para ello disponemos de una herramienta muy poderosa, las fracciones continuas. Puedes descargarte esta hoja antes de seguir leyendo:

http://www.hojamat.es/sindecimales/aritmetica/herramientas/herrarit.htm#fraccont

Las fracciones continuas permiten una aproximación racional a cualquier número real, con la ventaja de darte diversas aproximaciones con exactitud creciente. Abre la hoja y comprobarás que está diseñada para aproximar racionales con racionales, pero “la engañaremos”.


Basta con que en el numerador escribamos el exponente que obtuvimos más arriba, 1,78329534, y como denominador un 1.



De esa forma obtendremos aproximaciones racionales cada vez mejores de ese exponente:


Ahora interviene la parte entera. Debajo de cada aproximación escribimos la expresión del principio



En lenguaje de hoja de cálculo sería

=FACT(8)*EXP(celda de arriba)

Quedaría así (destacamos los más aproximados):


Vemos que el producto más sencillo que al aplicarle la parte entera se convierte en el resultado deseado es 239881,0882, que corresponde al exponente 790/443, siendo los siguientes más exactos, pero también más complejos. Así que nos quedamos con ese:


Lo comprobamos con la misma hoja de cálculo y la fórmula

=ENTERO(FACT(8)*EXP(790/443)) 

obteniendo el resultado deseado de 239881.

Ya afirmamos que el trabajo de hoy no era trascendental, pero es atractivo poder expresar cualquier número entero mediante un factorial, un numerador y un denominador, y además con infinitas soluciones, aunque nos quedemos sólo con la más simple.

Por ejemplo, un millón se puede expresar como



Y aproximando a un racional el exponente:





O en lenguaje de celdas:

=ENTERO(FACT(9)*EXP(16965/16736))

Para terminar, aquí tienes los números con desarrollos más simples, exponentes 1, 2, 1/2 y 2/3



Lo dicho, una entretenida curiosidad sin importancia.