stringtranslate.com

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

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

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

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

Тригонометрическая таблица по сути является справочной диаграммой, которая представляет значения синуса, косинуса, тангенса и других тригонометрических функций для различных углов. Эти углы обычно располагаются в верхней строке таблицы, в то время как различные тригонометрические функции помечены в первом столбце слева. Чтобы найти значение определенной тригонометрической функции под определенным углом, вам нужно найти строку для функции и проследовать по ней до столбца под нужным углом. [1]

Использование таблицы тригонометрии включает в себя несколько простых шагов

  1. Определите конкретный угол, для которого вам необходимо найти тригонометрические значения.
  2. Расположите этот угол вдоль горизонтальной оси (верхняя строка) таблицы.
  3. Выберите интересующую вас тригонометрическую функцию на вертикальной оси (первый столбец).
  4. Проведите линию от функции и вниз от угла до точки их пересечения на таблице; число в этом пересечении даст значение тригонометрической функции для этого угла.

Вычисления по требованию

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

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

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

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

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

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

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

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

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

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

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

с 0 = 0
с 0 = 1
сн +1 = сн + d × сн
сn +1 = сnd × sn

для n = 0,..., N  − 1, где d = 2π/ N .

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

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

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

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

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

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

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

с 0 = 1
с 0 = 0
c n +1 = w r c nw i s n
с н +1 = в и с н + в р с н

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

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

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

с 0 = 1
с 0 = 0
c n +1 знак равно c n  - (α c n  + β s n )
s n +1 знак равно s n  + (β  c n  - α  s n )

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

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

Ссылки

  1. ^ "Таблица тригонометрии: изучение таблицы тригонометрии упрощено". Заметки Йогираджа | Заметки по общему изучению и изучению права . Получено 2023-11-02 .
  2. ^ Синглтон 1967