29. Funciones lineales

Una función lineal representa una relación de cambio constante. Su gráfico es una recta y su forma permite modelar costos, escalas, conversiones, movimientos uniformes y muchas reglas de programación.

29.1 Introducción

Una función lineal describe una relación donde la salida cambia siempre en la misma cantidad cuando la entrada aumenta una unidad.

En programación, las funciones lineales aparecen al convertir unidades, calcular costos con tarifa fija, mover objetos con velocidad constante, escalar valores entre rangos y dibujar rectas.

La forma más común para estudiarlas es y = mx + b.

29.2 Forma general y = mx + b

En una función lineal, x es la entrada, y es la salida, m es la pendiente y b es la ordenada al origen.

y = m × x + b
Símbolo Significado
x Entrada o variable independiente
y Salida o variable dependiente
m Pendiente o cambio por unidad
b Valor de y cuando x vale 0
function lineal(x, m, b) {
  return m * x + b;
}

console.log(lineal(5, 2, 3));

29.3 Pendiente

La pendiente indica cuánto cambia la salida cuando la entrada aumenta una unidad. Si m = 2, cada aumento de 1 en x aumenta y en 2.

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

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

Las salidas aumentan siempre de 2 en 2.

29.4 Ordenada al origen

La ordenada al origen es el valor de y cuando x = 0. En la fórmula y = mx + b, ese valor es b.

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

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

Cuando x vale 0, la salida es 10.

29.5 Tabla de valores

Una tabla de valores permite observar el comportamiento lineal.

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

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

Cada fila representa un punto de la recta.

29.6 Pendiente positiva, negativa y cero

La pendiente determina la dirección de la recta. Si es positiva, la función crece. Si es negativa, decrece. Si es cero, la salida es constante.

Pendiente Comportamiento Ejemplo
m > 0 Creciente y = 2x + 1
m < 0 Decreciente y = -3x + 5
m = 0 Constante y = 7
function creciente(x) {
  return 2 * x + 1;
}

function decreciente(x) {
  return -3 * x + 5;
}

function constante(x) {
  return 7;
}

console.log(creciente(2));
console.log(decreciente(2));
console.log(constante(2));

29.7 Calcular pendiente con dos puntos

Si conocemos dos puntos de una recta, podemos calcular la pendiente como cambio en y dividido por cambio en x.

m = (y2 - y1) / (x2 - x1)
function calcularPendiente(p1, p2) {
  return (p2.y - p1.y) / (p2.x - p1.x);
}

console.log(calcularPendiente(
  { x: 1, y: 5 },
  { x: 3, y: 9 }
));

29.8 Evitar división por cero al calcular pendiente

Si los dos puntos tienen la misma coordenada x, la pendiente no está definida porque dividiríamos por cero.

function calcularPendiente(p1, p2) {
  if (p2.x === p1.x) {
    return "Pendiente no definida";
  }

  return (p2.y - p1.y) / (p2.x - p1.x);
}

console.log(calcularPendiente(
  { x: 2, y: 1 },
  { x: 2, y: 9 }
));

29.9 Encontrar b usando un punto

Si conocemos la pendiente m y un punto (x, y), podemos despejar b desde y = mx + b.

b = y - m × x
const punto = { x: 3, y: 9 };
const m = 2;
const b = punto.y - m * punto.x;

console.log(b);

29.10 Construir una función lineal desde dos puntos

Con dos puntos podemos calcular la pendiente y la ordenada al origen, y luego construir la función.

function crearFuncionLineal(p1, p2) {
  const m = (p2.y - p1.y) / (p2.x - p1.x);
  const b = p1.y - m * p1.x;

  return function (x) {
    return m * x + b;
  };
}

const f = crearFuncionLineal(
  { x: 1, y: 5 },
  { x: 3, y: 9 }
);

console.log(f(10));

29.11 Aplicación: costo fijo más costo variable

Muchas funciones de costo son lineales: tienen un costo fijo y un costo por unidad.

costoTotal = costoFijo + costoUnitario × cantidad
function costoTotal(cantidad) {
  const costoFijo = 5000;
  const costoUnitario = 250;
  return costoFijo + costoUnitario * cantidad;
}

console.log(costoTotal(0));
console.log(costoTotal(10));
console.log(costoTotal(20));

El costo fijo es la ordenada al origen y el costo unitario es la pendiente.

29.12 Aplicación: movimiento uniforme

Si un objeto se mueve con velocidad constante, su posición puede modelarse con una función lineal.

posición = posiciónInicial + velocidad × tiempo
function posicion(tiempo) {
  const posicionInicial = 10;
  const velocidad = 3;
  return posicionInicial + velocidad * tiempo;
}

console.log(posicion(0));
console.log(posicion(5));
console.log(posicion(10));

29.13 Aplicación: interpolación lineal

Interpolar linealmente consiste en calcular un valor intermedio entre dos extremos. Se usa en animaciones, gráficos y transiciones.

valor = inicio + (fin - inicio) × t

Cuando t = 0, obtenemos el inicio. Cuando t = 1, obtenemos el fin.

function interpolar(inicio, fin, t) {
  return inicio + (fin - inicio) * t;
}

console.log(interpolar(10, 50, 0));
console.log(interpolar(10, 50, 0.5));
console.log(interpolar(10, 50, 1));

29.14 Errores comunes

  • Confundir pendiente con ordenada al origen.
  • Olvidar que b es el valor de salida cuando x = 0.
  • Calcular pendiente dividiendo por cero cuando dos puntos tienen la misma x.
  • Asumir que cualquier relación es lineal aunque el cambio no sea constante.
  • Omitir paréntesis en fórmulas como (y2 - y1) / (x2 - x1).
  • No validar entradas cuando la función representa una regla de negocio.
const p1 = { x: 1, y: 5 };
const p2 = { x: 3, y: 9 };

const pendienteCorrecta = (p2.y - p1.y) / (p2.x - p1.x);
const pendienteIncorrecta = p2.y - p1.y / p2.x - p1.x;

console.log(pendienteCorrecta);
console.log(pendienteIncorrecta);

29.15 Qué debes recordar de este tema

  • Una función lineal tiene la forma y = mx + b.
  • m es la pendiente y representa cambio por unidad.
  • b es la ordenada al origen y representa el valor cuando x = 0.
  • Una pendiente positiva indica crecimiento y una negativa indica disminución.
  • La pendiente entre dos puntos es (y2 - y1) / (x2 - x1).
  • Las funciones lineales modelan cambios constantes.
  • Se usan en costos, conversiones, movimiento uniforme, escalas e interpolación.

29.16 Conclusión

Las funciones lineales son una de las herramientas más útiles para modelar relaciones simples con cambio constante. Su forma permite interpretar rápidamente cuánto cambia una salida cuando cambia una entrada.

En el próximo tema estudiaremos funciones cuadráticas, donde el cambio ya no es constante y aparecen curvas en lugar de rectas.