28. Funciones racionales

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.

28.1 Introducción

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.

28.2 Definición

Una función racional tiene la forma:

f(x) = P(x) / Q(x)

Donde P(x) y Q(x) son polinomios, y Q(x) no puede ser el polinomio cero.

28.3 Ejemplos

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

28.4 Dominio de una función racional

El dominio de una función racional incluye todos los valores reales de x excepto aquellos que hacen que el denominador sea cero.

f(x) = 1 / (x - 2) x - 2 ≠ 0 x ≠ 2

La función no se puede evaluar en x = 2 porque produciría una división por cero.

28.5 División por cero en programación

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.

28.6 Evaluación segura

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));

28.7 Valores prohibidos

Los valores prohibidos son aquellos que anulan el denominador. En funciones simples se pueden encontrar resolviendo una ecuación.

f(x) = (x + 4) / (x - 5) denominador: x - 5 x - 5 = 0 x = 5

Entonces x = 5 queda fuera del dominio.

28.8 Encontrar valor prohibido lineal con JavaScript

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));

28.9 Funciones racionales y simplificación

Algunas funciones racionales pueden simplificarse algebraicamente, pero el valor que anulaba el denominador original sigue siendo problemático.

f(x) = (x² - 1) / (x - 1) x² - 1 = (x - 1)(x + 1) f(x) = x + 1, pero x ≠ 1

La expresión simplificada sirve para calcular valores, pero no elimina la restricción original del dominio.

28.10 Evaluar una función simplificable

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));

28.11 Evaluar cocientes de polinomios

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.

28.12 Aproximarse a un valor prohibido

Cuando x se acerca a un valor prohibido, los resultados pueden crecer mucho en valor absoluto.

f(x) = 1 / (x - 2)
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.

28.13 Aplicaciones en programación

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

28.14 Ejemplo: intensidad según distancia

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));

28.15 Errores comunes

  • Evaluar una función racional sin revisar si el denominador vale cero.
  • Creer que Infinity en JavaScript es un valor matemático válido para la función.
  • Simplificar una expresión y olvidar las restricciones del denominador original.
  • Unir en un gráfico puntos que están separados por una discontinuidad.
  • Ignorar que valores muy cercanos a un denominador cero pueden producir resultados enormes.

28.16 Qué debes recordar de este tema

  • Una función racional es un cociente de polinomios.
  • El denominador nunca puede valer cero.
  • El dominio excluye los valores que anulan el denominador.
  • En JavaScript conviene validar el denominador antes de dividir.
  • Una expresión simplificada conserva las restricciones del denominador original.
  • Las funciones racionales pueden tener discontinuidades y comportamientos extremos cerca de valores prohibidos.

28.17 Conclusión

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.