55. Análisis del comportamiento de funciones

Analizar una función permite entender cómo cambian sus valores, dónde sube, dónde baja, dónde se anula y dónde alcanza extremos.

55.1 Introducción

Analizar el comportamiento de una función significa estudiar cómo cambia su salida cuando cambia la entrada.

En programación, este análisis ayuda a interpretar datos, detectar tendencias, optimizar valores, encontrar puntos críticos y decidir cómo se comportará un algoritmo o una simulación.

55.2 Qué aspectos se analizan

El comportamiento de una función puede describirse desde varios puntos de vista.

Aspecto Pregunta que responde
Crecimiento ¿La función aumenta al avanzar x?
Decrecimiento ¿La función disminuye al avanzar x?
Ceros ¿Dónde vale 0?
Signo ¿Dónde es positiva o negativa?
Máximos y mínimos ¿Dónde alcanza valores extremos?
Tendencia ¿Qué ocurre cuando x crece mucho?

55.3 Función de ejemplo

Usaremos una función cuadrática sencilla para explorar distintos comportamientos.

f(x) = x² - 4x + 3
function f(x) {
  return x * x - 4 * x + 3;
}

console.log(f(0));
console.log(f(1));
console.log(f(2));
console.log(f(3));

55.4 Generar una tabla de valores

Una tabla de valores es una forma simple de empezar a analizar una función con código.

function f(x) {
  return x * x - 4 * x + 3;
}

function tablaValores(desde, hasta) {
  const tabla = [];

  for (let x = desde; x <= hasta; x++) {
    tabla.push({ x, y: f(x) });
  }

  return tabla;
}

console.log(tablaValores(-1, 5));

55.5 Detectar crecimiento y decrecimiento

Si al aumentar x también aumenta y, la función crece en ese tramo. Si y disminuye, la función decrece.

function analizarCambios(puntos) {
  const cambios = [];

  for (let i = 1; i < puntos.length; i++) {
    const anterior = puntos[i - 1];
    const actual = puntos[i];
    const diferencia = actual.y - anterior.y;

    cambios.push({
      desde: anterior.x,
      hasta: actual.x,
      comportamiento: diferencia > 0 ? "crece" : diferencia < 0 ? "decrece" : "constante"
    });
  }

  return cambios;
}

const puntos = [
  { x: 0, y: 3 },
  { x: 1, y: 0 },
  { x: 2, y: -1 },
  { x: 3, y: 0 },
  { x: 4, y: 3 }
];

console.log(analizarCambios(puntos));

55.6 Ceros de una función

Los ceros son los valores de x donde la función vale 0. También se llaman raíces o intersecciones con el eje X.

f(x) = 0

En gráficos, los ceros indican dónde la curva cruza o toca el eje horizontal.

55.7 Buscar ceros en una tabla

Una búsqueda discreta puede detectar valores exactos donde la función vale cero.

function f(x) {
  return x * x - 4 * x + 3;
}

function buscarCeros(desde, hasta) {
  const ceros = [];

  for (let x = desde; x <= hasta; x++) {
    if (f(x) === 0) {
      ceros.push(x);
    }
  }

  return ceros;
}

console.log(buscarCeros(-5, 5));

55.8 Signo de una función

Estudiar el signo significa identificar dónde la función es positiva, negativa o cero.

function signo(valor) {
  if (valor > 0) return "positivo";
  if (valor < 0) return "negativo";
  return "cero";
}

function f(x) {
  return x * x - 4 * x + 3;
}

for (let x = 0; x <= 4; x++) {
  console.log({ x, y: f(x), signo: signo(f(x)) });
}

55.9 Máximos y mínimos

Un máximo es un valor alto destacado respecto de los cercanos. Un mínimo es un valor bajo destacado respecto de los cercanos.

En una función cuadrática con parábola hacia arriba, el vértice representa un mínimo.

f(x) = x² - 4x + 3 tiene un mínimo en x = 2

55.10 Buscar mínimo en una lista

Con puntos calculados, podemos encontrar el menor valor de salida.

function buscarMinimo(puntos) {
  let minimo = puntos[0];

  for (const punto of puntos) {
    if (punto.y < minimo.y) {
      minimo = punto;
    }
  }

  return minimo;
}

const puntos = [
  { x: 0, y: 3 },
  { x: 1, y: 0 },
  { x: 2, y: -1 },
  { x: 3, y: 0 },
  { x: 4, y: 3 }
];

console.log(buscarMinimo(puntos));

55.11 Buscar máximo en una lista

