Una función afín combina un cambio proporcional con un valor inicial. Su forma general es f(x) = mx + b.
Las funciones afines son muy parecidas a las funciones lineales, pero agregan un término independiente. Ese término permite representar valores iniciales, costos fijos, desplazamientos o puntos de partida distintos de cero.
En programación son muy útiles porque muchos modelos reales no empiezan desde cero.
Una función afín tiene la forma:
El valor m indica la pendiente o razón de cambio. El valor b indica la ordenada al origen o valor inicial.
En este curso usamos la convención de que una función lineal tiene la forma f(x) = mx, mientras que una función afín tiene la forma f(x) = mx + b.
| Tipo | Forma | ¿Pasa por el origen? |
|---|---|---|
| Lineal | f(x) = mx | Sí |
| Afín | f(x) = mx + b | Solo si b = 0 |
Consideremos la función:
La pendiente es 2 y la ordenada al origen es 3.
| x | f(x) |
|---|---|
| 0 | 3 |
| 1 | 5 |
| 2 | 7 |
| 3 | 9 |
La salida aumenta de a 2, pero comienza en 3 cuando x = 0.
Una función afín se implementa multiplicando la entrada por la pendiente y sumando el valor inicial.
function afin(x) {
return 2 * x + 3;
}
console.log(afin(0));
console.log(afin(1));
console.log(afin(5));
Podemos escribir una función más general que reciba m y b como parámetros.
function funcionAfin(x, m, b) {
return m * x + b;
}
console.log(funcionAfin(4, 2, 3));
console.log(funcionAfin(4, -1, 10));
Con una sola implementación podemos representar muchas rectas distintas.
El gráfico de una función afín es una recta. La pendiente controla la inclinación y la ordenada al origen controla la altura donde la recta corta el eje vertical.
Muchas tarifas tienen una parte fija y una parte variable. Esto se modela naturalmente con una función afín.
function calcularCosto(unidades) {
const precioPorUnidad = 15;
const cargoFijo = 80;
return precioPorUnidad * unidades + cargoFijo;
}
console.log(calcularCosto(0));
console.log(calcularCosto(10));
El cargo fijo aparece incluso cuando las unidades consumidas son cero.
Si un objeto ya tiene una posición inicial y luego se mueve con velocidad constante, la posición puede modelarse con una función afín.
function posicion(tiempo) {
const velocidad = 4;
const posicionInicial = 20;
return velocidad * tiempo + posicionInicial;
}
console.log(posicion(0));
console.log(posicion(5));
Cuando tiempo = 0, la posición ya vale 20.
Al convertir coordenadas o valores, a veces no solo hay que escalar, sino también desplazar.
function convertirAPantalla(x) {
const escala = 40;
const desplazamiento = 320;
return escala * x + desplazamiento;
}
console.log(convertirAPantalla(-2));
console.log(convertirAPantalla(0));
console.log(convertirAPantalla(2));
Este patrón es común al dibujar gráficos en pantalla.
| Problema | m | b |
|---|---|---|
| Costo con cargo fijo | Precio por unidad | Cargo fijo |
| Movimiento con posición inicial | Velocidad | Posición inicial |
| Conversión a píxeles | Escala | Desplazamiento |
| Modelo predictivo simple | Peso de la entrada | Sesgo o valor base |
Las funciones afines amplían las funciones lineales agregando un valor inicial. Esto permite modelar situaciones reales donde el resultado no comienza en cero.
En el próximo tema veremos funciones cuadráticas, cuyo gráfico ya no es una recta sino una parábola.