Un motor de diferencias es una calculadora mecánica automática diseñada para tabular funciones polinómicas . Fue diseñado en la década de 1820 y creado por primera vez por Charles Babbage . El nombre del motor de diferencia se deriva del método de diferencias divididas , una forma de interpolar o tabular funciones mediante el uso de un pequeño conjunto de coeficientes polinomiales. Algunas de las funciones matemáticas más comunes utilizadas en ingeniería, ciencia y navegación se construyen a partir de funciones logarítmicas y trigonométricas , que pueden aproximarse mediante polinomios, por lo que un motor de diferencias puede calcular muchas tablas útiles .
La noción de una calculadora mecánica para funciones matemáticas se remonta al mecanismo de Antikythera del siglo II a. C., mientras que los primeros ejemplos modernos se atribuyen a Pascal y Leibniz en el siglo XVII.
En 1784, JH Müller , un ingeniero del ejército de Hesse , ideó y construyó una máquina sumadora y describió los principios básicos de una máquina de diferencias en un libro publicado en 1786 (la primera referencia escrita a una máquina de diferencias data de 1784), pero no pudo obtener financiación para avanzar con la idea. [1] [2] [3]
Charles Babbage comenzó a construir un motor de pequeña diferencia en c. 1819 [4] y lo había completado en 1822 (motor de diferencia 0). [5] Anunció su invento el 14 de junio de 1822, en un artículo dirigido a la Royal Astronomical Society , titulado "Nota sobre la aplicación de maquinaria al cálculo de tablas astronómicas y matemáticas". [6] Esta máquina utilizaba el sistema numérico decimal y funcionaba girando una manija. El gobierno británico estaba interesado, ya que producir mesas requería mucho tiempo y era costoso, y esperaban que el motor diferencial hiciera la tarea más económica. [7]
En 1823, el gobierno británico le dio a Babbage 1.700 libras esterlinas para comenzar a trabajar en el proyecto. Aunque el diseño de Babbage era factible, las técnicas de trabajo de metales de la época no podían fabricar piezas de manera económica con la precisión y cantidad requeridas. Por lo tanto, la implementación resultó ser mucho más costosa y de dudoso éxito que la estimación inicial del gobierno. Según el diseño de 1830 para el motor diferencial nº 1, tendría alrededor de 25.000 piezas, pesaría 4 toneladas , [8] y funcionaría con números de 20 dígitos mediante diferencias de sexto orden. En 1832, Babbage y Joseph Clement produjeron un pequeño modelo funcional (una séptima parte del plan), [5] que operaba con números de 6 dígitos mediante diferencias de segundo orden. [9] [10] Lady Byron describió haber visto el prototipo funcional en 1833: "Ambos fuimos a ver la máquina pensante (o eso parece) el lunes pasado. Elevó varios números a la segunda y tercera potencia, y extrajo la raíz de una ecuación cuadrática." [11] Los trabajos en el motor más grande se suspendieron en 1833.
Cuando el gobierno abandonó el proyecto en 1842, [10] [12] Babbage había recibido y gastado más de 17.000 libras esterlinas en el desarrollo, lo que aún no alcanzaba para lograr un motor que funcionara. El gobierno valoraba sólo la producción de la máquina (mesas producidas económicamente), no el desarrollo (a un costo impredecible) de la máquina en sí. Babbage se negó a reconocer esa situación. [7] Mientras tanto, la atención de Babbage se había centrado en desarrollar un motor analítico , socavando aún más la confianza del gobierno en el éxito final del motor diferencial. Al mejorar el concepto como motor analítico, Babbage había dejado obsoleto el concepto del motor de diferenciación, y el proyecto para implementarlo había sido un completo fracaso desde el punto de vista del gobierno. [7]
La máquina diferencial número 1 incompleta se exhibió al público en la Exposición Internacional de 1862 en South Kensington , Londres. [13] [14]
Babbage pasó a diseñar su motor analítico mucho más general, pero luego produjo un diseño mejorado del "Motor de Diferencias No. 2" (números de 31 dígitos y diferencias de séptimo orden), [9] entre 1846 y 1849. Babbage pudo tomar Aproveche las ideas desarrolladas para el motor analítico para hacer que el nuevo motor diferencial calcule más rápidamente utilizando menos piezas. [15] [16]
Inspirándose en el motor diferencial de Babbage en 1834, Per Georg Scheutz construyó varios modelos experimentales. En 1837 su hijo Edward propuso construir un modelo funcional en metal, y en 1840 terminó la parte de cálculo, capaz de calcular series con números de 5 dígitos y diferencias de primer orden, que luego se amplió a tercer orden (1842). En 1843, tras añadir la parte de impresión, se completó el modelo.
En 1851, financiada por el gobierno, comenzó la construcción de una máquina más grande y mejorada (números de 15 dígitos y diferencias de cuarto orden), que terminó en 1853. La máquina se demostró en la Exposición Universal de París de 1855 y luego se vendió en 1856. al Observatorio Dudley en Albany, Nueva York . Entregada en 1857, fue la primera calculadora de impresión vendida. [17] [18] [19] En 1857, el gobierno británico encargó la siguiente máquina diferencial de Scheutz , que se construyó en 1859. [20] [21] Tenía la misma construcción básica que la anterior, con un peso de alrededor de 10 cwt (1100 libras ; 510 kg ). [19]
Martin Wiberg mejoró la construcción de Scheutz ( c. 1859 , su máquina tiene la misma capacidad que la de Scheutz: 15 dígitos y de cuarto orden) pero utilizó su dispositivo sólo para producir y publicar tablas impresas (tablas de interés en 1860 y tablas logarítmicas en 1875). . [22]
Alfred Deacon de Londres en c. 1862 produjo un motor de pequeñas diferencias (números de 20 dígitos y diferencias de tercer orden). [17] [23]
El estadounidense George B. Grant empezó a trabajar en su máquina calculadora en 1869, sin conocer los trabajos de Babbage y Scheutz (Schentz). Un año más tarde (1870) conoció los diferentes motores y procedió a diseñar uno él mismo, describiendo su construcción en 1871. En 1874, el Boston Thursday Club obtuvo una suscripción para la construcción de un modelo a gran escala, que se construyó en 1876. podía ampliarse para mejorar la precisión y pesaba alrededor de 2000 libras (910 kg). [23] [24] [25]
Christel Hamann construyó en 1909 una máquina (números de 16 dígitos y diferencias de segundo orden) para las "Tablas de Bauschinger y Peters" ("Tablas logarítmico-trigonométricas con ocho decimales"), que se publicó por primera vez en Leipzig en 1910. Pesaba unos 40 kilogramos (88 libras). [26] [27] [28]
Burroughs Corporation construyó alrededor de 1912 una máquina para la Oficina del Almanaque Náutico que se utilizó como motor diferencial de segundo orden. [29] : 451 [30] Posteriormente fue reemplazado en 1929 por un Burroughs Clase 11 (números de 13 dígitos y diferencias de segundo orden, o números de 11 dígitos y [al menos hasta] diferencias de quinto orden). [31]
Alexander John Thompson construyó alrededor de 1927 una máquina integradora y diferenciadora (números de 13 dígitos y diferencias de quinto orden) para su tabla de logaritmos "Logarithmetica britannica". Esta máquina estaba compuesta por cuatro calculadoras Triumphator modificadas. [32] [33] [34]
Leslie Comrie describió en 1928 cómo utilizar la máquina calculadora Brunsviga -Dupla como motor diferencial de segundo orden (números de 15 dígitos). [29] También señaló en 1931 que la máquina de contabilidad nacional Clase 3000 podría usarse como motor diferencial de sexto orden. [23] : 137-138
Durante la década de 1980, Allan G. Bromley , profesor asociado de la Universidad de Sydney , Australia , estudió los dibujos originales de Babbage para las Máquinas Diferenciales y Analíticas en la biblioteca del Museo de Ciencias de Londres. [35] Este trabajo llevó al Museo de Ciencias a construir una sección de cálculo funcional del motor diferencial No. 2 de 1985 a 1991, bajo la dirección de Doron Swade , el entonces curador de Computación. Esto fue para celebrar el 200 aniversario del nacimiento de Babbage en 1991. En 2002, también se completó la impresora que Babbage diseñó originalmente para el motor diferencial. [36] La conversión de los dibujos de diseño originales en dibujos adecuados para el uso de los fabricantes de ingeniería reveló algunos errores menores en el diseño de Babbage (posiblemente introducidos como protección en caso de que los planos fueran robados), [37] que tuvieron que corregirse. El motor diferencial y la impresora se construyeron con las tolerancias alcanzables con la tecnología del siglo XIX, lo que resolvió un debate de larga data sobre si el diseño de Babbage podría haber funcionado utilizando métodos de ingeniería de la era georgiana. La máquina contiene 8.000 piezas y pesa unas 5 toneladas. [38]
El objetivo principal de la impresora es producir placas estereotipadas para su uso en imprentas, lo que hace presionando los tipos en yeso blando para crear un flong . Babbage tenía la intención de que los resultados del motor se transmitieran directamente a la impresión masiva, habiendo reconocido que muchos errores en tablas anteriores no eran el resultado de errores de cálculo humanos sino de deslices en el proceso de composición tipográfica manual . [7] La salida de papel de la impresora es principalmente un medio para comprobar el rendimiento del motor.
Además de financiar la construcción del mecanismo de salida para el motor diferencial del Museo de Ciencias, Nathan Myhrvold encargó la construcción de un segundo motor diferencial número 2 completo, que estuvo en exhibición en el Museo de Historia de la Computación en Mountain View, California , de mayo de 2008 a Enero de 2016. [38] [39] [40] [41] Desde entonces, se transfirió a Intellectual Ventures en Seattle , donde se exhibe justo afuera del vestíbulo principal. [42] [43] [44]
El motor de diferencias consta de varias columnas, numeradas del 1 al N. La máquina es capaz de almacenar un número decimal en cada columna. La máquina solo puede sumar el valor de una 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 muestra (y posiblemente imprime ) el valor del cálculo en la iteración actual .
El motor se programa estableciendo valores iniciales en las columnas. La columna 1 se establece en el valor del polinomio al inicio del cálculo. La columna 2 se establece en un valor derivado de la primera y superior derivada del polinomio en el mismo valor de X. Cada una de las columnas de 3 a N se establece en un valor derivado de la primera y superior derivada del polinomio. [45]
En el diseño de Babbage, ocurre una iteración (es decir, un conjunto completo de operaciones de suma y acarreo ) por cada rotación del eje principal. Las columnas pares e impares realizan alternativamente una suma en un ciclo. La secuencia de operaciones para la columna es así: [45]
Los pasos 1,2,3,4 ocurren para cada columna impar, mientras que los pasos 3,4,1,2 ocurren para cada columna par.
Si bien el diseño original de Babbage colocaba la manivela directamente sobre el eje principal, más tarde se descubrió que la fuerza requerida para hacer girar la máquina habría sido demasiado grande para que un humano la manejara cómodamente. Por lo tanto, los dos modelos que se construyeron incorporan un engranaje reductor 4:1 en la manivela y se requieren cuatro revoluciones de la manivela para realizar un ciclo completo.
Cada iteración crea un nuevo resultado y se logra en cuatro pasos correspondientes a cuatro vueltas completas del mango que se muestra en el extremo derecho de la imagen siguiente. Los cuatro pasos son:
El motor representa los números negativos como complementos a diez . La resta equivale a la suma de un número negativo. Esto funciona de la misma manera que las computadoras modernas realizan la resta, conocida como complemento a dos .
El principio de una máquina de diferencias es el método de diferencias divididas de Newton . Si el valor inicial de un polinomio (y de sus diferencias finitas ) se calcula por algún medio para algún valor de X , el motor de diferencias puede calcular cualquier número de valores cercanos, utilizando el método generalmente conocido como método de diferencias finitas . Por ejemplo, considere el polinomio cuadrático
con el objetivo de tabular los valores p (0), p (1), p (2), p (3), p (4), etc. La siguiente tabla se construye de la siguiente manera: la segunda columna contiene los valores del polinomio, la tercera columna contiene las diferencias de los dos vecinos izquierdos en la segunda columna y la cuarta columna contiene las diferencias de los dos vecinos en la tercera columna:
Los números en la tercera columna de valores son constantes. De hecho, al comenzar con cualquier polinomio de grado n , el número de columna n + 1 siempre será constante. Este es el hecho crucial detrás del éxito del método.
Esta tabla se construyó de izquierda a derecha, pero es posible continuar construyéndola de derecha a izquierda en diagonal para calcular más valores. Para calcular p (5) utilice los valores de la diagonal más baja. Comience con el valor constante de 4 de la cuarta columna y cópielo en la columna. Luego continúa con la tercera columna sumando 4 a 11 para obtener 15. Luego continúa con la segunda columna tomando su valor anterior, 22 y sumando el 15 de la tercera columna. Por lo tanto, p (5) es 22 + 15 = 37. Para calcular p (6), iteramos el mismo algoritmo en los valores de p (5): toma 4 de la cuarta columna, agrégalo al valor 15 de la tercera columna para obtenga 19, luego agréguelo al valor 37 de la segunda columna para obtener 56, que es p (6). Este proceso puede continuar hasta el infinito . Los valores del polinomio se obtienen sin tener que multiplicar nunca. Un motor de diferencia sólo necesita poder sumar. De un bucle al siguiente, necesita almacenar 2 números; en este ejemplo (los últimos elementos de la primera y segunda columnas). Para tabular polinomios de grado n , se necesita suficiente almacenamiento para contener n números.
El motor diferencial número 2 de Babbage, finalmente construido en 1991, puede contener 8 números de 31 dígitos decimales cada uno y, por lo tanto, puede tabular polinomios de séptimo grado con esa precisión. Las mejores máquinas de Scheutz podían almacenar 4 números de 15 dígitos cada uno. [46]
Los valores iniciales de las columnas se pueden calcular calculando primero manualmente N valores consecutivos de la función y retrocediendo ( es decir, calculando las diferencias requeridas).
Col obtiene el valor de la función al inicio del cálculo . Col es la diferencia entre y ... [47]
Si la función a calcular es una función polinómica , expresada como
Los valores iniciales se pueden calcular directamente a partir de los coeficientes constantes a 0 , a 1 , a 2 , ..., an sin calcular ningún punto de datos. Los valores iniciales son así:
Muchas funciones comúnmente utilizadas son funciones analíticas , que pueden expresarse como series de potencias , por ejemplo como series de Taylor . Los valores iniciales se pueden calcular con cualquier grado de precisión; Si se hace correctamente, el motor dará resultados exactos para los primeros N pasos. Después de eso, el motor sólo dará una aproximación de la función.
La serie de Taylor expresa la función como una suma obtenida de sus derivadas en un punto. Para muchas funciones, las derivadas superiores son triviales de obtener; por ejemplo, la función seno en 0 tiene valores de 0 o para todas las derivadas. Al establecer 0 como inicio del cálculo, obtenemos la serie de Maclaurin simplificada.
Se puede utilizar el mismo método para calcular los valores iniciales a partir de los coeficientes que para las funciones polinomiales. Los coeficientes de la constante polinómica ahora tendrán el valor
El problema con los métodos descritos anteriormente es que los errores se acumularán y la serie tenderá a divergir de la función verdadera. Una solución que garantiza un error máximo constante es utilizar el ajuste de curvas . Se calcula un mínimo de N valores espaciados uniformemente a lo largo del rango de los cálculos deseados. Utilizando una técnica de ajuste de curvas como la reducción gaussiana, se encuentra una interpolación polinómica de grado N −1 de la función. [47] Con el polinomio optimizado, los valores iniciales se pueden calcular como se indica arriba.
En WikiSource y también reimpreso en
The works of Charles Babbage,
Vol 2, p.119ff