Los logaritmos ayudan a analizar crecimientos rápidos, comprimir rangos enormes, estimar pasos multiplicativos y comprender algoritmos eficientes como la búsqueda binaria.
Los logaritmos no son solo una herramienta algebraica. En programación aparecen cuando trabajamos con escalas grandes, crecimiento exponencial, algoritmos que dividen problemas y mediciones basadas en órdenes de magnitud.
En este tema veremos aplicaciones prácticas donde el logaritmo permite convertir un problema difícil de manejar en una escala más cómoda.
Un logaritmo responde a la pregunta: ¿a qué exponente hay que elevar una base para obtener un valor?
Esta interpretación es especialmente útil cuando los valores crecen por multiplicaciones repetidas.
Una escala logarítmica comprime valores muy grandes. En lugar de representar el valor directamente, representa su logaritmo.
| Valor | log₁₀(valor) |
|---|---|
| 10 | 1 |
| 100 | 2 |
| 1000 | 3 |
| 1000000 | 6 |
Podemos usar logaritmos para transformar valores muy grandes en una escala más manejable para gráficos o interfaces.
function escalaLog10(valor) {
if (valor <= 0) {
return null;
}
return Math.log10(valor);
}
console.log(escalaLog10(10));
console.log(escalaLog10(1000));
console.log(escalaLog10(1000000));
El logaritmo decimal permite estimar el orden de magnitud de un número. Esto indica aproximadamente cuántas cifras o potencias de diez contiene.
function ordenDeMagnitud(valor) {
if (valor <= 0) {
return null;
}
return Math.floor(Math.log10(valor));
}
console.log(ordenDeMagnitud(50));
console.log(ordenDeMagnitud(5000));
console.log(ordenDeMagnitud(2000000));
La búsqueda binaria reduce el espacio de búsqueda a la mitad en cada paso. Por eso su cantidad de pasos crece de forma logarítmica.
Si hay 1024 elementos, se necesitan alrededor de 10 divisiones por la mitad.
function pasosBusquedaBinaria(cantidad) {
if (cantidad <= 0) {
return 0;
}
return Math.ceil(Math.log2(cantidad));
}
console.log(pasosBusquedaBinaria(10));
console.log(pasosBusquedaBinaria(1024));
console.log(pasosBusquedaBinaria(1000000));
Un algoritmo de complejidad O(log n) aumenta lentamente su cantidad de pasos cuando crece el tamaño de entrada.
| n | log₂(n) |
|---|---|
| 1,024 | 10 |
| 1,048,576 | 20 |
| 1,073,741,824 | 30 |
Por eso los algoritmos logarítmicos suelen ser muy eficientes.
Podemos simular cuántas veces se puede dividir una cantidad por dos hasta llegar a uno.
function divisionesHastaUno(cantidad) {
let pasos = 0;
let actual = cantidad;
while (actual > 1) {
actual = Math.ceil(actual / 2);
pasos++;
}
return pasos;
}
console.log(divisionesHastaUno(1024));
console.log(divisionesHastaUno(1000000));
Los decibeles usan una escala logarítmica para representar relaciones de intensidad. Esto permite manejar rangos muy grandes de sonido o señal.
function decibeles(intensidad, referencia) {
if (intensidad <= 0 || referencia <= 0) {
return null;
}
return 10 * Math.log10(intensidad / referencia);
}
console.log(decibeles(100, 1));
console.log(decibeles(1000, 1));
Si una cantidad crece por un factor fijo, el logaritmo permite calcular cuántos períodos hacen falta para alcanzar una meta.
function periodosParaMeta(inicial, factor, meta) {
if (inicial <= 0 || factor <= 1 || meta <= inicial) {
return 0;
}
return Math.ceil(Math.log(meta / inicial) / Math.log(factor));
}
console.log(periodosParaMeta(1000, 1.2, 10000));
En algunos sistemas, un puntaje puede crecer muchísimo. Una escala logarítmica permite mostrar diferencias grandes sin que los valores altos dominen toda la interfaz.
function puntajeEscalado(puntaje) {
if (puntaje <= 0) {
return 0;
}
return Math.round(100 * Math.log10(puntaje + 1));
}
console.log(puntajeEscalado(10));
console.log(puntajeEscalado(1000));
console.log(puntajeEscalado(100000));
Cuando los datos abarcan varios órdenes de magnitud, una escala lineal puede ocultar valores pequeños. Una transformación logarítmica ayuda a comparar mejor.
| Aplicación | Uso del logaritmo |
|---|---|
| Búsqueda binaria | Estimar divisiones sucesivas por dos |
| Complejidad algorítmica | Entender crecimiento lento de pasos |
| Escalas grandes | Comprimir rangos enormes |
| Decibeles | Representar relaciones de intensidad |
| Crecimiento exponencial | Calcular períodos necesarios para una meta |
Los logaritmos son una herramienta práctica para programación porque permiten pensar en escalas, crecimiento, eficiencia y rangos enormes de valores. Son especialmente útiles cuando el problema involucra multiplicaciones repetidas o divisiones sucesivas.
En el próximo tema comenzaremos con funciones trigonométricas.