Raíces no lineales · Tema 08

Raíces de ecuaciones no lineales

Cómo transformar una ecuación en el problema f(x)=0, localizar soluciones mediante gráficos y tablas, y construir intervalos confiables para los métodos posteriores.

01 · Punto de partida

Resolver una ecuación es encontrar una raíz

Una raíz o cero de una función f es un valor r que satisface:

f(r) = 0

Muchas ecuaciones pueden escribirse en esta forma. Por ejemplo, resolver cos(x) = x equivale a encontrar una raíz de:

f(x) = cos(x) − x

En ecuaciones lineales o cuadráticas existen fórmulas conocidas. Para ecuaciones trascendentes, polinomios de grado alto o modelos complejos, una solución simbólica puede no existir o resultar poco práctica. Entonces buscamos aproximaciones numéricas.

  • ¿Existe al menos una raíz?
  • ¿En qué región debemos buscarla?
  • ¿Puede haber varias soluciones?
  • ¿La función es continua y está definida en el intervalo?
  • ¿Cómo verificaremos la aproximación obtenida?

02 · De la ecuación a una función

Construir f(x)=0

Si una ecuación tiene la forma g(x) = h(x), trasladamos todos los términos a un lado:

f(x) = g(x) − h(x)

Las soluciones son los puntos donde ambas expresiones coinciden.

Distintas ecuaciones escritas como problemas de raíces.
Ecuación originalFunción f(x)Dominio relevante
x³ = 2x + 5x³ − 2x − 5Todos los reales
e−x = xe−x − xTodos los reales
ln(x) = 2 − xln(x) + x − 2x > 0
1/(x−1) = 31/(x−1) − 3x ≠ 1

La forma elegida puede influir en la estabilidad y en el comportamiento de algunos métodos. Dos funciones con las mismas raíces no necesariamente producen los mismos residuos ni la misma convergencia.

03 · Aplicaciones

Raíces en problemas de programación

↗

Punto de equilibrio

Encontrar cuándo ingresos y costos coinciden: ingreso(x) − costo(x) = 0.

t

Eventos en simulación

Calcular el instante en que una trayectoria alcanza el suelo o cruza un límite.

θ

Geometría

Determinar un ángulo que produce una distancia, área o intersección requerida.

T

Modelos físicos

Resolver estados de equilibrio donde fuerzas, flujos o energías se compensan.

p

Probabilidad

Invertir una función de distribución para obtener cuantiles.

λ

Calibración

Ajustar un parámetro hasta que la predicción coincida con una observación.

Ejemplo: altura de un objeto

Si h(t) = 20 + 15t − 4.9t² describe la altura en metros, el impacto con el suelo ocurre cuando h(t)=0. Además debemos imponer t ≥ 0, porque una raíz negativa no representa un tiempo posterior al lanzamiento.

04 · Interpretación geométrica

Raíces como cruces e intersecciones

En el gráfico de y=f(x), una raíz es un punto donde la curva alcanza el eje horizontal.

f(x) = 0

Cruce con el eje x

Buscamos las abscisas de los puntos (r, 0).

g(x) = h(x)

Intersección de dos curvas

Las soluciones son los valores donde ambos gráficos tienen la misma altura.

El gráfico permite estimar cantidad y ubicación de raíces, elegir intervalos y detectar comportamientos problemáticos. Sin embargo, una pantalla utiliza una cantidad finita de píxeles y muestras: una raíz estrecha, una oscilación rápida o una discontinuidad pueden pasar inadvertidas.

05 · Existencia garantizada

Continuidad y cambio de signo

Si f es continua en el intervalo cerrado [a,b] y los valores de los extremos tienen signos opuestos:

f(a) · f(b) < 0

entonces existe al menos una raíz en (a,b). Es una consecuencia del Teorema del Valor Intermedio.

Ejemplo

Para f(x)=x³−x−2:

f(1) = −2     f(2) = 4

Como el polinomio es continuo y cambia de signo, sabemos que existe al menos una raíz entre 1 y 2.

const f = x => x ** 3 - x - 2;
const a = 1;
const b = 2;

console.log(f(a), f(b));
console.log(f(a) * f(b) < 0); // true

El cambio de signo garantiza al menos una raíz, pero no afirma que sea única. Para garantizar unicidad necesitamos información adicional, como monotonía estricta en el intervalo.

