Fundamentos · Tema 03

La idea de cambio

Cómo comparar estados, interpretar diferencias e incrementos y traducir la evolución de una cantidad en operaciones que un programa puede registrar, verificar y repetir.

01 · Punto de partida

Cambiar significa comparar

Decir que una cantidad cambió exige, al menos, dos estados. Una batería está al 72 %, una hora después se encuentra al 55 %; un archivo ocupa 18 MB antes de comprimirse y 11 MB después; una aplicación atiende 240 solicitudes por minuto y luego 310. Cada ejemplo contiene un valor inicial, un valor final y un orden que indica qué ocurrió primero.

El cambio no es el valor final ni el valor inicial. Es la diferencia orientada entre ambos:

Esta definición parece sencilla, pero organiza una gran parte del análisis matemático y de la programación. Permite responder:

  • ¿La cantidad aumentó, disminuyó o permaneció igual?
  • ¿Cuánto separa el estado final del estado inicial?
  • ¿Qué actualizaciones intermedias produjeron el resultado?
  • ¿El cambio registrado es coherente con los datos originales?
  • ¿Podemos reconstruir un estado si conocemos el otro y el cambio?

02 · Comparaciones válidas

Estado inicial y estado final

Un estado reúne la información relevante de un sistema en un momento o situación. Para calcular un cambio debemos comparar la misma cantidad, expresada en unidades compatibles y bajo criterios equivalentes.

Comparaciones correctas e incorrectas entre estados.
Estado inicialEstado final¿Se pueden comparar?
Memoria usada: 1.2 GBMemoria usada: 1.8 GBSí, es la misma cantidad y unidad.
Duración: 90 segundosDuración: 2 minutosSí, después de convertir a una unidad común.
Temperatura: 20 °CHumedad: 55 %No, son cantidades diferentes.
Usuarios totalesUsuarios activosNo directamente: usan criterios distintos.

También debemos fijar el orden. Si una descarga pasa de 200 MB recibidos a 260 MB, el cambio es +60 MB. Si analizamos el recorrido inverso, de 260 MB a 200 MB, el cambio es −60 MB.

El cambio permite reconstruir estados

La definición puede reorganizarse sin perder significado:

qfinal = qinicial + Δq

Si una cuenta tenía 25 créditos y el cambio fue de −7, el estado final es 25 + (−7) = 18. La suma de un incremento negativo representa una disminución.

03 · Notación

El símbolo Δ y los incrementos

La letra griega delta mayúscula, Δ, se utiliza para indicar un cambio finito. Se lee «delta». Así, Δx significa «cambio de x» y no «delta multiplicado por x».

x₀
Valor inicial de la cantidad x. El subíndice cero suele señalar el comienzo.
x₁
Valor posterior o final dentro de la comparación considerada.
Δx
Incremento de x: x₁ − x₀.
x₁ = x₀ + Δx
Actualización que reconstruye el nuevo estado.

En este contexto, incremento es el nombre general de la diferencia y puede ser positivo, negativo o cero. No implica necesariamente un aumento.

04 · Dirección del cambio

Qué informa el signo

+

Cambio positivo

El estado final es mayor que el inicial. Ejemplo: de 14 a 19, Δq = +5.

Cambio negativo

El estado final es menor que el inicial. Ejemplo: de 14 a 9, Δq = −5.

0

Cambio nulo

Los estados comparados tienen el mismo valor. No prueba que nada haya ocurrido entre ellos.

El signo debe interpretarse según la cantidad. Un cambio negativo en tiempo de respuesta puede ser beneficioso; un cambio negativo en batería indica consumo. La matemática describe dirección y tamaño, pero el contexto determina si el resultado es deseable.

Cambio nulo no significa necesariamente ausencia de movimiento

Si un personaje parte de la posición 10, avanza hasta 18 y regresa a 10, el cambio neto de posición es cero. Sin embargo, recorrió una trayectoria. Comparar solo los extremos resume parte de la historia y oculta los estados intermedios.

