Los Logaritmos: Curiosidades y Aplicaciones

Los Logaritmos: Curiosidades y Aplicaciones

Los logaritmos son una herramienta matemática fascinante que tienen aplicaciones en numerosos campos, desde la informática hasta la física y la biología. Aquí recopilamos algunas de las curiosidades más interesantes sobre los logaritmos y su uso práctico, antes de sumergirnos en un ejemplo relacionado con la famosa paradoja de los logaritmos en la multiplicación de números grandes.

Curiosidades sobre los logaritmos

I – Origen del término: El término «logaritmo» fue acuñado por John Napier en 1614. Proviene de las palabras griegas logos (proporción) y arithmos (número), ya que los logaritmos transforman las multiplicaciones en sumas, lo que facilita los cálculos.

II – El logaritmo natural: El logaritmo natural tiene como base el número e, aproximadamente 2.71828. Este número es fundamental en matemáticas, especialmente en cálculo diferencial y en el estudio de fenómenos que crecen de manera continua.

III – Logaritmos en la naturaleza: Los logaritmos se usan para modelar fenómenos naturales como el crecimiento exponencial (por ejemplo, poblaciones o procesos radiactivos) y las escalas logarítmicas, como la escala Richter para medir terremotos o la escala de decibelios para medir el sonido.

IV – Relación con la exponenciación: La operación inversa de un logaritmo es la exponenciación.

log⁡_{b}(x)=y\ \to\ b^y = x

V – Propiedades útiles:

  • Multiplicación transformada en suma
log⁡_b(x⋅y)=log_b(x)+log⁡_b(y)
  • División transformada en resta
log⁡b(x/y)=log⁡_b(x)−log_b(y)
  • Potenciación transformada en multiplicación
log_b(x^{n})=n⋅log_b(x)

VI – El logaritmo de 1: El logaritmo de 1, sin importar la base, siempre es igual a 0. Esto se debe a que el logaritmo de un número en una base determinada es el exponente al cual se debe elevar esa base para obtener el número. En el caso de 1, cualquier número elevado a la potencia de 0 es igual a 1, independientemente de la base. Por lo tanto, el logaritmo de 1 en cualquier base siempre será 0, ya que no importa qué base se use, siempre se necesita un exponente de 0 para obtener 1.

VII – Logaritmos y computadoras: Los logaritmos son fundamentales en la teoría de la información, ya que se usan para calcular la cantidad de información contenida en un mensaje. Un bit de información corresponde a una elección entre dos opciones, lo que se puede representar con logaritmos en base 2.

VIII – Escalas logarítmicas: Las escalas logarítmicas son útiles para representar cantidades que varían en órdenes de magnitud, como los niveles de intensidad sísmica (escala Richter) o los niveles de intensidad del sonido (decibelios). Un incremento de 1 en estas escalas significa un cambio en el valor multiplicado por 10.

IX – La ley de Zipf: Esta ley en lingüística indica que la frecuencia de una palabra en un idioma es inversamente proporcional a su rango. Si se grafica esta relación, la curva resultante sigue una distribución logarítmica.

X – La paradoja de los logaritmos en la multiplicación de números grandes: Si tienes que multiplicar dos números muy grandes, calcular el logaritmo de cada uno, sumarlos y luego tomar el antilogaritmo del resultado es mucho más rápido que multiplicar directamente. Este truco fue ampliamente utilizado antes de la era de las calculadoras electrónicas, con tablas de logaritmos y reglas deslizantes (como la regla de cálculo).

Aplicando la paradoja de los números grandes

No es casual que haya dejado la paradoja para el final, y es que desde antes de la invención de las calculadoras electrónicas hasta hoy han pasado varios años, y como veremos a continuación, lo que antes era una ventaja hoy en día ya no lo es.

Teoría de la paradoja

La paradoja de los logaritmos en la multiplicación de números grandes se basa en la siguiente idea teórica: si tenemos dos números grandes 𝐴 y 𝐵, sus logaritmos en base 10 pueden calcularse como:

log_{10}(A) \ y\ log_{10}(B)

Para multiplicar 𝐴 y 𝐵, en lugar de realizar la multiplicación directamente, podemos sumar los logaritmos y luego tomar el antilogaritmo del resultado:

A×B=10^{log_{10}(A)+log_{10}(B)}

Esta técnica transforma una multiplicación en una suma, lo que teóricamente debería hacerla más eficiente, ya que las sumas son más rápidas de computar que las multiplicaciones.

Práctica de la paradoja

