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.
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.
En una función lineal, x es la entrada, y es la salida, m es la pendiente y b es la ordenada al origen.
| 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));
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.
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.
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.
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));
Si conocemos dos puntos de una recta, podemos calcular la pendiente como cambio en y dividido por cambio en x.
function calcularPendiente(p1, p2) {
return (p2.y - p1.y) / (p2.x - p1.x);
}
console.log(calcularPendiente(
{ x: 1, y: 5 },
{ x: 3, y: 9 }
));
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 }
));
Si conocemos la pendiente m y un punto (x, y), podemos despejar b desde y = mx + b.
const punto = { x: 3, y: 9 };
const m = 2;
const b = punto.y - m * punto.x;
console.log(b);
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));
Muchas funciones de costo son lineales: tienen un costo fijo y un costo por unidad.
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.
Si un objeto se mueve con velocidad constante, su posición puede modelarse con una función lineal.
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));
Interpolar linealmente consiste en calcular un valor intermedio entre dos extremos. Se usa en animaciones, gráficos y transiciones.
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));
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);
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.