Las funciones racionales pueden acercarse a rectas sin tocarlas y también pueden tener cortes en su dominio. Estos comportamientos son esenciales al graficar y programar modelos con divisiones.
En el tema anterior vimos que una función racional no puede evaluarse donde su denominador vale cero. Esa restricción puede producir comportamientos particulares: valores que crecen sin límite, saltos en el gráfico o huecos.
Para programar gráficos o simulaciones con funciones racionales, es importante detectar estos casos. Si no lo hacemos, podemos unir puntos que no deberían estar unidos o mostrar resultados numéricos inválidos.
Una discontinuidad ocurre cuando una función no puede dibujarse de forma continua en algún punto. En funciones racionales, muchas discontinuidades aparecen cuando el denominador se anula.
El gráfico se interrumpe en x = 2.
Una asíntota es una recta a la que el gráfico de una función se acerca cada vez más. La función puede aproximarse a esa recta sin llegar a coincidir exactamente con ella en la zona analizada.
En funciones racionales estudiaremos principalmente asíntotas verticales, horizontales y oblicuas.
Una asíntota vertical aparece cuando la función crece o decrece sin límite al acercarse a un valor prohibido.
Al acercarnos a x = 3, el denominador se acerca a cero y el resultado se vuelve muy grande en valor absoluto.
Podemos evaluar valores cada vez más cercanos al punto prohibido.
function f(x) {
return 1 / (x - 3);
}
console.log(f(2.9));
console.log(f(2.99));
console.log(f(3.01));
console.log(f(3.1));
Los valores a la izquierda y a la derecha de la asíntota pueden tener signos opuestos.
Una asíntota horizontal describe el valor al que se acerca una función cuando x crece mucho en sentido positivo o negativo.
En este caso, los términos principales del numerador y el denominador tienen el mismo grado. El cociente de sus coeficientes principales es 2 / 1 = 2.
Si evaluamos la función en valores grandes, podemos observar hacia qué número se aproxima.
function f(x) {
return (2 * x + 1) / (x - 4);
}
console.log(f(10));
console.log(f(100));
console.log(f(1000));
console.log(f(10000));
Para una función racional P(x) / Q(x), comparamos los grados del numerador y del denominador.
| Comparación de grados | Asíntota horizontal |
|---|---|
| grado(P) < grado(Q) | y = 0 |
| grado(P) = grado(Q) | cociente de coeficientes principales |
| grado(P) > grado(Q) | No hay asíntota horizontal simple |
Una asíntota oblicua puede aparecer cuando el grado del numerador es exactamente uno más que el grado del denominador.
Este tipo de asíntota se estudiará con más profundidad en cursos de álgebra o cálculo, pero conviene reconocer su aparición.
Una discontinuidad removible aparece cuando un factor se cancela entre numerador y denominador. El gráfico queda como una curva conocida, pero con un hueco en un punto.
En x = 1 hay un hueco, no una asíntota vertical.
| Situación | Qué ocurre | Ejemplo |
|---|---|---|
| Factor se cancela | Discontinuidad removible o hueco | (x² - 1) / (x - 1) |
| Factor no se cancela | Puede aparecer una asíntota vertical | 1 / (x - 1) |
Al graficar una función racional, no conviene unir puntos si la función no está definida entre ellos o si los valores cambian demasiado rápido.
function f(x) {
const denominador = x - 2;
if (denominador === 0) {
return null;
}
return 1 / denominador;
}
function generarPuntos(desde, hasta, paso) {
const puntos = [];
for (let x = desde; x <= hasta; x += paso) {
const y = f(Number(x.toFixed(6)));
puntos.push({ x: Number(x.toFixed(2)), y });
}
return puntos;
}
console.log(generarPuntos(1.5, 2.5, 0.25));
Una estrategia práctica es separar los puntos en tramos. Cuando aparece un valor inválido o un salto muy grande, comenzamos un tramo nuevo.
function separarTramos(puntos, saltoMaximo) {
const tramos = [];
let tramoActual = [];
for (const punto of puntos) {
const anterior = tramoActual[tramoActual.length - 1];
const invalido = punto.y === null || !Number.isFinite(punto.y);
const saltoGrande = anterior && Math.abs(punto.y - anterior.y) > saltoMaximo;
if (invalido || saltoGrande) {
if (tramoActual.length) tramos.push(tramoActual);
tramoActual = [];
} else {
tramoActual.push(punto);
}
}
if (tramoActual.length) tramos.push(tramoActual);
return tramos;
}
const puntos = [
{ x: 1.5, y: -2 },
{ x: 1.9, y: -10 },
{ x: 2, y: null },
{ x: 2.1, y: 10 },
{ x: 2.5, y: 2 }
];
console.log(separarTramos(puntos, 20));
Si el denominador es lineal, podemos encontrar el valor donde se anula.
function asintotaVerticalLineal(a, b) {
if (a === 0) {
return null;
}
return -b / a;
}
console.log(asintotaVerticalLineal(1, -2));
console.log(asintotaVerticalLineal(3, 6));
Estos valores son candidatos a asíntotas verticales, aunque también hay que revisar si la expresión se simplifica y aparece un hueco.
| Área | Problema | Cuidado |
|---|---|---|
| Graficadores | Curvas partidas por discontinuidades | Separar tramos |
| Simulaciones | Valores que crecen demasiado | Limitar rangos o validar entradas |
| Modelos inversos | División por distancias pequeñas | Usar distancia mínima |
| Análisis de datos | Promedios o tasas con denominador cero | Detectar casos inválidos |
Las asíntotas y discontinuidades muestran que no todas las funciones pueden graficarse como una línea continua. En funciones racionales, estos fenómenos aparecen naturalmente por la presencia del denominador.
En el próximo tema estudiaremos funciones irracionales, donde aparecerán nuevas restricciones de dominio relacionadas con raíces.