El mismo enfoque permite encontrar el mayor valor de salida entre los puntos disponibles.

function buscarMaximo(puntos) {
  let maximo = puntos[0];

  for (const punto of puntos) {
    if (punto.y > maximo.y) {
      maximo = punto;
    }
  }

  return maximo;
}

const puntos = [
  { x: -2, y: 15 },
  { x: 0, y: 3 },
  { x: 2, y: -1 },
  { x: 4, y: 3 }
];

console.log(buscarMaximo(puntos));

55.12 Tendencia

La tendencia describe qué ocurre cuando la entrada crece mucho o disminuye mucho.

En funciones cuadráticas con coeficiente principal positivo, los valores crecen hacia ambos extremos.

function f(x) {
  return x * x - 4 * x + 3;
}

console.log(f(-100));
console.log(f(0));
console.log(f(100));

55.13 Cambios rápidos y lentos

También interesa saber si una función cambia rápidamente o lentamente. Una forma simple de aproximarlo es comparar diferencias entre valores consecutivos.

function f(x) {
  return x * x;
}

for (let x = 0; x <= 5; x++) {
  const cambio = f(x + 1) - f(x);
  console.log({ desde: x, hasta: x + 1, cambio });
}

55.14 Análisis por muestreo

En programación, muchas veces se analiza una función tomando muestras en varios puntos. Esto no reemplaza al análisis exacto, pero es útil para explorar comportamientos.

function muestrear(funcion, desde, hasta, paso) {
  const puntos = [];

  for (let x = desde; x <= hasta; x += paso) {
    puntos.push({ x, y: funcion(x) });
  }

  return puntos;
}

function f(x) {
  return Math.sin(x);
}

console.log(muestrear(f, 0, Math.PI, Math.PI / 4));

55.15 Clasificar comportamiento local

Con tres puntos consecutivos podemos detectar un máximo o mínimo local aproximado.

function clasificarLocal(anterior, actual, siguiente) {
  if (actual.y < anterior.y && actual.y < siguiente.y) {
    return "mínimo local";
  }

  if (actual.y > anterior.y && actual.y > siguiente.y) {
    return "máximo local";
  }

  return "sin extremo local";
}

console.log(clasificarLocal(
  { x: 1, y: 0 },
  { x: 2, y: -1 },
  { x: 3, y: 0 }
));

55.16 Aplicación en datos

El análisis de comportamiento también se aplica a series de datos, no solo a fórmulas matemáticas.

const ventas = [100, 120, 150, 130, 160];

for (let i = 1; i < ventas.length; i++) {
  const cambio = ventas[i] - ventas[i - 1];
  console.log({
    periodo: i,
    cambio,
    tendencia: cambio > 0 ? "sube" : cambio < 0 ? "baja" : "igual"
  });
}

55.17 Aplicación en algoritmos

Una función puede describir el costo de un algoritmo según el tamaño de entrada. Analizar su comportamiento ayuda a prever rendimiento.

Función Comportamiento Interpretación
f(n) = n Crecimiento lineal El costo crece proporcionalmente
f(n) = n² Crecimiento cuadrático El costo crece mucho más rápido
f(n) = log(n) Crecimiento lento El costo aumenta suavemente

55.18 Aplicaciones en programación

  • Detectar tendencias en datos.
  • Encontrar máximos y mínimos en simulaciones.
  • Analizar funciones de costo de algoritmos.
  • Determinar cuándo una señal cruza cierto umbral.
  • Comparar crecimiento entre modelos matemáticos.
  • Preparar datos para gráficos e interfaces.

55.19 Errores comunes

  • Sacar conclusiones generales a partir de muy pocos puntos.
  • Confundir crecimiento local con crecimiento en todo el dominio.
  • Buscar máximos o mínimos solo en una tabla limitada sin considerar otros valores.
  • Comparar valores decimales con igualdad exacta al buscar ceros.
  • Ignorar el dominio de la función al analizar su comportamiento.

55.20 Qué debes recordar de este tema

  • Analizar una función es estudiar cómo cambia su salida al cambiar la entrada.
  • El crecimiento y decrecimiento describen la dirección del cambio.
  • Los ceros indican dónde la función vale 0.
  • Los máximos y mínimos señalan valores extremos.
  • En programación, el análisis puede hacerse mediante fórmulas o mediante muestras de datos.

55.21 Conclusión

El análisis del comportamiento de funciones permite pasar de una fórmula a una interpretación. Saber dónde una función crece, decrece, cambia de signo o alcanza extremos ayuda a tomar decisiones en gráficos, datos, simulaciones y algoritmos.