Una función racional es un cociente entre polinomios. Su característica más importante es que no puede evaluarse donde el denominador vale cero.
Las funciones racionales aparecen cuando una cantidad se obtiene dividiendo dos expresiones polinómicas. Son útiles para representar proporciones, tasas, promedios, escalas inversas y modelos donde una variable aparece en el denominador.
A diferencia de los polinomios, las funciones racionales pueden tener valores prohibidos. Esto ocurre cuando el denominador se hace cero.
Una función racional tiene la forma:
Donde P(x) y Q(x) son polinomios, y Q(x) no puede ser el polinomio cero.
| Función | Numerador | Denominador |
|---|---|---|
| f(x) = 1 / x | 1 | x |
| f(x) = (x + 2) / (x - 3) | x + 2 | x - 3 |
| f(x) = (x² - 1) / (x + 1) | x² - 1 | x + 1 |
| f(x) = (2x³ + x) / (x² + 4) | 2x³ + x | x² + 4 |
El dominio de una función racional incluye todos los valores reales de x excepto aquellos que hacen que el denominador sea cero.
La función no se puede evaluar en x = 2 porque produciría una división por cero.
En matemáticas, dividir por cero no está definido. En JavaScript, una división numérica por cero puede devolver Infinity, -Infinity o NaN, pero eso no significa que el valor sea válido para el modelo matemático.
console.log(1 / 0);
console.log(-1 / 0);
console.log(0 / 0);
Cuando implementamos una función racional, conviene validar el denominador antes de dividir.
Podemos devolver null cuando el valor no pertenece al dominio de la función.
function racional(x) {
const denominador = x - 2;
if (denominador === 0) {
return null;
}
return 1 / denominador;
}
console.log(racional(1));
console.log(racional(2));
console.log(racional(3));
Los valores prohibidos son aquellos que anulan el denominador. En funciones simples se pueden encontrar resolviendo una ecuación.
Entonces x = 5 queda fuera del dominio.
Si el denominador tiene la forma ax + b, el valor prohibido se calcula con -b / a.
function valorProhibidoLineal(a, b) {
if (a === 0) {
return null;
}
return -b / a;
}
console.log(valorProhibidoLineal(1, -5));
console.log(valorProhibidoLineal(2, 6));
Algunas funciones racionales pueden simplificarse algebraicamente, pero el valor que anulaba el denominador original sigue siendo problemático.
La expresión simplificada sirve para calcular valores, pero no elimina la restricción original del dominio.
En código conviene conservar la validación del denominador original.
function racionalSimplificable(x) {
const denominadorOriginal = x - 1;
if (denominadorOriginal === 0) {
return null;
}
return x + 1;
}
console.log(racionalSimplificable(0));
console.log(racionalSimplificable(1));
console.log(racionalSimplificable(2));
Si representamos numerador y denominador con arreglos de coeficientes, podemos evaluar ambos con el método de Horner.
function evaluarHorner(coeficientes, x) {
let resultado = 0;
for (const coeficiente of coeficientes) {
resultado = resultado * x + coeficiente;
}
return resultado;
}
function evaluarRacional(numerador, denominador, x) {
const valorDenominador = evaluarHorner(denominador, x);
if (valorDenominador === 0) {
return null;
}
return evaluarHorner(numerador, x) / valorDenominador;
}
console.log(evaluarRacional([1, 2], [1, -3], 4));
console.log(evaluarRacional([1, 2], [1, -3], 3));
El arreglo [1, 2] representa x + 2, y [1, -3] representa x - 3.
Cuando x se acerca a un valor prohibido, los resultados pueden crecer mucho en valor absoluto.
function f(x) {
return 1 / (x - 2);
}
console.log(f(1.9));
console.log(f(1.99));
console.log(f(2.01));
console.log(f(2.1));
Este comportamiento se relaciona con las asíntotas, que estudiaremos con más detalle en el próximo tema.
| Aplicación | Uso de una función racional | Cuidado principal |
|---|---|---|
| Escalas inversas | Valores que disminuyen al aumentar la distancia | Evitar distancia cero |
| Promedios y tasas | Dividir acumulados por cantidades | Validar que la cantidad no sea cero |
| Gráficos | Curvas con valores que crecen cerca de restricciones | No unir puntos separados por discontinuidades |
| Modelos físicos simples | Intensidad según distancia o resistencia | Controlar valores extremos |
Una relación inversa simple puede modelar una intensidad que disminuye cuando aumenta la distancia. Para evitar división por cero, se agrega una distancia mínima.
function intensidad(distancia) {
const distanciaMinima = 0.1;
const d = Math.max(distancia, distanciaMinima);
return 100 / d;
}
console.log(intensidad(10));
console.log(intensidad(1));
console.log(intensidad(0));
Las funciones racionales amplían el trabajo con polinomios al permitir cocientes. Esto introduce una idea fundamental: no todos los valores de entrada son válidos, porque el denominador puede anularse.
En el próximo tema estudiaremos asíntotas y discontinuidades, dos comportamientos muy importantes en este tipo de funciones.