Какой алгоритм используют калькуляторы для поиска значений синуса?

Если кто-то дает мне угол, скажем, 38 градусов, как я узнаю значение синусоидальной функции для его значения, не используя фактически создание правильного треугольника с 38 градусов и измерения сторон? Я знаю, что могу использовать некоторые тригонометрические тождества, чтобы приблизиться к значениям, но это было бы трудоемко.

Я уверен, что алгоритмы, используемые в калькуляторах и компьютерах, не будут прибегать к этому. Например, если мне нужно найти pi, я буду использовать такой алгоритм :

A very efficient algorithm used to compute the value of pi

вместо того, чтобы получить компас и линейку и рисовать круги.

однако я не могу найти такой алгоритм для синусоидальной функции.

может кто-то пожалуйста, помогите мне с этим?

3 ответов


один из наиболее распространенных алгоритмов для этого-взять первые несколько членов ряда Тейлора для синуса.

sin x = x - x3/3! + x5/5! - x7/7! + ...,

чем больше терминов вы берете, тем лучшее приближение вы получаете. X находится в радианах здесь, но вы можете получить радианы от градусов довольно легко. И тогда, как вы видите, для вычисления синуса можно использовать только основные операции:+, -,*,/.

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


улучшение ответа Джона:

создайте таблицу sin (x) для x в разных радианах от 0 до pi/2.

вы можете использовать интерполяцию следующим образом: sin (x+dx) = sin(x) + dx*cos(x)

cos(x) = sin (pi/2-x).

аналогично, cos(x+dx) = cos(x) - dx*sin (x).


Я не знаю, что на самом деле используется любыми калькуляторами, но таблица поиска с линейной (или более высокого порядка, если хотите) интерполяцией должна быть простой и достаточно точной для 3 мест точности или более плотной таблицы. Вам нужно будет только столик на одну четверть цикла и может использовать его для всех синусов и косинусов с помощью соответствующих преобразований. Если у вас достаточно мощности и точности, вы можете попробовать повторить серию Тейлора или что-то еще, но ошибки округления будут накопить на вы.