2. Historia y utilidad de las funciones

Las funciones surgieron como una forma de describir cambios y relaciones entre magnitudes. Hoy son una herramienta esencial para programar algoritmos, simular fenómenos, analizar datos y construir software.

2.1 Introducción

Las funciones matemáticas no aparecieron de golpe con una definición perfecta. Su idea se fue formando durante siglos, a medida que las personas necesitaban describir movimientos, cambios de temperatura, trayectorias, crecimiento de poblaciones, precios, sonidos y muchas otras relaciones entre cantidades.

En programación ocurre algo muy parecido: usamos funciones para expresar reglas que transforman datos. Por eso conocer su historia y utilidad ayuda a entender por qué son tan importantes en los algoritmos modernos.

2.2 El origen: relacionar cantidades

Antes de que existiera la notación moderna, ya se trabajaba con relaciones entre cantidades. Por ejemplo, medir una distancia según el tiempo, calcular áreas según longitudes o registrar posiciones de cuerpos celestes.

distancia = velocidad × tiempo

Esta relación puede verse como una función: si la velocidad se mantiene constante, a cada valor de tiempo le corresponde una distancia recorrida.

2.3 Funciones y movimiento

Una de las razones históricas más importantes para desarrollar funciones fue el estudio del movimiento. Para describir cómo cambia la posición de un objeto con el tiempo, se necesita una regla que relacione ambas magnitudes.

posición(t) = posiciónInicial + velocidad × t

Esta forma de pensar sigue siendo central en simulaciones, animaciones, videojuegos, robótica y gráficos por computadora.

2.4 La notación funcional

Con el tiempo se hizo necesario escribir estas relaciones de una manera más compacta. La notación f(x) permite indicar que una función llamada f recibe un valor x y devuelve un resultado.

f(x) = x² + 1

La notación funcional facilita razonar sobre reglas generales sin depender de un caso particular. Esa misma idea aparece cuando escribimos una función en un lenguaje de programación.

2.5 Una línea histórica simplificada

Etapa Idea principal Importancia para la programación
Mediciones antiguas Relacionar magnitudes como distancia, tiempo, área y volumen Base de cálculos geométricos y sistemas de medición
Geometría analítica Representar relaciones mediante coordenadas y gráficos Fundamento de gráficos 2D, mapas y visualización
Cálculo diferencial Estudiar cambios, pendientes, velocidades y acumulaciones Simulaciones, optimización y motores físicos
Matemática moderna Definir funciones con mayor precisión mediante conjuntos Modelado formal de datos, tipos y transformaciones
Computación Implementar reglas como procedimientos ejecutables Funciones, métodos, callbacks, pipelines y modelos

2.6 Utilidad principal: modelar cambios

Una función permite describir cómo cambia una variable cuando cambia otra. Esta idea es útil cuando el programa necesita calcular un resultado sin escribir una regla distinta para cada caso.

function posicion(tiempo) {
  const posicionInicial = 10;
  const velocidad = 4;
  return posicionInicial + velocidad * tiempo;
}

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

La misma función calcula la posición para distintos tiempos. Esto permite simular un movimiento sin guardar manualmente cada resultado.

2.7 Utilidad en algoritmos

Los algoritmos suelen transformar datos paso a paso. Cada transformación puede pensarse como una función: recibe una entrada, aplica una regla y produce una salida.

function normalizar(valor, minimo, maximo) {
  return (valor - minimo) / (maximo - minimo);
}

console.log(normalizar(75, 50, 100));

La función anterior convierte un valor dentro de un rango en un número entre 0 y 1. Este tipo de transformación se usa en interfaces, gráficos, estadísticas y ciencia de datos.

2.8 Utilidad en gráficos y visualización

Para dibujar una curva en pantalla, el programa evalúa una función en muchos valores de entrada. Cada resultado se transforma luego en un punto del gráfico.

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

for (let x = -3; x <= 3; x++) {
  console.log(x, parabola(x));
}

Este ejemplo genera pares de valores. En una aplicación gráfica, esos pares pueden convertirse en puntos de una parábola.

2.8.1 Gráfico de una curva en JavaScript

Para graficar una función en JavaScript, el programa evalúa muchos valores de x, calcula f(x) y transforma esos puntos matemáticos en posiciones visibles dentro del gráfico.

