Введение
Автоматический механический калькулятор
роман Уильяма Гибсона и Брюса Стерлинга
the novel by William Gibson and Bruce Sterling
Дифференциальная машина — это автоматический механический калькулятор, предназначенный для табулирования полиномиальных функций. Она была разработана в 1820-х годах и впервые создана Чарльзом Бэббиджем. Название «дифференциальная машина» происходит от метода конечных разностей, способа интерполяции или табулирования функций с использованием небольшого набора полиномиальных коэффициентов. Многие распространенные математические функции, используемые в инженерии, науке и навигации, основаны на логарифмических и тригонометрических функциях, которые можно аппроксимировать полиномами, поэтому дифференциальная машина может вычислять множество полезных таблиц.
История
Понятие механического калькулятора для вычисления математических функций восходит к механизму Антикитеры II века до нашей эры, а ранние современные примеры связывают с Паскалем и Лейбницем в XVII веке. В 1784 году Й. Х. Мюллер, инженер Гессенской армии, сконструировал и построил суммирующую машину и описал базовые принципы машины для вычисления разностей в книге, опубликованной в 1786 году (первое письменное упоминание о машине для вычисления разностей датируется 1784 годом), однако ему не удалось получить финансирование для дальнейшей разработки этой идеи.
Дифференциальные двигатели Чарльза Бэббиджа
Чарльз Бэббидж начал строить небольшой дифференциальный двигатель около 1819 года и завершил его к 1822 году (дифференциальный двигатель 0). Он объявил о своем изобретении 14 июня 1822 года в статье для Королевского астрономического общества под названием «Заметка о применении машин для вычисления астрономических и математических таблиц». Эта машина использовала десятичную систему счисления и приводилась в действие вращением рукоятки. Британское правительство проявило интерес, поскольку составление таблиц было трудоемким и дорогостоящим, и они надеялись, что дифференциальный двигатель сделает эту задачу более экономичной. В 1823 году британское правительство выделило Бэббиджу 1700 фунтов стерлингов для начала работы над проектом. Хотя конструкция Бэббиджа была осуществима, металлообрабатывающие технологии того времени не позволяли экономически изготавливать детали с необходимой точностью и в нужном количестве. Таким образом, реализация оказалась гораздо дороже и ее успех был под большим сомнением, чем предполагалось в первоначальной оценке правительства. Согласно проекту 1830 года для дифференциального двигателя № 1, он должен был состоять примерно из 25 000 деталей, весить 4 тонны и работать с 20-значными числами, используя разности шестого порядка. В 1832 году Бэббидж и Джозеф Клемент создали небольшую рабочую модель (в масштабе одна седьмая от плана), леди Байрон описала увиденный ею рабочий прототип в 1833 году: «В прошлый понедельник мы оба ходили смотреть на мыслящую машину (или, по крайней мере, так кажется). Она возводила несколько чисел во вторую и третью степень и извлекала квадратный корень из квадратного уравнения». Работа над большим двигателем была приостановлена в 1833 году. К тому времени, когда правительство отказалось от проекта в 1842 году, Бэббидж получил и потратил более 17 000 фунтов стерлингов на разработку, но так и не добился создания рабочего двигателя. Правительство оценивало только результат работы машины (экономически произведенные таблицы), а не разработку (с непредсказуемыми затратами) самой машины. Бэббидж отказывался признавать эту проблему. Бэббидж продолжил проектировать свою гораздо более общую аналитическую машину, но позже разработал улучшенную конструкцию «Дифференциального двигателя № 2» (31-значные числа и разности седьмого порядка).
Сьюцианская вычислительная машина
Вдохновленный дифференциальной машиной Бэббиджа, созданной в 1834 году, Пер Георг Шейц построил несколько экспериментальных моделей. В 1837 году его сын Эдвард предложил построить рабочую модель из металла, а в 1840 году завершил вычислительную часть, способную вычислять ряды с 5-значными числами и разностями первого порядка, которая позднее была расширена до третьего порядка (1842). В 1843 году, после добавления печатного устройства, модель была завершена. В 1851 году, при финансовой поддержке правительства, началось строительство более крупной и усовершенствованной машины (с 15-значными числами и разностями четвертого порядка), которое было завершено в 1853 году. Машина была продемонстрирована на Всемирной выставке в Париже в 1855 году, а затем в 1856 году продана обсерватории Дадли в Олбани, штат Нью-Йорк. Поставленная в 1857 году, она стала первым проданным печатным калькулятором. Она имела ту же базовую конструкцию, что и предыдущая, и весила около .
Другие
Мартин Виберг усовершенствовал конструкцию Шейца (ок. 1859 г., его машина имела такую же производительность, как у Шейца: 15 знаков и четвертый порядок), но использовал её только для создания и публикации печатных таблиц (таблицы процентов в 1860 г. и логарифмические таблицы в 1875 г.). Альфред Дикон из Лондона ок. 1862 г. создал небольшую разностную машину (20-значные числа и разности третьего порядка). Американский Джордж Б. Грант начал работу над своей вычислительной машиной в 1869 г., не зная о работах Бэббиджа и Шейца (Шенца). Год спустя (1870 г.) он узнал о разностных машинах и приступил к проектированию собственной, описав её конструкцию в 1871 г. В 1874 г. Бостонский четверговый клуб собрал средства на строительство крупномасштабной модели, которая была построена в 1876 г. Её можно было расширить для повышения точности, и она весила примерно столько же. Христель Хаманн построила одну машину (16 знаков и разности второго порядка) в 1909 г. для "Таблиц Баушингера и Петерса" ("Логарифмические тригонометрические таблицы с восемью десятичными знаками"), которые были впервые опубликованы в Лейпциге в 1910 г. Она весила около… Корпорация Burroughs ок. 1912 г. построила машину для Управления морского альманаха, которая использовалась как разностная машина второго порядка. Позже, в 1929 г., она была заменена на Burroughs Class 11 (13 знаков и разности второго порядка или 11 знаков и [как минимум до] разностей пятого порядка). Александр Джон Томпсон ок. 1927 г. построил интегрирующую и дифференцирующую машину (13 знаков и разности пятого порядка) для своей таблицы логарифмов "Logarithmetica britannica". Эта машина состояла из четырех модифицированных калькуляторов Triumphator. Лесли Комри в 1928 г. описал, как использовать вычислительную машину Brunsviga Dupla в качестве разностной машины второго порядка (15-значные числа). Эта работа привела к тому, что с 1985 по 1991 г. в Музее науки был построен рабочий вычислительный участок разностной машины № 2 под руководством Дорона Свейда, тогдашнего куратора вычислительной техники. Это было сделано в честь 200-летия со дня рождения Бэббиджа в 1991 г. В 2002 г. был завершен и принтер, который Бэббидж первоначально разработал для разностной машины. Преобразование оригинальных чертежей в чертежи, пригодные для использования инженерными производителями, выявило некоторые незначительные ошибки в конструкции Бэббиджа (возможно, внесенные в качестве защиты от кражи планов), которые пришлось исправить. Разностная машина и принтер были построены с допусками, достижимыми с помощью технологий XIX века, что разрешило давние споры о том, могла ли конструкция Бэббиджа работать с использованием инженерных методов георгианской эпохи. Машина состоит из 8000 деталей и весит около 5 тонн. Основное назначение принтера – изготовление стереотипных пластин для использования в печатных машинах, что он делает, вдавливая литеры в мягкую штукатурку для создания формы. Бэббидж намеревался, чтобы результаты машины передавались непосредственно в массовую печать, поскольку он признал, что многие ошибки в предыдущих таблицах были вызваны не вычислительными ошибками, а опечатками в процессе ручного набора. В настоящее время она находится в Intellectual Ventures в Сиэтле, где выставлена рядом с главным лобби.
Christel Hamann built one machine (16 digit numbers and second order differences) in 1909 for the "Tables of Bauschinger and Peters" ("Logarithmic Trigonometrical Tables with eight decimal places"), which was first published in Leipzig in 1910. It weighed about
Burroughs Corporation in about 1912 built a machine for the Nautical Almanac Office which was used as a difference engine of second order. It was later replaced in 1929 by a Burroughs Class 11 (13 digit numbers and second order differences, or 11 digit numbers and [at least up to] fifth order differences). Alexander John Thompson about 1927 built integrating and differencing machine (13 digit numbers and fifth order differences) for his table of logarithms "Logarithmetica britannica". This machine was composed of four modified Triumphator calculators. Leslie Comrie in 1928 described how to use the Brunsviga Dupla calculating machine as a difference engine of second order (15 digit numbers). This work led the Science Museum to construct a working calculating section of difference engine No. 2 from 1985 to 1991, under Doron Swade, the then Curator of Computing. This was to celebrate the 200th anniversary of Babbage's birth in 1991. In 2002, the printer which Babbage originally designed for the difference engine was also completed. The conversion of the original design drawings into drawings suitable for engineering manufacturers' use revealed some minor errors in Babbage's design (possibly introduced as a protection in case the plans were stolen), which had to be corrected. The difference engine and printer were constructed to tolerances achievable with 19th century technology, resolving a long standing debate as to whether Babbage's design could have worked using Georgian era engineering methods. The machine contains 8,000 parts and weighs about 5 tons. The printer's primary purpose is to produce stereotype plates for use in printing presses, which it does by pressing type into soft plaster to create a flong. Babbage intended that the Engine's results be conveyed directly to mass printing, having recognized that many errors in previous tables were not the result of human calculating mistakes but from slips in the manual typesetting process. It has since been transferred to Intellectual Ventures in Seattle where it is on display just outside the main lobby.
Операция
Дифференциальный двигатель состоит из ряда столбцов, пронумерованных от 1 до N. Машина способна хранить одно десятичное число в каждом столбце. Машина может только прибавить значение столбца n + 1 к столбцу n, чтобы получить новое значение в столбце n. Столбец N может хранить только константу, а столбец 1 отображает (и, возможно, печатает) значение вычисления на текущей итерации. Двигатель программируется путем установки начальных значений в столбцы. В столбце 1 устанавливается значение многочлена в начале вычисления. В столбце 2 устанавливается значение, выведенное из первой и высших производных многочлена при том же значении X. Каждый из столбцов от 3 до N устанавливается значением, выведенным из первой и высших производных многочлена.
Время
В конструкции Бэббиджа одна итерация (то есть один полный набор операций сложения и переноса) происходит при каждом обороте главного вала. Нечётные и чётные столбцы поочередно выполняют операцию сложения в каждом цикле. Таким образом, последовательность операций для столбца такова:
Использование деривативов
Многие часто используемые функции являются аналитическими, которые могут быть выражены в виде степенных рядов, например, ряда Тейлора. Начальные значения можно вычислить с любой требуемой точностью; при правильном выполнении вычислений механизм выдаст точные результаты для первых N шагов. После этого механизм будет выдавать лишь приближение функции. Ряд Тейлора представляет функцию в виде суммы, полученной из её производных в одной точке. Для многих функций вычисление высших производных тривиально; например, производные функции синуса в точке 0 равны 0 или 0 для всех порядков. Выбрав 0 в качестве начальной точки вычисления, мы получаем упрощенный ряд Маклорена. Тот же метод вычисления начальных значений по коэффициентам можно использовать и для полиномиальных функций. Полиномиальные постоянные коэффициенты теперь будут иметь значение
The same method of calculating the initial values from the coefficients can be used as for polynomial functions. The polynomial constant coefficients will now have the value
Устройство по кривой
Проблема с описанными выше методами заключается в том, что ошибки будут накапливаться, и ряд будет стремиться расходиться от истинной функции. Решение, гарантирующее постоянную максимальную погрешность, – использование аппроксимации кривой. Вычисляется минимум N значений, равномерно распределенных по диапазону требуемых расчетов. С помощью метода аппроксимации кривой, такого как метод наименьших квадратов с гауссовым весом, находится полиномиальная интерполяция функции степени N−1. Используя полученный оптимизированный многочлен, начальные значения можно рассчитать, как описано выше.