06 · Lo que el cambio de signo no detecta

Raíces pares y discontinuidades

Una raíz sin cambio de signo

La función f(x)=(x−1)² toca el eje en x=1 y vuelve a subir. Es positiva a ambos lados:

f(0.5) > 0    f(1)=0    f(1.5) > 0

Un detector basado únicamente en signos puede omitir esta raíz de multiplicidad par.

Un cambio de signo sin raíz

La función f(x)=1/(x−1) cambia de signo alrededor de 1, pero no tiene una raíz allí: posee una discontinuidad vertical.

Interpretación de diferentes observaciones.
ObservaciónConclusión posible
Continuidad y signos opuestosExiste al menos una raíz.
Signos igualesNo podemos descartar raíces pares o varias raíces.
Signos opuestos sin continuidadPuede existir una discontinuidad en lugar de una raíz.
Valor muestreado cercano a ceroEs un candidato que debe verificarse.

07 · Antes de evaluar

Dominio y restricciones del modelo

Un buscador de raíces debe respetar tanto el dominio matemático como las restricciones del problema.

  • log(x) requiere x > 0.
  • √x requiere x ≥ 0 si trabajamos con reales.
  • Un denominador no puede ser cero.
  • Tiempo, masa o cantidad pueden requerir valores no negativos.
  • Un ángulo o una probabilidad puede estar limitado a un intervalo específico.
function modeloLogaritmico(x) {
  if (!(x > 0)) return NaN;
  return Math.log(x) + x - 2;
}

for (const x of [-1, 0, 0.5, 1, 2]) {
  console.log(x, modeloLogaritmico(x));
}

Devolver NaN permite que un explorador genérico descarte muestras fuera del dominio, pero una API también puede lanzar una excepción o describir explícitamente los intervalos válidos.

08 · Exploración numérica

Construir una tabla de valores

Una tabla permite localizar cambios de signo sin depender únicamente del gráfico. Elegimos un intervalo y un paso, evaluamos la función y observamos pares consecutivos.

function tablaDeValores(funcion, inicio, fin, paso) {
  if (!(paso > 0) || !(fin >= inicio)) {
    throw new Error("Intervalo o paso inválido");
  }

  const filas = [];
  const cantidad = Math.ceil((fin - inicio) / paso);

  for (let i = 0; i <= cantidad; i++) {
    const x = Math.min(inicio + i * paso, fin);
    filas.push({ x, y: funcion(x) });
  }
  return filas;
}

console.table(tablaDeValores(x => x ** 3 - x - 2, 0, 2, 0.25));

Calcular cada x desde el índice evita acumular repetidamente el error de sumar el paso. Aun así, los valores siguen siendo aproximaciones de punto flotante.

09 · Preparar el método

Aislar intervalos candidatos

Un intervalo de aislamiento contiene una raíz candidata y, idealmente, ninguna otra. Para detectar cambios de signo:

  1. 1
    Elegir rango y paso.

    Usar información del modelo para limitar la exploración.

  2. 2
    Evaluar muestras finitas.

    Descartar NaN e infinitos y registrar posibles discontinuidades.

  3. 3
    Comparar signos consecutivos.

    Guardar [xᵢ,xᵢ₊₁] si el producto es negativo.

  4. 4
    Detectar valores cercanos a cero.

    Considerar raíces tangentes que no cambian de signo.

  5. 5
    Verificar continuidad y dominio.

    Un candidato no es todavía una garantía.

function intervalosConCambioDeSigno(funcion, inicio, fin, paso) {
  const intervalos = [];
  let xAnterior = inicio;
  let yAnterior = funcion(xAnterior);

  for (let x = inicio + paso; x <= fin + paso / 2; x += paso) {
    const actual = Math.min(x, fin);
    const yActual = funcion(actual);

    if (Number.isFinite(yAnterior) && Number.isFinite(yActual)
        && yAnterior * yActual < 0) {
      intervalos.push([xAnterior, actual]);
    }
    xAnterior = actual;
    yAnterior = yActual;
    if (actual === fin) break;
  }
  return intervalos;
}

console.log(intervalosConCambioDeSigno(
  x => Math.sin(3 * x) - 0.2, -3, 3, 0.1
));

