# Máquina diferencial

Una máquina diferencial es una calculadora mecánica de propósito especial, diseñada para calcular funciones polinómicas. Puesto que las funciones logarítmicas y trigonométricas pueden ser aproximadas por polinomios, esta máquina es más general de lo que parece al principio.
Es un dispositivo de naturaleza mecánica para calcular e imprimir tablas de funciones. Más concretamente, calcula el valor numérico de una función polinómica sobre una progresión aritmética obteniendo una tabla de valores que se aproxima a la función real (basado en que cualquier función puede ser aproximada por polinomios).
Esta máquina fue ideada por el militar, arquitecto e inventor alemán Johann Helfrich von Müller y redescubierta por el matemático británico Charles Babbage, ninguno de los cuales llegó a construirla.
Una reconstrucción de la "Máquina Diferencial No.2" de Babbage está operativa desde 1991 en el Museo de Ciencias de Londres. Trabaja como él la diseñó y demuestra que estaba acertado en su teoría, además de que era capaz de fabricar sus partes con la precisión requerida. Babbage quizás falló a causa de que sus diseños fueron demasiado ambiciosos.

## Historia

El primero de estos dispositivos fue concebido en 1786 por Johann Helfrich von Müller pero nunca fue construido
La máquina diferencial fue olvidada y años más tarde redescubierta, en 1822, por Charles Babbage, quien la propuso en una comunicación a la Royal Astronomical Society el 14 de junio, de título "Nota sobre el uso de maquinaria para el cómputo de tablas matemáticas muy grandes". Esta máquina usaba el sistema de numeración decimal y se accionaba por medio de una manivela. El gobierno británico financió inicialmente el proyecto, pero retiró la subvención cuando Babbage repetidamente solicitaba más dinero pero no hacía ningún progreso visible en la construcción de la máquina. Entre 1847 y 1849 Babbage se encaminó a diseñar su mucho más general máquina analítica pero posteriormente produjo un diseño mejorado de la máquina diferencial (su "máquina diferencial No. 2"). Inspirado por los planes de la máquina diferencial de Babbage, desde 1855 en adelante, Per Georg Scheutz construyó varias máquinas diferenciales; una fue vendida al gobierno británico en 1859. Martin Wiberg mejoró la construcción de Scheutz pero usó su dispositivo solamente para producir y publicar e imprimir tablas logarítmicas.
Basándose en los planos originales de Babbage, y para conmemorar el 200 aniversario de su nacimiento, el Museo de Ciencias de Londres construyó entre 1989 y 1991 una máquina diferencial n.º 2 funcional, bajo la dirección de Doron Swade, el entonces conservador de Computación. En 2000 fue terminada también la impresora que Babbage diseñó originalmente para la máquina diferencial. La conversión de los dibujos de diseño originales en dibujos convenientes para el uso de los fabricantes de ingeniería reveló algunos errores de menor importancia en el diseño de Babbage, que tuvieron que ser corregidos. Una vez que estuvieron terminadas, tanto la máquina como su impresora funcionaron sin errores, y aún lo siguen haciendo. La máquina diferencial y la impresora fueron construidas según las tolerancias realizables con la tecnología del siglo XIX, resolviendo un debate de muchos años sobre si el diseño de Babbage hubiera funcionado realmente. (Una de las razones al principio mencionadas para la no terminación de las máquinas de Babbage había sido que los métodos de ingeniería no estaban lo suficientemente desarrollados en la era Victoriana).

## Operación

La máquina diferencial consiste en un número de columnas, numeradas de 1 a N. Cada columna puede almacenar un número decimal. La única operación que la máquina puede hacer es sumar el valor de la columna n + 1 a la columna n para producir el nuevo valor de n. La columna N solo puede almacenar una constante, la columna 1 exhibe (y posiblemente imprime) el valor del cálculo en la iteración actual.
La máquina se programa al ajustar los valores iniciales de las columnas. La columna 1 se fija al valor del polinomio al comienzo del cómputo. La columna 2 se fija a un valor derivado de la primera y más alta derivadas del polinomio en el mismo valor de X. Cada una de las columnas entre 3 y N se fija a un valor derivado de (n- 1) y las derivadas más altos del polinomio.

### Tiempos de ejecución

En el diseño de Babbage, una iteración, es decir un conjunto completo de adición y operaciones de acarreo sucede una vez por cada cuatro rotaciones de los ejes de la columna. Las columnas impares y pares ejecutan alternativamente la adición cada dos rotaciones. La secuencia de las operaciones para la columna n es así:
* Adición desde la columna n + 1
* Propagación del acarreo
* Adición a la columna n - 1
* Resto

## Método de las diferencias