05 · Distinciones necesarias

Valor final, cambio y magnitud del cambio

Tres resultados relacionados responden preguntas diferentes:

Valor final

¿Dónde terminó?

Es el estado alcanzado: qfinal. Conserva la unidad de la cantidad.

Cambio

¿Cómo se desplazó?

Es Δq. Su signo indica la dirección de la variación.

La magnitud del cambio es |Δq|, el valor absoluto de la diferencia. Informa cuánto separa los estados sin indicar dirección. Si la temperatura pasa de 18 °C a 13 °C, el cambio es −5 °C y su magnitud es 5 °C.

function compararEstados(valorInicial, valorFinal) {
  const cambio = valorFinal - valorInicial;

  return {
    valorInicial,
    valorFinal,
    cambio,
    magnitudCambio: Math.abs(cambio)
  };
}

console.log(compararEstados(18, 13));

06 · Evolución paso a paso

Cambios sucesivos

Muchos programas no saltan directamente del estado inicial al final. Actualizan el sistema mediante una sucesión de pasos. Si q₀ es el primer estado y cada paso tiene su propio incremento:

q₀+ Δq₀ →q₁+ Δq₁ →q₂+ Δq₂ →q₃

Cada nuevo estado se obtiene mediante:

qn+1 = qn + Δqn

El subíndice n identifica el paso. El incremento puede ser constante o variar en cada actualización. Un saldo, por ejemplo, cambia con depósitos y consumos de distintos tamaños.

const cambios = [12, -5, 8, -3];
let saldo = 40;

for (const cambio of cambios) {
  const saldoAnterior = saldo;
  saldo = saldo + cambio;
  console.log(saldoAnterior, cambio, saldo);
}

console.log("Saldo final:", saldo); // 52

Usar una variable como saldoAnterior conserva el estado previo para registrar o comprobar la transición antes de reemplazarlo.

07 · Del detalle al resumen

Cambio neto y cambios intermedios

El cambio neto entre el comienzo y el final es:

Δqneto = qfinal − qinicial

También puede calcularse sumando todos los incrementos intermedios:

Δqneto = Δq₀ + Δq₁ + ··· + Δqn−1

En el ejemplo del saldo, 12 − 5 + 8 − 3 = 12. Como el saldo inicial era 40, el final es 52. Esta igualdad ofrece una comprobación útil: la suma de cambios debe coincidir con la diferencia entre los extremos.

El cambio total recorrido puede ser distinto

Si queremos medir toda la actividad sin cancelaciones, sumamos las magnitudes: |12| + |−5| + |8| + |−3| = 28. Por eso:

  • El cambio neto conserva signos y resume la diferencia entre extremos.
  • La variación acumulada suma magnitudes y describe cuánta modificación hubo en total.

No son intercambiables. Un sistema puede terminar cerca del inicio y, aun así, haber experimentado mucha actividad.

08 · Cambio en relaciones

Cuando cambia la entrada, puede cambiar la salida

Para una función y = f(x), comparamos dos entradas x₀ y x₁. El cambio de entrada y el cambio correspondiente de salida son:

Δx = x₁ − x₀     y     Δy = f(x₁) − f(x₀)

Supongamos f(x) = x², con x₀ = 2 y x₁ = 5:

  • Δx = 5 − 2 = 3.
  • f(2) = 4 y f(5) = 25.
  • Δy = 25 − 4 = 21.

Un incremento de entrada no tiene por qué producir un incremento de salida del mismo tamaño. La función determina cómo se relacionan ambos cambios. En el tema siguiente compararemos cambios en distintas escalas y, más adelante, estudiaremos cuánto cambia una cantidad respecto de otra.

function cambioDeFuncion(funcion, xInicial, xFinal) {
  const yInicial = funcion(xInicial);
  const yFinal = funcion(xFinal);

  return {
    cambioEntrada: xFinal - xInicial,
    cambioSalida: yFinal - yInicial
  };
}

