Una discontinuidad aparece cuando una función presenta un salto, un hueco, una explosión infinita o un punto fuera de su dominio.
Una discontinuidad es una interrupción en el comportamiento de una función. Puede aparecer porque falta un valor, porque hay un salto, porque la función crece sin límite o porque cierto valor no pertenece al dominio.
En programación, detectar discontinuidades es importante para evitar divisiones por cero, saltos visuales, errores numéricos y comportamientos inesperados en gráficos o simulaciones.
| Tipo | Qué ocurre | Ejemplo |
|---|---|---|
| Removible | Hay un hueco o valor incorrecto | (x² - 1) / (x - 1) |
| De salto | Los límites laterales son distintos | Función por tramos |
| Infinita | La función crece sin límite | 1 / x |
| Por dominio | La función no admite ciertos valores | √x para x < 0 |
Una discontinuidad removible ocurre cuando el límite existe, pero la función no está definida en el punto o tiene un valor distinto.
La expresión (x² - 1) / (x - 1) se simplifica como x + 1, pero la original no está definida en x = 1.
function f(x) {
if (x === 1) {
return "No definida";
}
return (x * x - 1) / (x - 1);
}
console.log(f(0.999));
console.log(f(1));
console.log(f(1.001));
Si conocemos el valor del límite, podemos definir la función de forma continua en ese punto.
function fCorregida(x) {
if (x === 1) {
return 2;
}
return (x * x - 1) / (x - 1);
}
console.log(fCorregida(0.999));
console.log(fCorregida(1));
console.log(fCorregida(1.001));
Otra discontinuidad removible aparece cuando el valor existe, pero no coincide con el límite.
function f(x) {
if (x === 2) {
return 100;
}
return x + 3;
}
console.log(f(1.999));
console.log(f(2));
console.log(f(2.001));
Cerca de x = 2, la función se acerca a 5, pero en x = 2 vale 100.
Una discontinuidad de salto ocurre cuando los límites laterales existen, pero son distintos.
function f(x) {
if (x < 0) {
return -2;
}
return 3;
}
console.log(f(-0.1));
console.log(f(-0.001));
console.log(f(0.001));
console.log(f(0.1));
Al acercarse a 0 desde la izquierda, el valor se acerca a -2. Desde la derecha, se acerca a 3.
En datos muestreados, un salto puede detectarse si la diferencia entre puntos vecinos supera cierto umbral.
function detectarSaltos(puntos, umbral) {
const saltos = [];
for (let i = 1; i < puntos.length; i++) {
const diferencia = Math.abs(puntos[i].y - puntos[i - 1].y);
if (diferencia > umbral) {
saltos.push({ desde: puntos[i - 1].x, hasta: puntos[i].x, diferencia });
}
}
return saltos;
}
const puntos = [
{ x: -0.2, y: -2 },
{ x: -0.1, y: -2 },
{ x: 0.1, y: 3 },
{ x: 0.2, y: 3 }
];
console.log(detectarSaltos(puntos, 2));
Una discontinuidad infinita ocurre cuando la función crece o decrece sin límite cerca de un punto.
function f(x) {
return 1 / x;
}
console.log(f(-0.1));
console.log(f(-0.01));
console.log(f(0.01));
console.log(f(0.1));
Cerca de 0, los valores se vuelven muy grandes en magnitud.
En programación conviene detectar valores problemáticos antes de dividir.
function inversaSegura(x) {
if (Math.abs(x) < 0.000001) {
return "Valor demasiado cercano a cero";
}
return 1 / x;
}
console.log(inversaSegura(2));
console.log(inversaSegura(0.0000001));
Algunas expresiones no aceptan ciertos valores. Por ejemplo, la raíz cuadrada real no acepta números negativos.
function raiz(x) {
if (x < 0) {
return "Fuera del dominio";
}
return Math.sqrt(x);
}
console.log(raiz(9));
console.log(raiz(0));
console.log(raiz(-1));
El logaritmo real solo acepta valores positivos. Cero y valores negativos están fuera del dominio.
function logaritmoSeguro(x) {
if (x <= 0) {
return "Fuera del dominio";
}
return Math.log(x);
}
console.log(logaritmoSeguro(10));
console.log(logaritmoSeguro(0));
console.log(logaritmoSeguro(-5));
Una asíntota vertical aparece cuando la función se dispara hacia valores muy grandes cerca de cierta x.
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));
Cuando se dibuja una función, una discontinuidad no debería unirse con una línea continua si hay un salto o una asíntota.
function deberiaConectar(p1, p2, umbral) {
return Math.abs(p2.y - p1.y) <= umbral;
}
console.log(deberiaConectar({ x: -0.1, y: -2 }, { x: 0.1, y: 3 }, 2));
console.log(deberiaConectar({ x: 1, y: 2 }, { x: 2, y: 2.1 }, 2));
En series de datos, una discontinuidad puede representar un cambio abrupto, un error de medición o un evento importante.
const mediciones = [10, 11, 10.5, 50, 51];
for (let i = 1; i < mediciones.length; i++) {
const cambio = Math.abs(mediciones[i] - mediciones[i - 1]);
if (cambio > 20) {
console.log(`Cambio brusco entre ${i - 1} y ${i}: ${cambio}`);
}
}
| Tipo | Señal principal | Cuidado en programación |
|---|---|---|
| Removible | Hueco o valor incorrecto | Definir o corregir el valor |
| Salto | Límites laterales distintos | No unir visualmente los tramos |
| Infinita | Valores enormes cerca de un punto | Evitar división por cero |
| Dominio | Entrada no permitida | Validar antes de calcular |
Reconocer discontinuidades ayuda a interpretar funciones y a escribir programas más robustos. Saltos, huecos, asíntotas y restricciones de dominio afectan cómo se calculan, grafican y simulan los modelos matemáticos.