La siguiente aplicación JavaScript dibuja los ejes y luego traza la curva de la función f(x) = x².

const canvas = document.getElementById("grafico-parabola");
const ctx = canvas.getContext("2d");

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

function convertirX(x) {
  return canvas.width / 2 + x * 70;
}

function convertirY(y) {
  return canvas.height - 40 - y * 18;
}

ctx.clearRect(0, 0, canvas.width, canvas.height);

ctx.strokeStyle = "#bdd9f0";
ctx.lineWidth = 1;
for (let x = -4; x <= 4; x++) {
  ctx.beginPath();
  ctx.moveTo(convertirX(x), 20);
  ctx.lineTo(convertirX(x), canvas.height - 40);
  ctx.stroke();
}
for (let y = 0; y <= 10; y += 2) {
  ctx.beginPath();
  ctx.moveTo(40, convertirY(y));
  ctx.lineTo(canvas.width - 40, convertirY(y));
  ctx.stroke();
}

ctx.strokeStyle = "#0b4f8a";
ctx.lineWidth = 2;
ctx.beginPath();
ctx.moveTo(40, canvas.height - 40);
ctx.lineTo(canvas.width - 40, canvas.height - 40);
ctx.moveTo(canvas.width / 2, 20);
ctx.lineTo(canvas.width / 2, canvas.height - 40);
ctx.stroke();

ctx.strokeStyle = "#d63384";
ctx.lineWidth = 3;
ctx.beginPath();

for (let x = -3.5; x <= 3.5; x += 0.05) {
  const pantallaX = convertirX(x);
  const pantallaY = convertirY(parabola(x));

  if (x === -3.5) {
    ctx.moveTo(pantallaX, pantallaY);
  } else {
    ctx.lineTo(pantallaX, pantallaY);
  }
}

ctx.stroke();

Para experimentar con la curva, modifica el código de la función parabola cambiando la línea return x * x; por return x * x + 5;. Luego vuelve a ejecutar la aplicación y observa cómo cambia la curva.

2.9 Utilidad en ciencia de datos

En ciencia de datos, las funciones se usan para transformar información, calcular indicadores, ajustar modelos y hacer predicciones. Una función puede representar desde una fórmula simple hasta un modelo complejo entrenado con datos.

Uso Función posible Resultado
Normalización f(x) = (x - mínimo) / (máximo - mínimo) Valores comparables
Predicción lineal f(x) = mx + b Estimación de una salida
Clasificación f(datos) = categoría Asignación de una etiqueta
Agregación f(lista) = promedio Resumen de datos

2.10 Utilidad en inteligencia artificial

Los modelos de inteligencia artificial pueden verse como funciones que reciben datos de entrada y producen una salida. Por ejemplo, una red neuronal puede recibir valores numéricos y devolver una probabilidad.

modelo(entrada) = predicción

Aunque los modelos reales pueden tener miles o millones de parámetros, la idea básica sigue siendo funcional: transformar entradas en salidas mediante una regla aprendida.

2.11 Funciones como herramienta de abstracción

Una función permite ocultar detalles y trabajar con una regla como si fuera una unidad. Esto es importante tanto en matemática como en programación.

function calcularImpuesto(precio) {
  return precio * 0.21;
}

function calcularTotal(precio) {
  return precio + calcularImpuesto(precio);
}

console.log(calcularTotal(1000));

La función calcularTotal usa otra función sin repetir su fórmula interna. Esta forma de componer reglas permite construir programas más ordenados.

2.12 Qué debes recordar de este tema

  • Las funciones surgieron para describir relaciones y cambios entre magnitudes.
  • La notación funcional permite expresar reglas generales de forma compacta.
  • Las funciones son útiles para modelar movimiento, crecimiento, costos, señales y datos.
  • En programación, una función matemática puede convertirse en una función de código.
  • Los gráficos, simulaciones, videojuegos, análisis de datos e inteligencia artificial usan funciones constantemente.
  • Las funciones ayudan a abstraer reglas y reutilizarlas en distintos contextos.

2.13 Conclusión

La historia de las funciones muestra una necesidad constante: describir cómo una cantidad depende de otra. Esa necesidad aparece tanto en la matemática como en el software.

En el próximo tema veremos variables dependientes e independientes, dos conceptos fundamentales para entender qué representa la entrada y qué representa la salida de una función.