console.log(cambioDeFuncion(x => x ** 2, 2, 5));

09 · Representación computacional

Estado, evento y actualización

En programación, el cambio suele modelarse con tres piezas:

  1. 1
    Estado actual.

    Los datos que describen el sistema antes de la transición.

  2. 2
    Evento o regla.

    La información que determina la modificación.

  3. 3
    Nuevo estado.

    El resultado de aplicar la modificación sin perder el significado de los datos.

Una función de actualización puede devolver un estado nuevo en lugar de modificar el anterior:

function aplicarMovimiento(estado, cambio) {
  return {
    ...estado,
    posicionX: estado.posicionX + cambio.deltaX,
    posicionY: estado.posicionY + cambio.deltaY
  };
}

const estadoInicial = { posicionX: 10, posicionY: 4, energia: 100 };
const movimiento = { deltaX: 3, deltaY: -2 };
const estadoFinal = aplicarMovimiento(estadoInicial, movimiento);

console.log(estadoInicial);
console.log(estadoFinal);

Conservar ambos objetos facilita comparar, depurar, deshacer acciones y reproducir una secuencia. La estrategia adecuada depende del sistema, pero distinguir estado previo, cambio y estado nuevo siempre mejora el razonamiento.

10 · Exploración

Laboratorio: construir una secuencia de cambios

Elegí un estado inicial, un incremento por paso y la cantidad de pasos. El gráfico mostrará la sucesión discreta. Observá la diferencia entre el cambio de cada transición y el cambio neto desde el inicio.

EXPERIMENTO 03

Actualización repetida de un estado

qₙ = 10 + 3n

Los resultados de la secuencia aparecen también debajo del gráfico.
Estado inicialq₀ = 10,00
Incremento individualΔq = 3,00
Estado finalq₆ = 28,00
Cambio neto+18,00

Se aplican 6 cambios de +3,00: el estado pasa de 10,00 a 28,00.

Cada punto representa un estado numerado. Las líneas unen estados consecutivos para hacer visible la dirección del cambio; no representan valores intermedios continuos.

Preguntas para explorar

  1. Mantené el incremento en 3 y duplicá los pasos. ¿Qué ocurre con el cambio neto?
  2. Elegí un incremento negativo. ¿Cómo se refleja su signo en la secuencia?
  3. Elegí incremento cero. ¿Puede avanzar el número de paso sin cambiar el estado?
  4. Cambiá solo el estado inicial. ¿Se modifica la separación entre puntos consecutivos?

11 · Resultados confiables

Comprobar cálculos de cambio

Los errores de signo y de orden son frecuentes. Podemos reducirlos mediante propiedades simples:

  • Reconstrucción: inicial + cambio = final.
  • Recorrido inverso: cambio(final, inicial) = −cambio(inicial, final).
  • Estado idéntico: cambio(q, q) = 0.
  • Descomposición: la suma de cambios sucesivos coincide con el cambio entre extremos.
  • Unidades: el cambio tiene la misma unidad que la cantidad comparada.
function calcularCambio(inicial, final) {
  return final - inicial;
}

const inicial = 24;
const final = 17;
const cambio = calcularCambio(inicial, final);

function verificar(condicion, mensaje) {
  if (!condicion) throw new Error(`Comprobación fallida: ${mensaje}`);
}

verificar(inicial + cambio === final, "reconstrucción");
verificar(calcularCambio(final, inicial) === -cambio, "recorrido inverso");
verificar(calcularCambio(inicial, inicial) === 0, "estado idéntico");

console.log(cambio); // -7

Estas pruebas no garantizan que los datos representen correctamente el fenómeno, pero comprueban la coherencia interna de la operación.

12 · Comprensión

Confusiones frecuentes

«El cambio es el valor final»