Aunque esta idea es válida teóricamente, en la práctica, las operaciones logarítmicas y exponenciales tienen una sobrecarga computacional significativa. En lenguajes de programación como Python, las operaciones de logaritmo y exponenciación no están tan optimizadas como las multiplicaciones directas de números enteros grandes. El manejo de números grandes utilizando logaritmos requiere varias operaciones adicionales: primero se calculan los logaritmos, luego se suman, y finalmente se realiza la exponenciación del resultado. Todo esto introduce un costo extra que no está presente en la multiplicación directa.

Además, las limitaciones de precisión en las operaciones logarítmicas (debido al redondeo de los valores durante los cálculos) pueden hacer que el resultado obtenido no sea exactamente el mismo que el de la multiplicación directa.

Por lo tanto, aunque los logaritmos transforman la multiplicación en una operación más simple (la suma), la precisión y la eficiencia computacional de las multiplicaciones directas de números grandes suelen ser superiores en la práctica, especialmente cuando solo se multiplican dos números. Este fenómeno es lo que da lugar a la paradoja de los logaritmos en la multiplicación de números grandes.

A continuación veamos un ejemplo en Python para salir de dudas:

import math
import time
from decimal import Decimal, getcontext

# Establecemos la precisión para Decimal (esto ayuda a manejar números grandes con mayor precisión)
getcontext().prec = 100  # Usamos una precisión de 100 decimales para ver mejor las diferencias

# Definimos dos números aún más grandes
A = Decimal('1234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890')
B = Decimal('9876543210987654321098765432109876543210987654321098765432109876543210987654321098765432109876543210')

# Método 1: Multiplicación normal
start_time_normal = time.perf_counter()  # Usamos perf_counter para medir con más precisión
result_normal = A * B
end_time_normal = time.perf_counter()
normal_time = (end_time_normal - start_time_normal) * 1000  # Convertimos a milisegundos

# Método 2: Multiplicación usando logaritmos
start_time_logarithmic = time.perf_counter()
log_A = Decimal(math.log10(A))  # Logaritmo en base 10 de A
log_B = Decimal(math.log10(B))  # Logaritmo en base 10 de B
log_result = log_A + log_B  # Sumar los logaritmos
result_log = Decimal(10) ** log_result  # Elevar 10 a la potencia de la suma de logaritmos
end_time_logarithmic = time.perf_counter()
logarithmic_time = (end_time_logarithmic - start_time_logarithmic) * 1000  # Convertimos a milisegundos

# Mostrar los resultados
print(f"Multiplicación normal: {result_normal}")
print(f"Tiempo de multiplicación normal: {normal_time:.10f} ms")

print(f"Multiplicación logarítmica: {result_log}")
print(f"Tiempo de multiplicación logarítmica: {logarithmic_time:.10f} ms")

Esto nos da la siguiente salida en la consola:

Multiplicación normal: 1.219326311370217952261850327338667885945115073915636335923676116445578859929879010821520013565005212E+199
Tiempo de multiplicación normal: 0.0237999484 ms
Multiplicación logarítmica: 1.219326311370204041792000539266749687078174354311523536973030106626342462753884934819219428225646418E+199
Tiempo de multiplicación logarítmica: 0.7262000581 ms

En conclusión, la implementación en Python de la paradoja de los logaritmos en la multiplicación de números grandes demuestra que, aunque la teoría sugiere que el uso de logaritmos debería ser más eficiente al transformar multiplicaciones en sumas, en la práctica no siempre es el caso. Las operaciones de logaritmos y exponenciación, aunque conceptualmente atractivas, implican un costo adicional en términos de tiempo de cálculo y precisión debido a la complejidad inherente de estas funciones. La multiplicación directa de números grandes en Python, utilizando enteros de precisión arbitraria, resulta ser más eficiente y precisa. Por lo tanto, aunque los logaritmos pueden ser útiles en ciertos contextos, como en cálculos repetitivos o con grandes volúmenes de datos, para operaciones simples de multiplicación de dos números grandes, la multiplicación directa es claramente la opción más rápida y fiable.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos
Responsable Garikoitz Martínez Moreno +info...
Finalidad Gestionar y moderar tus comentarios. +info...
Legitimación Consentimiento del interesado. +info...
Destinatarios Automattic Inc., EEUU para filtrar el spam. +info...
Derechos Acceder, rectificar y cancelar los datos, así como otros derechos. +info...
Información adicional Puedes consultar la información adicional y detallada sobre protección de datos en nuestra página de política de privacidad.