WikiDer > Тригонометрические таблицы

Trigonometric tables

В математика, таблицы тригонометрические функции полезны во многих областях. До существования карманные калькуляторы, тригонометрические таблицы были необходимы для навигация, наука и инженерное дело. Расчет математические таблицы была важной областью исследований, которая привела к развитию первые механические вычислительные устройства.

Современные компьютеры и карманные калькуляторы теперь генерируют значения тригонометрических функций по запросу, используя специальные библиотеки математического кода. Часто эти библиотеки используют предварительно рассчитанные таблицы для внутренних целей и вычисляют требуемое значение, используя соответствующий интерполяция метод. Интерполяция простых справочных таблиц тригонометрических функций все еще используется в компьютерная графика, где может потребоваться лишь умеренная точность, а скорость часто имеет первостепенное значение.

Еще одно важное применение тригонометрических таблиц и схем генерации - быстрое преобразование Фурье (БПФ), где одинаковые значения тригонометрических функций (называемые факторы поворота) должны вычисляться много раз в данном преобразовании, особенно в общем случае, когда вычисляется много преобразований одного и того же размера. В этом случае вызов стандартных библиотечных подпрограмм каждый раз является недопустимо медленным. Один из вариантов - вызвать библиотечные подпрограммы один раз, чтобы построить таблицу тех тригонометрических значений, которые потребуются, но это требует значительного объема памяти для хранения таблицы. Другая возможность, поскольку требуется регулярная последовательность значений, заключается в использовании формулы повторения для вычисления тригонометрических значений на лету. Значительные исследования были посвящены поиску точных, стабильных схем повторения, чтобы сохранить точность БПФ (которое очень чувствительно к тригонометрическим ошибкам).

Вычисление по запросу

Страница из книги 1619 г. математические таблицы.

Современные компьютеры и калькуляторы используют различные методы для получения значений тригонометрических функций по запросу для произвольных углов (Kantabutra, 1996). Один распространенный метод, особенно на высокопроизводительных процессорах с плавающая точка единиц, состоит в том, чтобы объединить многочлен или рациональный приближение (такие как Чебышевское приближение, наилучшее равномерное приближение и Приближение Паде, и обычно для более высокой или переменной точности, Тейлор и Серия Laurent) с уменьшением диапазона и поиском в таблице - сначала они ищут ближайший угол в небольшой таблице, а затем используют полином для вычисления поправки. Однако сохранение точности при выполнении такой интерполяции нетривиально; и такие методы, как Точные таблицы ГалаДля этой цели можно использовать алгоритмы редукции Коди и Уэйта и алгоритмы редукции Пейна и Ханека. На более простых устройствах без аппаратный умножитель, существует алгоритм, называемый КОРДИК (а также связанные с ним методы), что более эффективно, поскольку использует только сдвиги и дополнения. Все эти методы обычно реализуются в оборудование по соображениям производительности.

Конкретный многочлен, используемый для аппроксимации триггерной функции, генерируется заранее с использованием некоторой аппроксимации алгоритм минимаксного приближения.

Для очень высокая точность расчетах, когда сходимость разложения в ряд становится слишком медленной, тригонометрические функции могут быть аппроксимированы среднее арифметико-геометрическое, который сам аппроксимирует тригонометрическую функцию соотношением (сложный) эллиптический интеграл (Брент, 1976).

Тригонометрические функции углов, рациональный кратные 2π являются алгебраические числа. Значения для а / б · 2π можно найти, применив личность де Муавра для п = а к бth корень единства, который также является корнем многочлена Иксб - 1 в комплексная плоскость. Например, косинус и синус 2π ⋅ 5/37 - это настоящий и мнимые частисоответственно, из 5-й степени корня 37-й степени из единицы cos (2π / 37) + sin (2π / 37) i, который является корнем степень-37 полином Икс37 - 1. В этом случае алгоритм поиска корня, такой как Метод Ньютона намного проще, чем описанные выше алгоритмы вычисления среднего арифметико-геометрического, но сходятся с такой же асимптотической скоростью. Последние алгоритмы необходимы для трансцендентный однако тригонометрические константы.

Формулы полуугла и сложения углов

Исторически сложилось так, что самый ранний метод расчета тригонометрических таблиц и, вероятно, наиболее распространенный до появления компьютеров, заключался в многократном применении половинного угла и сложения углов. тригонометрические тождества начиная с известного значения (например, sin (π / 2) = 1, cos (π / 2) = 0). Этим методом пользовался древний астроном. Птолемей, который вывел их в Альмагест, трактат по астрономии. В современной форме полученные им тождества формулируются следующим образом (со знаками, определяемыми квадрантом, в котором Икс вранье):

Они были использованы для построения Таблица аккордов Птолемея, который был применен к астрономическим задачам.

Возможны различные другие перестановки этих тождеств: например, в некоторых ранних тригонометрических таблицах использовались не синус и косинус, а синус и Версина.

Быстрое, но неточное приближение

Быстрый, но неточный алгоритм расчета таблицы N приближения sп для грех(2πп/N) и cп для потому что(2πп/N) является:

s0 = 0
c0 = 1
sп+1 = sп + d × cп
cп+1 = cпd × sп

для п = 0,...,N - 1, где d = 2π /N.

Это просто Метод Эйлера для интеграции дифференциальное уравнение:

с начальными условиями s(0) = 0 и c(0) = 1, аналитическое решение которого s = грех (т) и c = cos (т).

К сожалению, это бесполезный алгоритм для создания таблиц синусов, потому что он имеет значительную ошибку, пропорциональную 1 /N.

Например, для N = 256 максимальная погрешность значений синуса ~ 0,061 (s202 = −1,0368 вместо −0,9757). Для N = 1024, максимальная погрешность значений синуса ~ 0,015 (s803 = −0,99321 вместо −0,97832), что примерно в 4 раза меньше. Если бы полученные значения синуса и косинуса были нанесены на график, этот алгоритм нарисовал бы логарифмическую спираль, а не круг.

Лучшая, но все еще несовершенная формула повторения

Простая формула повторения для создания тригонометрических таблиц основана на Формула Эйлера и отношение:

Это приводит к следующему повторению для вычисления тригонометрических значений sп и cп как указано выше:

c0 = 1
s0 = 0
cп+1 = шр cпшя sп
sп+1 = шя cп + шр sп

для п = 0, ..., N - 1, где шр = cos (2π /N) и шя = sin (2π /N). Эти два начальных тригонометрических значения обычно вычисляются с использованием существующих библиотечных функций (но их также можно найти, например, используя Метод Ньютона в комплексной плоскости, чтобы найти примитив корень из zN − 1).

Этот метод даст точный таблица точной арифметики, но имеет ошибки конечной точности плавающая точка арифметика. Фактически ошибки растут как O (εN) (как в худшем, так и в среднем случае), где ε - точность с плавающей запятой.

Значительным улучшением является использование следующей модификации вышеупомянутого, трюка (из-за Синглтона, 1967), часто используемого для генерации тригонометрических значений для реализаций БПФ:

c0 = 1
s0 = 0
cп+1 = cп - (α cп + β sп)
sп+1 = sп + (βcп - αsп)

где α = 2 sin2(π /N) и β = sin (2π /N). Погрешности этого метода намного меньше, O (ε √N) в среднем и O (εN) в худшем случае, но он все еще достаточно велик, чтобы существенно ухудшить точность БПФ больших размеров.

Смотрите также

использованная литература