Техника

Как компьютеры вычисляют так точно sin (синус)?

Вот с удивительной точностью после запятой виндовый канкулятор, да и maTCad тот же взять точно считают, а как? Если взять asm функцию проца, то ошибка уже после четвертого знака?
1. Вычисления идут с плавающей запятой. Точность вычисления синуса без использования некоторых ухищрений - 9-й знак после запятой.
2. Для вычисления используется разложение Тейлора, которое обладает бесконечной точностью.
Светлана Титова
Светлана Титова
97 878
Лучший ответ
Через ряд Тейлора. Процессор - по таблицам, зашитым в микрокоде.
Наталья Шакина
Наталья Шакина
88 945
У них внутрях таблицы Бредиса, вот что.
ну компьютер это просто машина в которой точность самое главное)))
Ряд Тейлора для построений эффективных аппроксимаций НЕ используется. В математических сопроцессорах (по крайней мере ранних) использовался алгоритм CORDIC. Кроме того, в ряде библиотек используется аппроксимация многочленом, которую проще всего получить разложением в ряд Чебышёва (многочлен, полученный как частичная сумма ряда Чебышёва, по точности почти не будет уступать наилучшему равномерному приближению), а также интерполяция а таблице. Реже применяются более экзотические аппроксимации, такие как метод Паде-Чебышёва. Вообще, дробно-рациональные аппроксимации несколько уступают по точности многочленам, но, например, для арктангенса это более эффективный путь.
Что касается функции синус, то типичный подход к её аппроксимации состоит из двух этапов: 1) редуцирование аргумента, т.е. приведение его в промежуток аппроксимации - обычно [-pi/2; pi/2]; 2) вычисление аппроксимирующего многочлена. В математическом сопроцессоре аппаратно реализовано вычисление функции sin с расширенной точностью (80 бит) - это команда fsin, и некоторые языки программирования пользуются ей. Однако эта команда работает слишком медленно (хотя и довольно точно), поэтому в настоящее время чаще используются аппроксимации, написанные на базе SIMD-инструкций.