59. Progresiones geométricas

Una progresión geométrica es una sucesión donde cada término se obtiene multiplicando por una razón constante.

59.1 Introducción

Una progresión geométrica es una sucesión en la que cada término se obtiene multiplicando el término anterior por un mismo número.

3, 6, 12, 24, 48, ...
Cada término se multiplica por 2.

Este tipo de patrón aparece en crecimiento exponencial, escalado de imágenes, intereses compuestos y duplicación de recursos.

59.2 Razón común

La razón común se obtiene dividiendo un término por el término anterior.

r = a₂ / a₁
r = 6 / 3 = 2

Si esa razón se mantiene igual en toda la sucesión, la progresión es geométrica.

59.3 Término general

El término general de una progresión geométrica permite calcular cualquier término usando su posición.

aₙ = a₁ · rⁿ⁻¹

En esta fórmula, a₁ es el primer término, r es la razón común y n es la posición.

59.4 Calcular un término

Si una progresión comienza en 3 y se multiplica por 2, el término 6 se calcula así:

a₁ = 3
r = 2
a₆ = 3 · 2⁶⁻¹
a₆ = 96

La potencia representa cuántas veces se aplica la multiplicación.

59.5 Término general en JavaScript

La fórmula se puede implementar con el operador de potencia.

function terminoGeometrico(primero, razon, posicion) {
  return primero * razon ** (posicion - 1);
}

console.log(terminoGeometrico(3, 2, 1));
console.log(terminoGeometrico(3, 2, 6));
console.log(terminoGeometrico(100, 0.5, 4));

Una razón mayor que 1 produce crecimiento; una razón entre 0 y 1 produce disminución.

59.6 Generar varios términos

Un ciclo permite obtener los primeros términos de la progresión.

function progresionGeometrica(primero, razon, cantidad) {
  const terminos = [];

  for (let n = 1; n <= cantidad; n++) {
    terminos.push(primero * razon ** (n - 1));
  }

  return terminos;
}

console.log(progresionGeometrica(3, 2, 8));

Este patrón es útil para generar escalas, multiplicadores y niveles.

59.7 Progresión creciente

Una progresión geométrica con términos positivos es creciente cuando la razón es mayor que 1.

2, 6, 18, 54, ...
r = 3

El crecimiento se acelera porque cada término multiplica al anterior.

59.8 Progresión decreciente

Una progresión geométrica positiva decrece cuando la razón está entre 0 y 1.

80, 40, 20, 10, 5, ...
r = 0.5

En cada paso se conserva una fracción del valor anterior.

59.9 Detectar una progresión geométrica

Para comprobar si una lista es geométrica, se compara la razón entre términos consecutivos.

function esProgresionGeometrica(valores) {
  if (valores.length < 2 || valores[0] === 0) {
    return valores.length < 2;
  }

  const razon = valores[1] / valores[0];

  for (let i = 2; i < valores.length; i++) {
    if (valores[i - 1] === 0 || valores[i] / valores[i - 1] !== razon) {
      return false;
    }
  }

  return true;
}

console.log(esProgresionGeometrica([3, 6, 12, 24]));
console.log(esProgresionGeometrica([3, 6, 9, 12]));

La validación debe tener cuidado con divisiones por cero.

59.10 Suma de términos

La suma de los primeros n términos de una progresión geométrica finita se calcula con una fórmula.

Sₙ = a₁(1 - rⁿ) / (1 - r), si r ≠ 1

Cuando la razón es 1, todos los términos son iguales y la suma es a₁ · n.

59.11 Suma en JavaScript

La implementación debe contemplar el caso especial en el que la razón vale 1.

function sumaGeometrica(primero, razon, cantidad) {
  if (razon === 1) {
    return primero * cantidad;
  }

  return primero * (1 - razon ** cantidad) / (1 - razon);
}

console.log(sumaGeometrica(3, 2, 4));
console.log(sumaGeometrica(5, 1, 6));
console.log(sumaGeometrica(80, 0.5, 4));

Esta fórmula evita crear la sucesión completa cuando solo se necesita la suma.

59.12 Aplicación en escalado

En gráficos o videojuegos, los tamaños pueden escalarse multiplicando por una razón constante.

function escalasNivel(tamanoInicial, factor, niveles) {
  const tamanos = [];

  for (let nivel = 1; nivel <= niveles; nivel++) {
    tamanos.push(tamanoInicial * factor ** (nivel - 1));
  }

  return tamanos;
}

console.log(escalasNivel(20, 1.25, 6));

Cada nivel aumenta el tamaño en la misma proporción, no en la misma cantidad.

59.13 Aplicación en crecimiento compuesto

El crecimiento porcentual repetido se modela con una progresión geométrica.

function capitalCompuesto(capitalInicial, tasa, periodos) {
  return capitalInicial * (1 + tasa) ** periodos;
}

console.log(capitalCompuesto(1000, 0.10, 1));
console.log(capitalCompuesto(1000, 0.10, 3));
console.log(capitalCompuesto(1000, 0.10, 5));

Una tasa del 10% se expresa como razón multiplicativa 1.10.

59.14 Errores comunes

Un error común es confundir crecimiento aritmético con crecimiento geométrico.

Aritmético: 10, 20, 30, 40
Geométrico: 10, 20, 40, 80

En el primero se suma una cantidad constante. En el segundo se multiplica por una razón constante.

59.15 Conclusión

Las progresiones geométricas describen cambios proporcionales. Son esenciales para comprender crecimiento exponencial, escalas, porcentajes acumulados y procesos repetidos por multiplicación.

Fórmula clave:
aₙ = a₁ · rⁿ⁻¹

En el próximo tema se presentará una introducción a las matrices, una estructura matemática muy utilizada en programación.