El crecimiento lineal suma una cantidad fija en cada paso. El crecimiento exponencial multiplica por un factor. Distinguirlos es clave para estimar costos, usuarios, datos, rendimiento e intereses.
No todos los valores crecen de la misma manera. Algunos aumentan sumando siempre la misma cantidad. Otros aumentan multiplicándose por un factor.
Esta diferencia es muy importante en programación. Un proceso lineal y uno exponencial pueden parecer similares al principio, pero con suficientes pasos el exponencial crece muchísimo más rápido.
En este tema compararemos ambos tipos de crecimiento con fórmulas, tablas y ejemplos en JavaScript.
El crecimiento lineal ocurre cuando una cantidad aumenta o disminuye siempre por la misma diferencia.
function crecimientoLineal(valorInicial, incremento, pasos) {
return valorInicial + incremento * pasos;
}
console.log(crecimientoLineal(100, 20, 0));
console.log(crecimientoLineal(100, 20, 1));
console.log(crecimientoLineal(100, 20, 5));
En cada paso se suman 20 unidades.
Una tabla permite ver que la diferencia entre valores consecutivos es constante.
const valorInicial = 100;
const incremento = 20;
for (let paso = 0; paso <= 6; paso++) {
const valor = valorInicial + incremento * paso;
console.log({ paso: paso, valor: valor });
}
La salida crece siempre con el mismo incremento.
let posicion = 0;
const velocidad = 5;
for (let segundo = 1; segundo <= 4; segundo++) {
posicion = posicion + velocidad;
console.log(posicion);
}
El crecimiento exponencial ocurre cuando una cantidad se multiplica por un factor en cada paso.
function crecimientoExponencial(valorInicial, factor, pasos) {
return valorInicial * factor ** pasos;
}
console.log(crecimientoExponencial(100, 2, 0));
console.log(crecimientoExponencial(100, 2, 1));
console.log(crecimientoExponencial(100, 2, 5));
En cada paso el valor se multiplica por 2.
En crecimiento exponencial, el cociente entre valores consecutivos es constante.
const valorInicial = 100;
const factor = 1.5;
for (let paso = 0; paso <= 6; paso++) {
const valor = valorInicial * factor ** paso;
console.log({ paso: paso, valor: valor });
}
El aumento absoluto se vuelve cada vez mayor.
Al principio, una función lineal puede parecer cercana a una exponencial. Pero la diferencia se vuelve muy grande con más pasos.
const inicial = 100;
for (let paso = 0; paso <= 10; paso++) {
const lineal = inicial + 50 * paso;
const exponencial = inicial * 1.5 ** paso;
console.log({
paso: paso,
lineal: lineal,
exponencial: Math.round(exponencial)
});
}
La señal más importante para distinguir ambos crecimientos es esta:
| Tipo | Qué se mantiene constante | Fórmula típica |
|---|---|---|
| Lineal | Diferencia entre pasos | valorInicial + incremento × pasos |
| Exponencial | Factor entre pasos | valorInicial × factorᵖᵃˢᵒˢ |
const valoresLineales = [10, 15, 20, 25];
const valoresExponenciales = [10, 20, 40, 80];
console.log(valoresLineales[1] - valoresLineales[0]);
console.log(valoresExponenciales[1] / valoresExponenciales[0]);
Un crecimiento porcentual repetido es exponencial. Aumentar 10% por período equivale a multiplicar por 1.10 en cada paso.
const inicial = 1000;
const tasa = 10;
const factor = 1 + tasa / 100;
for (let periodo = 0; periodo <= 5; periodo++) {
const valor = inicial * factor ** periodo;
console.log(valor.toFixed(2));
}
El aumento del segundo período se calcula sobre un valor mayor que el primero.
Cuando un valor se duplica en cada paso, el crecimiento es exponencial con factor 2.
let valor = 1;
for (let paso = 0; paso <= 8; paso++) {
console.log({ paso: paso, valor: valor });
valor = valor * 2;
}
Este patrón explica por qué ciertos procesos pueden crecer muy rápido.
El interés simple crece linealmente. El interés compuesto crece exponencialmente porque cada período se calcula sobre el monto acumulado.
const capital = 1000;
const tasa = 0.10;
const periodos = 5;
const interesSimple = capital + capital * tasa * periodos;
const interesCompuesto = capital * (1 + tasa) ** periodos;
console.log(interesSimple.toFixed(2));
console.log(interesCompuesto.toFixed(2));
Un sistema puede crecer linealmente si suma la misma cantidad de datos cada día. Pero puede crecer exponencialmente si cada usuario genera nuevos usuarios o más actividad proporcional.
const datosIniciales = 100;
const sumaDiaria = 50;
const factorDiario = 1.25;
for (let dia = 0; dia <= 5; dia++) {
const lineal = datosIniciales + sumaDiaria * dia;
const exponencial = datosIniciales * factorDiario ** dia;
console.log({
dia: dia,
lineal: lineal,
exponencial: Math.round(exponencial)
});
}
Si el factor está entre 0 y 1, el valor disminuye de forma exponencial. Por ejemplo, conservar el 80% en cada paso equivale a multiplicar por 0.8.
const inicial = 1000;
const factor = 0.8;
for (let paso = 0; paso <= 6; paso++) {
const valor = inicial * factor ** paso;
console.log(valor.toFixed(2));
}
Este modelo aparece en enfriamiento, depreciación, pérdida progresiva y reducción porcentual.
const inicial = 100;
const tasa = 10;
const incorrecto = inicial * tasa;
const correcto = inicial * (1 + tasa / 100);
console.log(incorrecto);
console.log(correcto);
Distinguir crecimiento lineal y exponencial permite hacer mejores estimaciones. En programación, esta diferencia afecta costos, datos, usuarios, rendimiento, intereses y modelos de simulación.
En el próximo tema veremos lectura e interpretación de gráficos, una herramienta visual clave para reconocer estos comportamientos.