Una función inversa deshace el efecto de otra función: recupera la entrada original a partir de la salida.
Una función inversa permite volver hacia atrás. Si una función transforma un valor de entrada en un valor de salida, su inversa intenta recuperar la entrada original.
En programación, esta idea aparece al deshacer cálculos, convertir unidades en ambos sentidos, mapear coordenadas, decodificar datos y revertir transformaciones.
Si una función f transforma x en y, su inversa transforma y nuevamente en x.
La notación f⁻¹ se lee “f inversa”. No significa elevar f a -1.
Si una función suma 10, su inversa resta 10. Una operación deshace a la otra.
function sumarDiez(x) {
return x + 10;
}
function restarDiez(y) {
return y - 10;
}
const salida = sumarDiez(25);
const original = restarDiez(salida);
console.log(salida);
console.log(original);
Una función y su inversa deben devolver el valor original cuando se componen.
Esta propiedad conecta directamente el tema de funciones inversas con la composición de funciones.
Este ejemplo verifica que sumar 10 y luego restar 10 recupera el valor inicial.
function sumarDiez(x) {
return x + 10;
}
function restarDiez(x) {
return x - 10;
}
function comprobar(valor) {
return restarDiez(sumarDiez(valor));
}
console.log(comprobar(5));
console.log(comprobar(100));
Una función lineal simple puede invertirse deshaciendo las operaciones en orden inverso.
Primero se resta 3 y luego se divide por 2, porque esas operaciones deshacen sumar 3 y multiplicar por 2.
function lineal(x) {
return 2 * x + 3;
}
function inversaLineal(y) {
return (y - 3) / 2;
}
const salida = lineal(7);
const entradaRecuperada = inversaLineal(salida);
console.log(salida);
console.log(entradaRecuperada);
Para construir una inversa, se deshacen las operaciones desde la última hacia la primera.
| Función original | Operaciones | Inversa |
|---|---|---|
| 2x + 3 | Multiplicar por 2, sumar 3 | Restar 3, dividir por 2 |
| (x - 5) / 4 | Restar 5, dividir por 4 | Multiplicar por 4, sumar 5 |
Para que una función tenga inversa como función, cada salida debe provenir de una sola entrada. Si dos entradas distintas producen la misma salida, no se puede recuperar una única entrada original.
Si conocemos solo la salida 4, no sabemos si la entrada fue 2 o -2.
La función cuadrática pierde información sobre el signo de la entrada.
function cuadratica(x) {
return x * x;
}
console.log(cuadratica(2));
console.log(cuadratica(-2));
const salida = 4;
console.log(Math.sqrt(salida));
La raíz cuadrada devuelve la raíz principal positiva, pero no recupera automáticamente todas las entradas posibles.
Una función es uno a uno cuando entradas diferentes producen salidas diferentes. Esa condición permite construir una inversa sin ambigüedad.
| Función | ¿Es uno a uno en todos los reales? | Comentario |
|---|---|---|
| f(x) = 2x + 3 | Sí | Cada salida corresponde a una sola entrada |
| f(x) = x² | No | x y -x producen la misma salida |
| f(x) = x³ | Sí | Conserva el signo y el orden |
A veces una función que no tiene inversa global puede tener inversa si se limita su dominio.
Al limitar el dominio a valores no negativos, desaparece la ambigüedad entre x y -x.
Podemos controlar que la entrada pertenezca al dominio elegido.
function cuadraticaNoNegativa(x) {
if (x < 0) {
return "Fuera del dominio";
}
return x * x;
}
function inversaCuadraticaNoNegativa(y) {
if (y < 0) {
return "Fuera del dominio";
}
return Math.sqrt(y);
}
console.log(cuadraticaNoNegativa(5));
console.log(inversaCuadraticaNoNegativa(25));
Las conversiones entre unidades suelen formar pares de funciones inversas.
function celsiusAFahrenheit(celsius) {
return celsius * 9 / 5 + 32;
}
function fahrenheitACelsius(fahrenheit) {
return (fahrenheit - 32) * 5 / 9;
}
const fahrenheit = celsiusAFahrenheit(25);
const celsius = fahrenheitACelsius(fahrenheit);
console.log(fahrenheit);
console.log(celsius);
Si convertimos un valor de un rango a otro, también podemos construir la conversión inversa.
function mapear(valor, entradaMin, entradaMax, salidaMin, salidaMax) {
const proporcion = (valor - entradaMin) / (entradaMax - entradaMin);
return salidaMin + proporcion * (salidaMax - salidaMin);
}
const pixel = mapear(50, 0, 100, 0, 400);
const valor = mapear(pixel, 0, 400, 0, 100);
console.log(pixel);
console.log(valor);
Cuando un programa dibuja coordenadas matemáticas en pantalla, a veces necesita hacer el camino inverso: convertir píxeles en coordenadas matemáticas.
function aPantalla(punto, origen, escala) {
return {
x: origen.x + punto.x * escala,
y: origen.y - punto.y * escala
};
}
function aMatematica(punto, origen, escala) {
return {
x: (punto.x - origen.x) / escala,
y: (origen.y - punto.y) / escala
};
}
const pantalla = aPantalla({ x: 2, y: 3 }, { x: 100, y: 100 }, 20);
console.log(pantalla);
console.log(aMatematica(pantalla, { x: 100, y: 100 }, 20));
Una transformación solo puede invertirse si no destruye información necesaria. Redondear, recortar o limitar valores puede impedir recuperar el dato original exacto.
function redondear(valor) {
return Math.round(valor);
}
console.log(redondear(4.2));
console.log(redondear(4.4));
console.log(redondear(4.49));
Distintas entradas pueden producir la misma salida redondeada. Por eso el redondeo no tiene una inversa exacta.
Las funciones inversas permiten razonar sobre transformaciones reversibles. Entender cuándo se puede recuperar la entrada original es fundamental tanto en matemática como en programación, especialmente al trabajar con datos, gráficos y conversiones.