Разностная машина — это автоматический механический калькулятор , предназначенный для табулирования полиномиальных функций. Он был спроектирован в 1820-х годах и впервые создан Чарльзом Бэббиджем . Механизм различия названий основан на методе разделенных разностей — способе интерполяции или табулирования функций с использованием небольшого набора полиномиальных коэффициентов. Некоторые из наиболее распространенных математических функций, используемых в технике, науке и навигации, построены на основе логарифмических и тригонометрических функций , которые можно аппроксимировать полиномами, поэтому разностная машина может вычислять множество полезных таблиц .
Идея механического калькулятора для математических функций восходит к антикиферскому механизму II века до нашей эры, а ранние современные примеры приписываются Паскалю и Лейбницу в 17 веке.
В 1784 году И. Х. Мюллер , инженер гессенской армии , изобрел и построил счетную машину и описал основные принципы работы разностной машины в книге, изданной в 1786 году (первое письменное упоминание о разностной машине датировано 1784 годом), но он не смог получить финансирование для реализации этой идеи. [1] [2] [3]
Чарльз Бэббидж начал конструировать небольшую разностную машину в ок. 1819 г. [4] и завершил его к 1822 г. (Разностная машина 0). [5] Он объявил о своем изобретении 14 июня 1822 года в докладе Королевскому астрономическому обществу , озаглавленном «Заметка о применении машин для вычисления астрономических и математических таблиц». [6] Эта машина использовала десятичную систему счисления и приводилась в действие поворотом ручки. Британское правительство было заинтересовано, поскольку создание таблиц требовало много времени и денег, и они надеялись, что разностная машина сделает задачу более экономичной. [7]
В 1823 году британское правительство выделило Бэббиджу 1700 фунтов стерлингов на начало работы над проектом. Хотя конструкция Бэббиджа была осуществима, методы металлообработки той эпохи не позволяли экономично производить детали необходимой точности и количества. Таким образом, реализация оказалась гораздо более дорогостоящей и сомнительной в успехе, чем первоначальная оценка правительства. Согласно проекту разностной машины № 1, разработанному в 1830 году, она должна была состоять из 25 000 деталей, весить 4 тонны [ 8] и работать с 20-значными числами с разностью шестого порядка. В 1832 году Бэббидж и Джозеф Клемент создали небольшую рабочую модель (одну седьмую плана) [5] , которая оперировала шестизначными числами с помощью разностей второго порядка. [9] [10] Леди Байрон описала, как видела работающий прототип в 1833 году: «Мы оба пошли посмотреть на думающую машину (по крайней мере, так кажется) в прошлый понедельник. Она возвела несколько чисел во 2-ю и 3-ю степени и извлекла корень. квадратного уравнения». [11] Работа над более крупным двигателем была приостановлена в 1833 году.
К тому времени, когда правительство отказалось от проекта в 1842 году, [10] [12] Бэббидж получил и потратил более 17 000 фунтов стерлингов на разработку, которая все еще не позволяла создать работающий двигатель. Правительство ценило только производительность машины (экономно производимые таблицы), а не развитие (с непредсказуемыми затратами) самой машины. Бэббидж отказался признать это затруднительное положение. [7] Тем временем внимание Бэббиджа переключилось на разработку аналитической машины , что еще больше подорвало уверенность правительства в конечном успехе разностной машины. Улучшив эту концепцию как аналитическую машину, Бэббидж сделал концепцию разностной машины устаревшей, а проект по ее реализации оказался полным провалом, по мнению правительства. [7]
Неполная разностная машина № 1 была выставлена на всеобщее обозрение на Международной выставке 1862 года в Южном Кенсингтоне , Лондон. [13] [14]
Бэббидж продолжил разработку своей гораздо более общей аналитической машины, но позже в период с 1846 по 1849 год разработал улучшенную конструкцию «Разностной машины № 2» (31-значные числа и разности седьмого порядка) [9]. Преимущество идей, разработанных для аналитической машины, заключается в том, чтобы новая разностная машина выполняла вычисления быстрее, используя меньшее количество деталей. [15] [16]
Вдохновленный разностной машиной Бэббиджа в 1834 году, Пер Георг Шойц построил несколько экспериментальных моделей. В 1837 году его сын Эдвард предложил сконструировать действующую модель из металла, а в 1840 году закончил счетную часть, способную вычислять ряды с пятизначными числами и разностями первого порядка, которые позже были расширены до третьего порядка (1842 г.). В 1843 году, после добавления печатной части, модель была завершена.
В 1851 году на средства правительства началось строительство более крупной и улучшенной машины (15-значные числа и различия четвертого порядка), которая завершилась в 1853 году. Машина была продемонстрирована на Всемирной выставке в Париже в 1855 году, а затем продана в 1856 году. в обсерваторию Дадли в Олбани, штат Нью-Йорк . Поставленный в 1857 году, это был первый проданный печатный калькулятор. [17] [18] [19] В 1857 году британское правительство заказало следующую разностную машину Шойца , которая была построена в 1859 году. [20] [21] Она имела ту же базовую конструкцию, что и предыдущая, и весила около 10 центнеров (1100 центнеров). фунт ; 510 кг ). [19]
Мартин Виберг усовершенствовал конструкцию Шойца (ок. 1859 г., его машина имеет ту же мощность, что и машина Шейца: 15-значный и четвертый порядок), но использовал свое устройство только для производства и публикации печатных таблиц (процентных таблиц в 1860 г. и логарифмических таблиц в 1875 г.) . [22]
Альфред Дикон из Лондона в ок. В 1862 году была создана малоразностная машина (20-значные числа и разности третьего порядка). [17] [23]
Американец Джордж Б. Грант начал работать над своей счетной машиной в 1869 году, не зная о работах Бэббиджа и Шойца (Шенца). Год спустя (1870 г.) он узнал о разностных двигателях и приступил к их проектированию самостоятельно, описав свою конструкцию в 1871 году. В 1874 году Бостонский клуб четвергов собрал подписку на постройку крупномасштабной модели, которая была построена в 1876 году. можно было расширить для повышения точности, и он весил около 2000 фунтов (910 кг). [23] [24] [25]
Кристель Хаманн построил одну машину (16-значные числа и разности второго порядка) в 1909 году для «Таблиц Баушингера и Петерса» («Логарифмически-тригонометрические таблицы с восемью десятичными знаками»), которые были впервые опубликованы в Лейпциге в 1910 году. весил около 40 килограммов (88 фунтов). [26] [27] [28]
Примерно в 1912 году корпорация Берроуз построила машину для Морского альманаха , которая использовалась в качестве разностной машины второго порядка. [29] : 451 [30] Позже в 1929 году он был заменен классом Берроуза 11 (13-значные числа и разности второго порядка или 11-значные числа и [по крайней мере до] разности пятого порядка). [31]
Александр Джон Томпсон около 1927 года построил интегрирующую и разностную машину (13-значные числа и разности пятого порядка) для своей таблицы логарифмов «Logarithmetica britannica». Эта машина состояла из четырех модифицированных калькуляторов Triumphator. [32] [33] [34]
Лесли Комри в 1928 году описал, как использовать счетную машину Брунсвига -Дупла в качестве разностной машины второго порядка (15-значных чисел). [29] В 1931 году он также отметил, что Национальная бухгалтерская машина класса 3000 может использоваться в качестве разностной машины шестого порядка. [23] : 137–138.
В 1980-е годы Аллан Дж. Бромли , доцент Сиднейского университета , Австралия , изучал оригинальные рисунки Бэббиджа для разностных и аналитических машин в библиотеке Музея науки в Лондоне. [35] Эта работа привела к тому, что Музей науки построил действующую вычислительную секцию разностной машины № 2 с 1985 по 1991 год под руководством Дорона Свейда , тогдашнего куратора вычислительной техники. Это было сделано в честь 200-летия со дня рождения Бэббиджа в 1991 году. В 2002 году был также завершен принтер , который Бэббидж первоначально разработал для разностной машины. [36] Преобразование оригинальных проектных чертежей в чертежи, подходящие для использования производителями техники, выявило некоторые незначительные ошибки в конструкции Бэббиджа (возможно, введенные в качестве защиты на случай кражи планов), [37] которые пришлось исправить. Разностная машина и принтер были сконструированы с допусками, достижимыми с помощью технологий XIX века, что разрешило давнюю дискуссию о том, могла ли конструкция Бэббиджа работать с использованием инженерных методов георгианской эпохи. Машина содержит 8000 деталей и весит около 5 тонн. [38]
Основная цель принтера — изготовление стереотипных пластин для использования в печатных станках, что достигается путем вдавливания шрифта в мягкий гипс для создания лонга . Бэббидж намеревался передать результаты Машины непосредственно в массовую печать, осознавая, что многие ошибки в предыдущих таблицах были не результатом человеческих ошибок в расчетах, а ошибками в процессе ручного набора текста . [7] Вывод бумаги принтером — это, главным образом, средство проверки работы двигателя.
Помимо финансирования строительства выходного механизма для разностной машины Музея науки, Натан Мирвольд заказал строительство второй полной разностной машины № 2, которая с мая 2008 года выставлялась в Музее истории компьютеров в Маунтин-Вью, Калифорния . Январь 2016 г. [38] [39] [40] [41] С тех пор он был передан Intellectual Ventures в Сиэтле , где выставлен на обозрение недалеко от главного вестибюля. [ нужна цитата ]
Разностная машина состоит из ряда столбцов, пронумерованных от 1 до N. Машина способна хранить одно десятичное число в каждом столбце. Машина может только добавить значение столбца n + 1 к столбцу n , чтобы получить новое значение n . Столбец N может хранить только константу, столбец 1 отображает (и, возможно, печатает ) значение вычисления на текущей итерации .
Программирование двигателя осуществляется путем установки в столбцы начальных значений. В столбце 1 установлено значение полинома в начале вычислений. В столбце 2 установлено значение, полученное из первой и высших производных полинома при том же значении X. Каждому из столбцов от 3 до N присваивается значение, полученное из первой и высших производных полинома. [42]
В конструкции Бэббиджа одна итерация (т.е. один полный набор операций сложения и переноса ) происходит для каждого вращения главного вала. Нечетные и четные столбцы поочередно выполняют сложение за один цикл. Последовательность операций для столбца следующая: [42]
Шаги 1,2,3,4 выполняются для каждого нечетного столбца, а шаги 3,4,1,2 — для каждого четного столбца.
Хотя в оригинальной конструкции Бэббиджа кривошип располагался непосредственно на главном валу, позже выяснилось, что сила, необходимая для проворачивания машины, была бы слишком велика, чтобы человек мог с ней комфортно справиться. Таким образом, две построенные модели оснащены понижающей передачей 4:1 на кривошипе, и для выполнения одного полного цикла требуется четыре оборота кривошипа.
Каждая итерация создает новый результат и выполняется за четыре шага, соответствующие четырем полным поворотам ручки, показанной в крайнем правом углу на рисунке ниже. Четыре шага:
Движок представляет отрицательные числа в виде дополнения до десяти . Вычитание представляет собой сложение отрицательного числа. Это работает так же, как современные компьютеры выполняют вычитание, известное как дополнение до двух .
Принцип разностной машины — это метод разделенных разностей Ньютона . Если начальное значение полинома (и его конечных разностей ) вычисляется каким-либо образом для некоторого значения X , разностная машина может вычислить любое количество близлежащих значений, используя метод, широко известный как метод конечных разностей . Например, рассмотрим квадратичный многочлен
с целью табулирования значений p (0), p (1), p (2), p (3), p (4) и т.д. Таблица ниже построена следующим образом: второй столбец содержит значения полинома, третий столбец содержит разности двух левых соседей во втором столбце, а четвертый столбец содержит разности двух соседей в третьем столбце:
Числа в третьем столбце значений являются постоянными. Фактически, начиная с любого многочлена степени n , номер столбца n + 1 всегда будет постоянным. Это решающий факт, лежащий в основе успеха метода.
Эта таблица была построена слева направо, но можно продолжить ее построение справа налево по диагонали, чтобы вычислить больше значений. Для расчета p (5) используйте значения с нижней диагонали. Начните со значения константы четвертого столбца, равного 4, и скопируйте его вниз по столбцу. Затем продолжите третий столбец, прибавив 4 к 11, чтобы получить 15. Затем продолжите второй столбец, взяв предыдущее значение 22 и добавив 15 из третьего столбца. Таким образом, p (5) равно 22 + 15 = 37. Чтобы вычислить p (6), мы повторяем тот же алгоритм для значений p (5): берем 4 из четвертого столбца, добавляем это к значению 15 в третьем столбце, чтобы получите 19, затем добавьте это к значению второго столбца 37, чтобы получить 56, что равно p (6). Этот процесс можно продолжать до бесконечности . Значения полинома получаются без необходимости умножения. Разностную машину нужно только уметь добавлять. От одного цикла к другому необходимо сохранить два числа — в этом примере (последние элементы в первом и втором столбцах). Чтобы табулировать полиномы степени n , необходимо достаточно места для хранения n чисел.
Разностная машина Бэббиджа № 2, наконец построенная в 1991 году, может хранить 8 чисел по 31 десятичный знак каждое и, таким образом, может табулировать полиномы 7-й степени с такой точностью. Лучшие машины Scheutz могли хранить 4 числа по 15 цифр в каждом. [43]
Начальные значения столбцов можно рассчитать, сначала вычислив вручную N последовательных значений функции и выполняя обратный поиск (т. е. вычислив необходимые разности).
Col получает значение функции в начале вычисления . Кол - разница между и ... [44]
Если вычисляемая функция является полиномиальной функцией , выраженной как
начальные значения могут быть рассчитаны непосредственно из постоянных коэффициентов a 0 , a 1 , a 2 , ..., n без вычисления каких-либо точек данных. Таким образом, первоначальные значения:
Многие обычно используемые функции являются аналитическими функциями , которые могут быть выражены в виде степенных рядов , например, в виде ряда Тейлора . Начальные значения могут быть рассчитаны с любой степенью точности; если все сделано правильно, двигатель выдаст точные результаты для первых N шагов. После этого движок выдаст лишь приближение функции.
Ряд Тейлора выражает функцию как сумму, полученную от ее производных в одной точке. Для многих функций получить высшие производные тривиально; например, синусоидальная функция в точке 0 имеет значения 0 или для всех производных. Установив 0 в качестве начала вычислений, мы получим упрощенный ряд Маклорена.
Можно использовать тот же метод вычисления начальных значений по коэффициентам, что и для полиномиальных функций. Постоянные коэффициенты полинома теперь будут иметь значение
Проблема с описанными выше методами заключается в том, что ошибки будут накапливаться, и ряд будет иметь тенденцию отклоняться от истинной функции. Решением, гарантирующим постоянную максимальную ошибку, является использование аппроксимации кривой . Минимум N значений рассчитывается равномерно в диапазоне желаемых вычислений. Используя метод подбора кривой, такой как редукция по Гауссу, находится полиномиальная интерполяция функции N -1-й степени . [44] С помощью оптимизированного полинома начальные значения можно рассчитать, как указано выше.
В WikiSource, а также перепечатано в
«Произведениях Чарльза Бэббиджа»,
том 2, стр. 119 и далее.