Debido a que la máquina diferencial no puede hacer multiplicaciones, no puede calcular el valor de un polinomio. Sin embargo, si el valor inicial del polinomio (y sus derivadas) es calculado por algunos medios para un cierto valor de X, la máquina diferencial puede calcular cualquier número de valores próximos, usando el método conocido generalmente como el método de las diferencias finitas.
El principio de una máquina diferencial es método de Newton de diferencias divididas. El cual puede ser ilustrado con un pequeño ejemplo. Considere el polinomio cuadrático:
$p(x)=2x^{2}-3x+2$
y suponga que deseamos tabular los valores p(0); p(0,1); p(0,2); p(0,3); p(0,4) etc. La tabla de abajo se construye como sigue:
* la primera columna contiene los valores del polinomio
* la segunda columna contiene las diferencias de los dos vecinos izquierdos en la primera columna, y
* la tercera columna contiene las diferencias de los dos vecinos en la segunda columna:
| Polinomio | Diferencias | Diferencias |
| p(0)=2,0 | | |
| | 2,0−1,72=0,28 | |
| p(0,1)=1,72 | | 0,28−0,24=0,04 |
| | 1,72−1,48=0,24 | |
| p(0,2)=1,48 | | 0,24−0,20=0,04 |
| | 1,48−1,28=0,20 | |
| p(0,3)=1,28 | | 0,20−0,16=0,04 |
| | 1,28−1,12=0,16 | |
| p(0,4)=1,12 | | |
Note cómo los valores en la tercera columna son constantes. Ésta no es una mera coincidencia. De hecho, si usted comienza con cualquier polinomio de grado n, la columna número n + 1 siempre será constante. Este crucial hecho hace que el método funcione, como veremos a continuación.
Construimos esta tabla de izquierda a derecha, pero ahora podemos continuarla de derecha a izquierda para poder computar más valores de nuestro polinomio.
Para calcular p(0,5) usamos los valores de la diagonal más baja. Comenzamos con el valor 0,04 de columna de la derecha. Entonces continuamos a la segunda columna, restando 0,04 de 0,16 para obtener 0,12. Después continuamos con la primera columna tomando su valor anterior, 1,12 y restándole el 0,12 de la segunda columna. Así que p(0,5) es 1,12-0,12 = 1,0. Para computar p(0,6), iteramos el mismo algoritmo sobre los valores de p(0,5): tome el 0,04 de la tercera columna, reste ese valor 0,12 de la segunda columna para obtener 0,08, Luego reste eso del valor 1,0 de la primera columna para obtener 0,92, que es el resultado de p(0,6).
Este proceso puede ser continuado ad infinitum. Los valores del polinomio son producidos sin siquiera tener que multiplicar. una máquina diferencial solamente necesita poder restar. A partir de un lazo al siguiente, en nuestro caso, necesita almacenar 2 números (los pasados elementos en la primera y segunda columnas); si deseásemos tabular polinomios de grado n, necesitaríamos suficiente almacenamiento para tener n números.
La máquina diferencial n.º 2 de Babbage, finalmente construida en 1991, podía tener 7 números de 31 dígitos decimales cada uno y por lo tanto podía tabular polinomios de 7.º grado con esa precisión. Las mejores máquinas de Scheutz podían almacenar 4 números con 15 dígitos cada uno.

## Valores iniciales

Los valores iniciales de las columnas pueden ser calculados de la siguiente manera: Primero calculando manualmente N valores consecutivos de la función, y por vuelta Atrás (backtracking), es decir, calculando las diferencias requeridas.
La columna $1_{0}$ consigue el valor de la función al comienzo del cómputo $f(0)$. La columna $2_{0}$ es la diferencia entre $f(1)$ y $f(0)$...

### Uso de derivadas

Un método más general y en muchos casos más útil, es el de calcular los valores iniciales de los valores de las derivadas de la función al inicio del cómputo. Así, cada valor es representado como serie de potencias de diferentes derivadas. Las constantes de las series pueden ser calculadas al expresar primero una función como una serie de Taylor, es decir, una suma de sus derivadas. Fijando 0 como el inicio del cómputo obtenemos las series de Maclaurin
    $\sum _{n=0}^{\infty }{\frac {f^{(n)}(0)}{n!}}(x)^{n}.$
Calculando los valores numéricamente, conseguimos las siguientes representaciones seriales para los valores iniciales de las columnas:
Sean $f,f',f'',f''',f''''...$ los valores de la función y sus derivadas al inicio del cómputo
* Col $1_{0}$ = $f$
* Col $2_{0}$ = $f'+1/2f''+1/6f'''+1/24f''''+1/120f'''''+...$
* Col $3_{0}$ = $f''+f'''+14/24f''''+23/120f'''''+...$
* Col $4_{0}$ = $f'''+36/24f''''+171/120f'''''+...$
* Col $5_{0}$ = $f''''+378/120f'''''+...$

## Efectos Culturales

Esta máquina inspiró a los escritores William Gibson y Bruce Sterling la novela La máquina diferencial. Es una obra de steampunk (vaporpunk), género que no había existido jamás antes de este libro. William Gibson es conocido por su libros de ciberpunk, que exploran historias ficticias o los futuros especulativos que se involucran en las posibilidades de los ordenadores, la red, etc. La premisa de “La máquina diferencial” es "¿qué hubiera pasado si el Reino Unido hubiera desarrollado las máquinas de Charles Babbage para vender en el mercado libre en la mitad del siglo XIX?". Por eso, eligió el nombre steampunk (la potencia de la máquina diferencial se obtenía de una máquina de vapor) para un género nuevo.
Aunque máquina diferencial es el nombre que va en el libro, las hipotéticas máquinas que describe son más parecidas a la posterior máquina analítica de Babbage, y menos limitadas que su predecesora máquina diferencial.