30. Funciones inversas

La función inversa revierte el proceso de la función original. Si la función f lleva el elemento x al elemento y, su inversa f⁻¹ recorre el camino de vuelta, llevando el elemento y de regreso a x.

30.1 Introducción

Muchas operaciones en informática y matemáticas necesitan ser reversibles. Si encriptamos un archivo, necesitamos poder desencriptarlo; si serializamos un objeto a formato JSON, necesitamos poder deserializarlo para recuperar el objeto original.

En el lenguaje de las funciones, esta reversión se logra mediante la **función inversa**. La inversa de una función deshace exactamente lo que hizo la función original, restaurando el valor inicial.

30.2 Definición Formal

Dada una función f : A → B, la función inversa (denotada como f⁻¹) es una función con dominio en B y codominio en A (f⁻¹ : B → A) tal que:

f⁻¹(y) = x si y solo si f(x) = y

Esto da lugar a dos identidades matemáticas fundamentales, llamadas propiedades de composición de la inversa:

  • f⁻¹(f(x)) = x para todo x ∈ A (deshace la función original).
  • f(f⁻¹(y)) = y para todo y ∈ B (deshace la inversa).

30.3 La Condición de Biyectividad

No todas las funciones tienen una función inversa. Para que una función admita una inversa, **es obligatorio que la función sea biyectiva**.

Si intentamos invertir una función que no es biyectiva, la relación resultante de regreso violará las reglas de las funciones:

  • Si no es inyectiva: Dos elementos distintos x₁ y x₂ apuntan al mismo y. Al invertir las flechas, el elemento y tendría que apuntar tanto a x₁ como a x₂, rompiendo la condición de **unicidad** (de una entrada saldrían dos salidas).
  • Si no es sobreyectiva: Algún elemento y en el codominio se queda sin flechas. Al invertir la dirección, ese elemento y no tendría ninguna flecha de salida, rompiendo la condición de **existencia** (una entrada en el nuevo dominio no tendría salida).

Por lo tanto, solo las funciones que son inyectivas y sobreyectivas a la vez admiten una función inversa bien definida.

30.4 Simulador: Inversión de Flechas

Utiliza el simulador de inversión para entender por qué la biyectividad es obligatoria. Selecciona una función y pulsa el botón **Invertir Flechas** para observar la animación del viaje de regreso. El simulador te indicará en rojo si la inversión falla y qué condición de función se está rompiendo.

Simulador de Inversión de Funciones Función Original
Función original biyectiva lista para ser invertida.

30.5 Obtener la Fórmula de la Inversa

Para hallar algebraicamente la fórmula de la función inversa de una función real, escribimos la ecuación y = f(x) y despejamos la variable x en términos de y.

Ejemplo: Encontrar la función inversa de f(x) = 2x - 5 sobre los reales.

1. Escribimos la ecuación: y = 2x - 5 2. Despejamos x en términos de y: y + 5 = 2x x = (y + 5) / 2 3. Reescribimos la función inversa f⁻¹: f⁻¹(y) = (y + 5) / 2 Podemos verificarlo aplicando f⁻¹(f(x)): f⁻¹(2x - 5) = ((2x - 5) + 5) / 2 = 2x / 2 = x. (Se cumple la identidad).

30.6 Calcular la Inversa en Programación

En programación, una función discreta se puede representar mediante un objeto o un Map de pares clave-valor. Para calcular su inversa, recorremos el mapa original intercambiando llaves por valores. Debemos validar dinámicamente que no existan valores duplicados durante el proceso (lo que delataría una falta de inyectividad).

const f = new Map([
  [1, 'a'],
  [2, 'b'],
  [3, 'c'],
  [4, 'd']
]);

function calcularInversa(originalMap) {
  const inversa = new Map();
  
  for (const [clave, valor] of originalMap) {
    // Si el valor ya existe como clave en la inversa, la función no era inyectiva
    if (inversa.has(valor)) {
      throw new Error(`Error: No es inyectiva. El valor '${valor}' se repite.`);
    }
    inversa.set(valor, clave);
  }
  
  return inversa;
}

try {
  const fInv = calcularInversa(f);
  console.log("Inversa calculada con éxito:");
  for (const [clave, valor] of fInv) {
    console.log(`Clave original: ${valor} <- Nueva Clave: ${clave}`);
  }
} catch (error) {
  console.log(error.message);
}
// Inversa calculada con éxito:
// Clave original: 1 <- Nueva Clave: a
// Clave original: 2 <- Nueva Clave: b
// Clave original: 3 <- Nueva Clave: c
// Clave original: 4 <- Nueva Clave: d

30.7 Errores Comunes

  • Intentar invertir funciones no biyectivas: Es el error teórico más severo. Produce relaciones de regreso que no son funciones matemáticas válidas.
  • Confundir la función inversa con el recíproco multiplicativo: Representar f⁻¹(x) como 1 / f(x). En funciones, el exponente -1 denota la inversa composicional, no la división aritmética.
  • No intercambiar el dominio y el codominio: Olvidar que el dominio de f⁻¹ es el codominio de f, y que el codominio de f⁻¹ es el dominio de f.

30.8 Qué debes recordar de este tema

  • La función inversa recorre el camino de vuelta: f⁻¹(y) = x ⇔ f(x) = y.
  • Una función tiene inversa si y solo si es **biyectiva**.
  • El dominio de la inversa es el codominio de la original y viceversa.
  • En diagramas de flechas, la inversa se obtiene invirtiendo el sentido de las flechas.
  • En el plano cartesiano, la gráfica de f⁻¹ es la reflexión de la gráfica de f respecto a la recta bisectriz y = x.

30.9 Conclusión

La existencia de funciones inversas fundamenta procesos indispensables del software como la serialización/deserialización, la compresión/descompresión de archivos y el cifrado criptográfico. Comprender los requisitos de biyectividad nos ayuda a prevenir excepciones en el código al intentar revertir operaciones. Una vez comprendido cómo actúan las funciones de manera individual e inversa, podemos explorar cómo combinarlas secuencialmente.

En el próximo tema estudiaremos la **composición de funciones**, analizando cómo aplicar una función sobre los resultados de otra para construir operaciones lógicas complejas en cadena.