Ya vimos en una entrada pasada cómo se propuso la prostaféreis, un algoritmo para agilizar el producto, pero aún así era muy costoso, largo, y tedioso. Por ejemplo, para calcular el producto de cinco números había que aplicarlo por lo menos tres veces con las sucesivas pérdidas de precisión en cada iteración. El matemático escocés John Napier of Merchinston ($1550-1617$) se le ocurrió una forma mejor. En términos modernos se puede imaginar su idea como buscar una aplicación $\psi$ que transformase un producto de elementos $xy$ del dominio en una operación $\star$ de sendas imágenes [de los factores]: un producto se convertía en operación computacionalmente mucho más fácil, $\star$ [luego veremos por cuál se decantó].
La aplicación satisface: $\psi(k\,xy) = \psi(x)\star\psi(y)$ para alguna constante $k$ , que se puede entender como un parámetro de reescala.
Para proceder se usarían los valores tanto $\psi(x)$ como $\psi(y)$ para hacer $\psi(x)\star\psi(y)=\psi(k\,xy)$ , y luego ver el qué argumento da $\psi(k\,xy)$ . Así pues solo hay que tener tabulado los valores $x\overset{\psi}{\mapsto}\psi(x)$ además de $y\overset{\psi}{\mapsto}\psi(y)$ (las búsquedas directas), asimismo como $\psi(k\, xy)\overset{\psi^{[-1]}}{\longmapsto} xy$ (la búsqueda inversa). El lector habitual del blog verá la rápida conexión con la prostaféresis.
Ya que el producto es conmutativo, la operación $\star$ también lo es: $$ \psi(k\,xy) = \psi(k\,yx) \implies \psi(x)\star\psi(y)=\psi(y)\star\psi(x) $$ Veamos que a su vez como el producto es asociativo, la operación $\star$ también lo es [usar $k^2$ sigue siendo un parámetro para simplificar resultados]: $$ \psi(k^2\,xyz) = \left\{ \begin{matrix} \psi(k\, (kxy)z) & = & \psi(kxy) \star\psi(z) & = & \big(\psi(x)\star\psi(y)\big)\star\psi(z)\\= & & = & & = \\\psi(k\, x(kyz)) & = & \psi(x) \star\psi(kyz) & = & \psi(x)\star\big(\psi(y)\star\psi(z)\big)\\ \end{matrix} \right.$$ Veamos cómo la operación $\star$ tiene un elemento neutro, $\psi(k^{-1})$ : $$ \psi(k\,tk^{-1})=\psi(t) = \psi(t)\star\psi(k^{-1}) = \psi(k^{-1})\star\psi(t)$$ Veamos ahora cómo todo elemento $\psi(t)$ tiene un elemento inverso $\psi(k^{-2}t^{-1})$ con la operación $\star$ [dada la conmutatividad de antes es tanto el inverso por la izquierda como por la derecha]: $$\psi(k\;t\,k^{-2}t^{-1})=\psi(k^{-1}) = \psi(t)\star\psi(k^{-2}t^{-1}) = \psi(k^{-2}t^{-1})\star\psi(t)$$ Sobre la aplicación $\psi$ queremos que sea inyectiva (elementos distintos tienen imágenes distintas), y además que sea biyectiva para que no haya problemas a la hora de multiplicar (que nos diera un posible producto erróneo). $$\begin{array}{ cccc }
\psi : & \mathbb{K}_1 & \longrightarrow & \mathbb{K}_2\\[2.5ex]
& t & \longmapsto & \psi(t) \\[8pt]
& k\,x_1\cdot x_2 & \longmapsto & \begin{matrix} \psi(x_1) & \star & \psi(x_2) \\ =&&= \\ y_1 & \star & y_2 \end{matrix}
\end{array} \qquad \begin{array}{ cccc }
\psi^{[-1]} : & \mathbb{K}_2 & \longrightarrow & \mathbb{K}_1 \\[2.5ex]
& z & \longmapsto & \psi^{[-1]}(z) \\[8pt]
& y_1 \star y_2 & \longmapsto & \begin{matrix} k & \psi^{[-1]}(y_1) & \cdot & \psi^{[-1]}(y_2)\\ & =&&= \\ k & x_1 & \cdot & x_2 \end{matrix}
\end{array}$$ Donde $\cdot$ es el producto usual en $\mathbb{K}_1$ , mientras que $\star$ es nuestra operación en $\mathbb{K}_2$ . La operación $\star$ realmente puede ser cualquiera que satisfaga las propiedades descritas, por lo que Napier usó $\star$ como la suma usual (según cuál se tome, cambia cómo es $\psi$ , por ejemplo con la suma se tiene que $\psi(k^{-1})=0$ para el neutro y $\psi(k^{-2}t^{-1})=-\psi(t)$ para el inverso). Llamó a su aplicación $\psi$ como logarithmus en latín, del griego antiguo λόγος (lógos) “palabra, razón” y ἀριθμός (arithmós) “número” , muy similar a la construcción número racional (también del latín) pero aquí el apellido racional indicando “razonadamente, con una razón de ser”. Napier definió su logaritmo $\operatorname{logN}$ : $$ n = 10^7\,\big(1-10^{-7}\,\big)^L \overset{\triangle}{\iff} L\overset{\text{def}}{=}\operatorname{logN} n$$ La relación entre el logaritmo de Napier , $\operatorname{logN}$ , y el logaritmo natural, $\ln$ , es: $$ \operatorname{logN} n \triangleq \frac{\displaystyle \ln\left(\frac{n}{10^7}\right)}{\ln\big(1-10^{-7}\,\big)} \iff \ln n \triangleq \ln\big(1-10^{-7}\,\big)\operatorname{logN} n + 7\ln 10$$ Es más, ambos para algún $n$ toman el mismo valor, $\displaystyle \frac{7\ln10}{1-\ln(1-10^{-7}\,)}$ . De esto se deducen las propiedades $$\begin{matrix} \displaystyle \operatorname{logN}\sqrt{x_1x_2\;} & = & \displaystyle \frac{\operatorname{logN}x_1+\operatorname{logN}x_2}{2} \\[3pt] \displaystyle \operatorname{logN}\big(10^{-7}x_1x_2\big) & = & \displaystyle \operatorname{logN}x_1+\operatorname{logN}x_2 \\[5pt] \displaystyle \operatorname{logN}\bigg(10^7\sqrt{\frac{x_1}{x_2}\;}\,\bigg) & = & \displaystyle \frac{\operatorname{logN}x_1-\operatorname{logN}x_2}{2} \\[3pt] \displaystyle\operatorname{logN}\Big(10^7\frac{x_1}{x_2}\Big) & = & \displaystyle \operatorname{logN}x_1-\operatorname{logN}x_2 \end{matrix}$$ Nótese que el logaritmo de Napier no satisface exactamente esas propiedades tan directas de los logaritmos a las que estamos muy habituados, en parte por la presencia de esa constante $10^{-7}$ . Unos pocos años después, Henry Briggs ($1561-1630$) simplifició en gran medida el trabajo de de Napier, creando el logaritmo briggsiano o común [decimal], $\log_{10}$ o también $\lg$ . Con este mero cambio, se popularizó muchísimo más el trabajo de Napier al hacerse más intuitivo, pues el logaritmo decimal de un número se puede entender como el número de cifras que tiene en su representación decimal (y las cifras del número original por cómo está entre dos unidades contiguas en una escala logarítmica decimal).
Ahora el algortimo para multiplicar $xy$ ha pasado a consultar los valores de $\log(x)$ además de $\log(y)$ [independientemente de la base], calcular $\log(x)+\log(y)$ y consultar en una búsqueda inversa el valor de $\operatorname{antilog}\big(\log(x)+\log(y)\big)$ (con respecto a la misma base que antes, siendo $\operatorname{antilog}$ la función antilogaritmo, es decir, la aplicación inversa al logaritmo).
$$ xy = x\cdot y \iff xy = \operatorname{antilog}\big(\log(x)+\log(y)\big) $$
Es más, esto no se complica innecesariamente comparado con la prostaféresis, ya que:
$$\prod_{k=1}^n x_k = x_1\cdot\ldots\cdot x_n \iff \prod_{k=1}^n x_k = \operatorname{antilog}\left(\sum_{k=1}^n\log(x_n)\right) $$
Que es una forma muy efectiva, útil y rápida para programar la función factorial, $x!$ , en algunos lenguajes como $R$ . Un pequeño esquema de lo que planteamos es:
$$ \begin{matrix}
\{x,y\} & \longrightarrow & x\cdot y \\
\underset{\text{Logartimo}}{\Downarrow} & & \underset{\text{Antilogaritmo}}{\Uparrow} \\
\big\{\log(x),\log(y)\big\} & \overset{\text{Suma}}{\implies} & \log(x)+\log(y)
\end{matrix} $$
Para multiplicar varios números es mucho más efectivo usar logaritmos:
- Para multiplicar números usando el algoritmo logarítmico, primero se hace una búsqueda directa de los logaritmos de los factores en tablas, se calcula su suma total, y por último con una búsqueda inversa se tiene el producto.
- Para multiplicar números usando el algoritmo prostaferético, primero hay que hacer parejas y aplicar el algoritmo para cada una de las parejas (si hay un número impar de factores se omite uno y se lo lleva directamente a la próxima etapa), ahora hay que volver a hacer parejas con los productos intermedios y así recursivamente hasta que se llega al producto final.
Autor: Đɑvɪẟ Ƒernández-De la Cruʒ.