10 · Resolución de búsqueda

Cómo influye el tamaño del paso

Un paso grande reduce evaluaciones, pero puede saltar sobre dos raíces próximas o no muestrear cerca de una raíz tangente. Un paso pequeño mejora la resolución y aumenta el costo.

Paso demasiado grande

Pocas muestras

Puede ocultar oscilaciones, raíces múltiples y regiones estrechas.

Paso demasiado pequeño

Muchas evaluaciones

Puede resultar costoso y no reemplaza la verificación de continuidad.

Una estrategia adaptativa comienza con una exploración gruesa y refina las regiones donde:

  • aparece un cambio de signo;
  • el valor absoluto de la función disminuye mucho;
  • la pendiente o curvatura parece elevada;
  • hay valores no finitos o saltos grandes.

No existe un paso universal: debe relacionarse con la escala y frecuencia esperada del problema.

11 · Tipos de raíz

Raíces simples y múltiples

Una raíz r tiene multiplicidad m si la función contiene un factor (x−r)ᵐ.

Comportamiento local según la multiplicidad.
TipoCondición típicaGráficoCambio de signo
Simplef(r)=0, f′(r)≠0Cruza el eje con pendiente no nulaSí
ParFactor (x−r)², (x−r)⁴…Toca el eje y regresaNo
Impar mayorFactor (x−r)³, (x−r)⁵…Cruza de forma aplanadaSí

Las raíces múltiples suelen ser más difíciles numéricamente: la función es plana cerca de la solución, el residuo puede ser pequeño sin gran precisión en x y algunos métodos pierden velocidad de convergencia.

12 · Evaluar un candidato

Residuo, intervalo y coherencia

Una aproximación r̃ debe verificarse desde varios ángulos:

Residuo
Comprobar que |f(r̃)| sea pequeño en la escala de la función.
Intervalo
Si existe un intervalo con garantía, verificar que la aproximación permanezca dentro.
Dominio
Confirmar que el valor sea matemáticamente válido y tenga sentido en el modelo.
Unicidad
Determinar si el intervalo puede contener otras raíces.
function verificarCandidato(funcion, candidato, toleranciaResiduo) {
  const valor = funcion(candidato);
  return {
    candidato,
    valorFuncion: valor,
    residuo: Math.abs(valor),
    aceptado: Number.isFinite(valor)
      && Math.abs(valor) <= toleranciaResiduo
  };
}

console.log(verificarCandidato(
  x => x ** 3 - x - 2,
  1.5213797068,
  1e-9
));

Un residuo pequeño no basta si la función está mal condicionada, pero es una comprobación imprescindible de la ecuación.

13 · Exploración interactiva

Laboratorio: localizar raíces candidatas

Elegí una función y un paso de muestreo. El laboratorio marca cambios de signo y muestras cercanas a cero. Probá especialmente la raíz doble y la discontinuidad.

EXPERIMENTO 08

Explorador de raíces

f(x) = x³ − x − 2

Los resultados numéricos aparecen debajo.
Rango[−3, 3]
Evaluaciones25
Candidatos1
Mejor muestrax = 1,5

Se detectó un intervalo con cambio de signo.

Preguntas para explorar

  1. Reducí el paso de la función oscilante. ¿Aparecen más intervalos?
  2. ¿Por qué la raíz doble puede no producir un cambio de signo?
  3. En la función discontinua, ¿un cambio de signo garantiza una raíz?
  4. ¿Cómo cambia la mejor muestra al reducir el paso en la función cúbica?

14 · Diseño reutilizable

Separar exploración y resolución

Conviene dividir el proceso en componentes:

Definir f→Explorar rango→Aislar candidatos→Resolver→Verificar

El explorador no debería afirmar que encontró raíces definitivas. Puede devolver objetos con evidencia y advertencias:

const candidato = {
  intervalo: [1.5, 1.75],
  tipo: "cambio_de_signo",
  valores: [-0.125, 1.609375],
  continuidadVerificada: false,
  requiereRefinamiento: true
};

Luego un método como bisección, falsa posición o Newton-Raphson utiliza esa información según sus propios requisitos. Esta separación facilita cambiar estrategias y conservar diagnósticos.

15 · Comprensión

Confusiones frecuentes

«Si f(a) y f(b) tienen signos opuestos, siempre hay una raíz»

