Приветствую Вас, уважаемые Читатели! Сегодня хочу рассказать Вам про довольно занимательный способ вычисления квадратного корня. который применялся в механических арифметических машинах - арифмометрах.
Принцип действия устройства автоматического управления извлечением квадратного корня основан на замечательном свойстве арифметической прогрессии из нечетных чисел:
Сумма n чисел этого ряда равняется n-ому последовательному квадрату! Таким образом можно извлекать квадратный корень посредством вычитания:
Очевидный недостаток этого метода - это огромное количество операций вычитания при увеличении числа. Например, чтобы извлечь квадратный корень из 10000, потребуется 100 промежуточных ходов.
Естественно для экономии вычислительных мощностей необходимо было модернизировать алгоритм, поэтому инженеры-математики придумали делить число на грани по две цифры. Давайте рассмотрим "ручной" пример для понимания:
Знаки слева от запятой делим на грани справа - налево, а справа от запятой - слева-направо. Рассмотрим первые два шага:
Когда я пишу цифры и символы в кавычках, я подразумевая конкатенацию (склеивание) - фактически перенос разряда. Количество вычитаний является первой и второй значащей цифрой результата. Дальше всё по аналогии:
Интересное видим только на шаге 5, где мы ни разу не можем вычесть. В таком случае мы пишем в ответ "0" и продолжаем, добавляя "00", так как мы уже перебрали все цифры числа 56789,321. Итоговый результат:
Его точность — 6 значащих цифр, при затратах в 21 вычитание.
В книге "Вычислительные машины" (1957) - одной из самых полных советских книг по механическим вычислительным машинам подробно описано устройство основных узлов большинства типов машин, описана классификация вычислительных устройств и приведены алгоритмы вычисления, в т.ч квадратных корней.
Наряду с приведенным алгоритмом, там отмечено, что упростить устройство вычисления квадратного корня можно, предварительно умножив число на 5. В таком случае нет необходимости в устройстве формирования ряда нечетных чисел и их корректировки после сдвига разряда (конкатенация, которую я делал на каждом шаге).
Выигрыша алгоритмического фактически нет, ведь добавлены дополнительные (но простые!) элементы для умножения на 5. Однако, схемотехнически машина стала проще и надежнее. Спасибо за внимание!