62. Discontinuidades más comunes

Una discontinuidad aparece cuando una función presenta un salto, un hueco, una explosión infinita o un punto fuera de su dominio.

62.1 Introducción

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.

62.2 Tipos comunes

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

62.3 Discontinuidad removible

Una discontinuidad removible ocurre cuando el límite existe, pero la función no está definida en el punto o tiene un valor distinto.

Hay un hueco que podría corregirse definiendo bien el valor.

62.4 Ejemplo de hueco

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

62.5 Corregir una discontinuidad removible

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

62.6 Valor incorrecto

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.

62.7 Discontinuidad de salto

Una discontinuidad de salto ocurre cuando los límites laterales existen, pero son distintos.

Límite por izquierda ≠ límite por derecha

62.8 Ejemplo de salto

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.

62.9 Detectar saltos por diferencia

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

62.10 Discontinuidad infinita

Una discontinuidad infinita ocurre cuando la función crece o decrece sin límite cerca de un punto.

f(x) = 1 / x tiene una discontinuidad infinita en x = 0

62.11 Ejemplo de discontinuidad infinita

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.

62.12 Evitar división por cero

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

62.13 Discontinuidad por dominio

Algunas expresiones no aceptan ciertos valores. Por ejemplo, la raíz cuadrada real no acepta números negativos.

f(x) = √x solo está definida para x ≥ 0

62.14 Validar dominio

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

62.15 Logaritmos y dominio

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

62.16 Asintotas verticales

Una asíntota vertical aparece cuando la función se dispara hacia valores muy grandes cerca de cierta x.

f(x) = 1 / (x - 2) tiene una asíntota vertical en 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));

62.17 Discontinuidades en gráficos

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

62.18 Discontinuidades y datos reales

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

62.19 Resumen de discontinuidades

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

62.20 Aplicaciones en programación

  • Evitar errores por división por cero.
  • Validar entradas antes de usar raíces o logaritmos.
  • Detectar saltos en datos o sensores.
  • Dibujar gráficos sin conectar puntos que no deberían unirse.
  • Identificar cambios abruptos en simulaciones.
  • Separar tramos de funciones definidas por partes.

62.21 Errores comunes

  • Unir con una línea puntos separados por una discontinuidad.
  • Evaluar una función exactamente donde hay división por cero.
  • Ignorar restricciones de dominio.
  • Confundir una discontinuidad removible con una de salto.
  • No usar tolerancia al detectar valores cercanos a cero.

62.22 Qué debes recordar de este tema

  • Las discontinuidades son interrupciones en el comportamiento de una función.
  • Las removibles tienen huecos o valores incorrectos que pueden corregirse.
  • Las de salto tienen límites laterales distintos.
  • Las infinitas aparecen cuando la función crece sin límite cerca de un punto.
  • En programación, conviene validar dominio, detectar saltos y evitar cálculos inestables.

62.23 Conclusión

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.