Una función logarítmica responde a la pregunta: ¿a qué exponente hay que elevar una base para obtener cierto valor?
Las funciones logarítmicas están directamente relacionadas con las funciones exponenciales. Si una exponencial calcula el resultado de elevar una base a un exponente, un logaritmo permite recuperar ese exponente.
En programación se usan para escalas, análisis de crecimiento, compresión de rangos, medición de complejidad y cálculo de cuántos pasos multiplicativos hacen falta para alcanzar un valor.
El logaritmo en base b de un número x se escribe:
Y responde a esta pregunta:
| Expresión | Porque... | Resultado |
|---|---|---|
| log₂(8) | 2³ = 8 | 3 |
| log₁₀(1000) | 10³ = 1000 | 3 |
| log₃(81) | 3⁴ = 81 | 4 |
La función logarítmica es la inversa de la función exponencial con la misma base.
Esto permite resolver problemas donde la incógnita está en el exponente.
En los números reales, el logaritmo solo está definido para entradas positivas.
No existe logaritmo real de cero ni de números negativos.
JavaScript incluye varias funciones para calcular logaritmos.
| Función | Base | Uso |
|---|---|---|
| Math.log(x) | e | Logaritmo natural |
| Math.log10(x) | 10 | Logaritmo decimal |
| Math.log2(x) | 2 | Logaritmo binario |
console.log(Math.log10(1000));
console.log(Math.log2(8));
console.log(Math.log(Math.E));
Antes de calcular un logaritmo, conviene validar que la entrada sea positiva.
function log10Seguro(x) {
if (x <= 0) {
return null;
}
return Math.log10(x);
}
console.log(log10Seguro(100));
console.log(log10Seguro(0));
console.log(log10Seguro(-5));
Si JavaScript no tiene directamente la base que necesitamos, podemos usar la fórmula de cambio de base.
function logBase(x, base) {
if (x <= 0 || base <= 0 || base === 1) {
return null;
}
return Math.log(x) / Math.log(base);
}
console.log(logBase(81, 3));
console.log(logBase(32, 2));
console.log(logBase(1000, 10));
Si un valor se duplica en cada paso, podemos usar logaritmo base 2 para saber cuántas duplicaciones hacen falta.
function duplicacionesNecesarias(inicial, final) {
return Math.log2(final / inicial);
}
console.log(duplicacionesNecesarias(1, 8));
console.log(duplicacionesNecesarias(100, 800));
Si una cantidad crece por un factor fijo, el logaritmo permite calcular cuántos períodos se necesitan 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.15, 5000));
Los logaritmos ayudan a representar valores que varían en rangos muy grandes. En lugar de mostrar el valor directamente, mostramos su logaritmo.
| x | log₁₀(x) |
|---|---|
| 10 | 1 |
| 100 | 2 |
| 1000 | 3 |
| 1000000 | 6 |
Si un valor puede variar desde unidades hasta millones, el logaritmo permite llevarlo a una escala más manejable.
function escalaLogaritmica(valor) {
if (valor <= 0) {
return null;
}
return Math.log10(valor);
}
console.log(escalaLogaritmica(10));
console.log(escalaLogaritmica(1000));
console.log(escalaLogaritmica(1000000));
La función logarítmica crece cada vez más lento. Aumenta mucho al comienzo, pero luego necesita entradas cada vez mayores para seguir aumentando.
Multiplicar la entrada por 10 aumenta el logaritmo decimal en 1.
Las funciones logarítmicas permiten analizar procesos exponenciales desde el punto de vista inverso: en lugar de calcular el resultado de una potencia, calculan el exponente necesario.
En el próximo tema veremos propiedades de los logaritmos, que permiten simplificar expresiones y transformar productos, cocientes y potencias.