Solo si la función es continua en todo el intervalo. Una discontinuidad puede producir el mismo patrón de signos.

«Si no hay cambio de signo, no hay raíz»

Las raíces de multiplicidad par tocan el eje sin cruzarlo. También puede haber una cantidad par de cruces dentro del intervalo.

«Un gráfico muestra todas las raíces»

El resultado depende del rango, la escala, los píxeles y las muestras utilizadas. Es una herramienta exploratoria.

«Un residuo pequeño demuestra una aproximación precisa»

La relación entre residuo y error depende de la pendiente y del condicionamiento cerca de la raíz.

«Cuanto menor sea el paso, mejor será siempre la búsqueda»

Un paso menor aumenta el costo y todavía puede fallar ante oscilaciones más rápidas o discontinuidades. Debe combinarse con análisis del modelo.

16 · Práctica guiada

Ejercicios

Ejercicio 1: formular una raíz

Transformá eˣ = 3x en un problema f(x)=0 de dos maneras.

Ver solución

Una forma es f(x)=eˣ−3x. Otra es g(x)=eˣ/(3x)−1, pero esta segunda excluye x=0 y tiene un comportamiento numérico diferente. La primera suele ser más directa.

Ejercicio 2: cambio de signo

Para f(x)=x³−4x+1, evaluá f(0), f(1), f(2) y f(3). Identificá intervalos con raíces garantizadas por continuidad.

Ver solución

f(0)=1, f(1)=−2, f(2)=1 y f(3)=16. Hay cambios de signo en (0,1) y (1,2). Como es un polinomio continuo, cada intervalo contiene al menos una raíz.

Ejercicio 3: raíz sin cambio de signo

Explicá por qué f(x)=(x+2)²(x−1) puede presentar una raíz que un escaneo de signos no detecte.

Ver solución razonada

x=−2 es una raíz de multiplicidad 2. El factor cuadrado conserva su signo a ambos lados, de modo que la función no cruza el eje allí. x=1 es una raíz simple y sí produce un cambio de signo.

Ejercicio 4: discontinuidad

La función f(x)=tan(x) tiene signos opuestos cerca de π/2. ¿Por qué no podemos aplicar directamente el Teorema del Valor Intermedio?

Ver solución

tan(x) no está definida en π/2 y no es continua en un intervalo que atraviese ese punto. El cambio de signo corresponde a una asíntota, no a una raíz.

Ejercicio 5: programar un explorador

Modificá el buscador de intervalos para registrar también muestras con |f(x)| ≤ toleranciaMuestra.

Ver una posible solución
function explorarRaices(funcion, inicio, fin, paso, toleranciaMuestra) {
  const cambios = [];
  const cercanas = [];
  let anterior = { x: inicio, y: funcion(inicio) };

  for (let x = inicio; x <= fin + paso / 2; x += paso) {
    const actualX = Math.min(x, fin);
    const actual = { x: actualX, y: funcion(actualX) };

    if (Number.isFinite(actual.y)
        && Math.abs(actual.y) <= toleranciaMuestra) {
      cercanas.push(actual);
    }
    if (Number.isFinite(anterior.y) && Number.isFinite(actual.y)
        && anterior.y * actual.y < 0) {
      cambios.push([anterior.x, actual.x]);
    }
    anterior = actual;
    if (actualX === fin) break;
  }
  return { cambios, cercanas };
}

17 · Síntesis

Ideas para recordar

  • Resolver una ecuación numéricamente comienza por escribirla como f(x)=0.
  • El dominio matemático y las restricciones del modelo limitan la búsqueda.
  • Un gráfico y una tabla ayudan a localizar raíces, pero no constituyen una prueba completa.
  • Continuidad más cambio de signo garantiza al menos una raíz.
  • Las raíces pares pueden no cambiar de signo y las discontinuidades pueden simular un cambio.
  • El tamaño del paso controla el equilibrio entre resolución y costo.
  • Aislar candidatos es una etapa distinta de refinarlos con un método numérico.
  • Toda aproximación debe verificarse mediante residuo, dominio y coherencia con el modelo.

En el próximo tema aplicaremos el método de bisección, que utiliza un intervalo continuo con cambio de signo para reducir sistemáticamente la región que contiene una raíz.