El valor final describe dónde termina la cantidad. El cambio compara final e inicial. Llegar a 20 desde 18 implica un cambio de 2; llegar a 20 desde 5 implica un cambio de 15.

«Un cambio negativo es un error»

El signo negativo indica que el estado final es menor. Puede ser esperado y útil, como la reducción del tiempo de ejecución después de una optimización.

«Si el cambio neto es cero, nada cambió»

Solo sabemos que los extremos coinciden. Pueden haber ocurrido cambios intermedios que se cancelaron.

«Intercambiar inicial y final no afecta el resultado»

La magnitud se conserva, pero el signo se invierte. El orden forma parte de la definición.

«Todos los cambios pueden sumarse»

Solo tiene sentido sumar cambios de cantidades compatibles y expresados en unidades coherentes. No podemos sumar directamente un cambio de memoria con uno de tiempo.

13 · Práctica guiada

Ejercicios de comprensión

Ejercicio 1: interpretar el signo

Calculá e interpretá el cambio en cada situación:

  1. La latencia pasa de 240 ms a 185 ms.
  2. El almacenamiento usado pasa de 6.2 GB a 8.7 GB.
  3. La cantidad de procesos comienza y termina en 14.
Ver solución razonada
  1. 185 − 240 = −55 ms. La latencia disminuyó 55 ms.
  2. 8.7 − 6.2 = +2.5 GB. El uso aumentó 2.5 GB.
  3. 14 − 14 = 0. El cambio neto es nulo; no conocemos los estados intermedios.

Ejercicio 2: reconstruir estados

Una variable tenía valor inicial 35. Se aplicaron, en orden, los cambios +8, −12, +5 y −2.

  1. Escribí todos los estados intermedios.
  2. Calculá el cambio neto sumando incrementos.
  3. Comprobalo restando el estado inicial al final.
  4. Calculá la variación acumulada sumando magnitudes.
Ver solución y código

Los estados son 35, 43, 31, 36 y 34. El cambio neto es 8 − 12 + 5 − 2 = −1, que coincide con 34 − 35. La variación acumulada es 8 + 12 + 5 + 2 = 27.

const estadoInicial = 35;
const cambios = [8, -12, 5, -2];
const estados = [estadoInicial];

for (const cambio of cambios) {
  estados.push(estados.at(-1) + cambio);
}

const estadoFinal = estados.at(-1);
const cambioNeto = estadoFinal - estadoInicial;
const variacionAcumulada = cambios.reduce(
  (total, cambio) => total + Math.abs(cambio),
  0
);

console.log({ estados, estadoFinal, cambioNeto, variacionAcumulada });

Ejercicio 3: cambios inducidos por una función

Para f(x) = 3x + 2, compará x₀ = 4 con x₁ = 9. Calculá Δx, los dos valores de la función y Δy. Después repetí intercambiando las entradas.

Ver solución

Δx = 9 − 4 = 5. Los valores son f(4)=14 y f(9)=29, por lo que Δy = 15. Al invertir el recorrido, Δx = −5 y Δy = −15. Las magnitudes se conservan y los signos se invierten.

14 · Síntesis

Ideas para recordar

  • Calcular un cambio requiere dos estados comparables y un orden definido.
  • El incremento es Δq = qfinal − qinicial.
  • Un incremento puede ser positivo, negativo o nulo.
  • El valor final, el cambio y la magnitud del cambio responden preguntas diferentes.
  • Un cambio neto nulo no descarta cambios intermedios.
  • Los procesos paso a paso se describen actualizando un estado mediante incrementos.
  • La suma de los cambios sucesivos coincide con la diferencia entre los extremos.
  • En una función, un cambio de entrada puede producir un cambio de salida de distinto tamaño y signo.

En el próximo tema distinguiremos cambio absoluto y cambio relativo. Veremos por qué una misma diferencia puede ser pequeña o grande según la escala del valor de referencia.