31. Crecimiento lineal y crecimiento exponencial

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.

31.1 Introducción

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.

31.2 Qué es crecimiento lineal

El crecimiento lineal ocurre cuando una cantidad aumenta o disminuye siempre por la misma diferencia.

valor = valorInicial + incremento × pasos
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.

31.3 Tabla de crecimiento lineal

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.

31.4 Ejemplos de crecimiento lineal

  • Un costo que suma una tarifa fija por unidad.
  • Un objeto que avanza con velocidad constante.
  • Una descarga que recibe la misma cantidad de datos por segundo.
  • Un contador que aumenta de uno en uno.
  • Una barra de progreso que avanza en pasos iguales.
let posicion = 0;
const velocidad = 5;

for (let segundo = 1; segundo <= 4; segundo++) {
  posicion = posicion + velocidad;
  console.log(posicion);
}

31.5 Qué es crecimiento exponencial

El crecimiento exponencial ocurre cuando una cantidad se multiplica por un factor en cada paso.

valor = valorInicial × factorᵖᵃˢᵒˢ
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.

31.6 Tabla de crecimiento exponencial

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.

31.7 Comparación directa

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)
  });
}

31.8 Diferencia constante contra factor constante

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]);

31.9 Crecimiento porcentual

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.

31.10 Duplicación

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.

31.11 Aplicación: interés simple e interés compuesto

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));

31.12 Aplicación: cantidad de datos

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)
  });
}

31.13 Decrecimiento 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.

31.14 Errores comunes

  • Confundir sumar una cantidad fija con aplicar un porcentaje.
  • Creer que un aumento porcentual repetido es lineal.
  • Olvidar que el crecimiento exponencial multiplica por un factor.
  • Usar tasa como 10 en lugar de 0.10 cuando se necesita decimal.
  • Subestimar el crecimiento exponencial porque al principio puede parecer lento.
  • Confundir diferencia constante con cociente constante.
const inicial = 100;
const tasa = 10;

const incorrecto = inicial * tasa;
const correcto = inicial * (1 + tasa / 100);

console.log(incorrecto);
console.log(correcto);

31.15 Qué debes recordar de este tema

  • El crecimiento lineal suma o resta una cantidad fija en cada paso.
  • El crecimiento exponencial multiplica por un factor en cada paso.
  • En crecimiento lineal, la diferencia entre valores consecutivos es constante.
  • En crecimiento exponencial, el cociente entre valores consecutivos es constante.
  • Un aumento porcentual repetido produce crecimiento exponencial.
  • El interés simple es lineal y el interés compuesto es exponencial.
  • El crecimiento exponencial puede superar rápidamente al lineal.

31.16 Conclusión

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.