Простафаэрезис (от греч. προσθαφαίρεσις ) — алгоритм, использовавшийся в конце XVI и начале XVII века для приблизительного умножения и деления с использованием формул из тригонометрии . В течение 25 лет, предшествовавших изобретению логарифма в 1614 году, это был единственный известный общеприменимый способ быстрого приближения произведений. Его название происходит от греческого prosthen (πρόσθεν), что означает прежде, и aphaeresis (ἀφαίρεσις), что означает отнятие или вычитание. [1] [2] [3]
В древности этот термин использовался для обозначения сокращения, чтобы привести видимое место движущейся точки или планеты к среднему месту (см. Уравнение центра ). Николай Коперник несколько раз упоминает «простаферезис» в своей работе 1543 года «О вращении небесных тел» , имея в виду «большой параллакс», вызванный смещением наблюдателя из-за годового движения Земли.
В Европе XVI века небесная навигация кораблей в дальних плаваниях в значительной степени опиралась на эфемериды для определения их положения и курса. Эти объемные карты, подготовленные астрономами, подробно описывали положение звезд и планет в различные моменты времени. Модели, используемые для их вычисления, основывались на сферической тригонометрии , которая связывает углы и длины дуг сферических треугольников (см. диаграмму справа) с помощью таких формул, как
и
где a , b и c — углы, образованные в центре сферы соответствующими дугами.
Когда одна величина в такой формуле неизвестна, а другие известны, неизвестную величину можно вычислить с помощью серии умножений, делений и поиска в тригонометрической таблице. Астрономам пришлось сделать тысячи таких вычислений, и поскольку лучшим доступным методом умножения было длинное умножение , большую часть этого времени тратили на утомительное перемножение продуктов.
Математики, особенно те, кто также были астрономами, искали более простой путь, и тригонометрия была одной из самых продвинутых и знакомых областей для этих людей. Простаферезис появился в 1580-х годах, но его создатель точно не известен; [4] среди его авторов были математики Ибн Юнис , Иоганнес Вернер , Пауль Виттих , Йост Бюрги , Христофор Клавиус и Франсуа Виет . Виттих, Ибн Юнис и Клавиус были астрономами, и все они были приписаны различными источниками как изобретатели этого метода. Его наиболее известным сторонником был Тихо Браге , который широко использовал его для астрономических расчетов, таких как описанные выше. Его также использовал Джон Непер , которому приписывают изобретение логарифмов, которые вытеснили его.
Тригонометрические тождества , используемые простефаэрезисом, связывают произведения тригонометрических функций с суммами. Они включают в себя следующее:
Первые две из них, как полагают, были получены Йостом Бюрги , [ нужна цитата ] который связал их с [Тихо?] Браге; [ нужна цитата ] остальные легко следуют из этих двух. Если обе стороны умножить на 2, эти формулы также называются формулами Вернера .
Используя вторую формулу выше, метод умножения двух чисел работает следующим образом:
Например, чтобы умножить и :
Если нам нужно произведение косинусов двух начальных значений, что полезно в некоторых астрономических расчетах, упомянутых выше, то это на удивление еще проще: необходимы только шаги 3 и 4, описанные выше.
Для деления мы используем определение секанса как величины, обратной косинусу. Для деления на мы масштабируем числа до и . Теперь — косинус . Используя таблицу секансов , мы находим — секанс . Это означает, что , и поэтому мы можем умножить, используя вышеописанную процедуру. Усредним косинус суммы углов , с косинусом их разности ,
Масштабирование для нахождения десятичной точки дает приблизительный ответ: .
Алгоритмы, использующие другие формулы, похожи, но каждый из них использует разные таблицы (синус, обратный синус, косинус и обратный косинус) в разных местах. Первые два являются самыми простыми, поскольку для каждого из них требуется только две таблицы. Однако использование второй формулы имеет уникальное преимущество: если доступна только таблица косинусов, ее можно использовать для оценки обратных косинусов путем поиска угла с ближайшим значением косинуса.
Обратите внимание, насколько алгоритм выше похож на процесс умножения с использованием логарифмов, который следует следующим шагам: уменьшить масштаб, взять логарифмы, сложить, взять обратный логарифм, увеличить масштаб. Неудивительно, что создатели логарифмов использовали простеаферезис. Действительно, эти два метода тесно связаны математически. В современных терминах простеаферезис можно рассматривать как основанный на логарифме комплексных чисел, в частности на формуле Эйлера
Если все операции выполняются с высокой точностью, то произведение может быть настолько точным, насколько это необходимо. Хотя суммы, разности и средние значения легко вычислить с высокой точностью, даже вручную, тригонометрические функции и особенно обратные тригонометрические функции — нет. По этой причине точность метода во многом зависит от точности и детализации используемых тригонометрических таблиц.
Например, таблица синусов с записью для каждого градуса может быть неточной на целых 0,0087, если мы просто округлим угол до ближайшего градуса ; каждый раз, когда мы удваиваем размер таблицы (например, давая записи для каждой половины градуса вместо каждого градуса), мы уменьшаем эту ошибку вдвое. Таблицы были кропотливо составлены для простафоэреза со значениями для каждой секунды или 3600-й градуса.
Функции обратных синуса и косинуса особенно проблемны, поскольку они становятся крутыми вблизи −1 и 1. Одним из решений является включение большего количества табличных значений в эту область. Другим решением является масштабирование входных данных до чисел между −0,9 и 0,9. Например, 950 станет 0,095 вместо 0,950.
Другим эффективным подходом к повышению точности является линейная интерполяция , которая выбирает значение между двумя соседними табличными значениями. Например, если мы знаем, что синус 45° составляет около 0,707, а синус 46° составляет около 0,719, мы можем оценить синус 45,7° как 0,707 × (1 − 0,7) + 0,719 × 0,7 = 0,7154. Фактический синус составляет 0,7157. Таблица косинусов всего с 180 записями в сочетании с линейной интерполяцией так же точна, как таблица с примерно45 000 записей без него. Даже быстрая оценка интерполированного значения часто гораздо ближе, чем ближайшее табличное значение. Подробнее см. в таблице поиска .
Формулы продукта также можно изменять, чтобы получить формулы, которые выражают сложение в терминах умножения. Хотя они менее полезны для вычисления продуктов, они все еще полезны для получения тригонометрических результатов: