Как компьютер считает синус

Обновлено: 07.07.2024

Только корректные расчеты по всем правилам математики!

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

Всё для вашего удобства:

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

Содержание справки:

Комплекс операций инженерного калькулятора

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

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

Ввод цифр производится в двух вариантах:

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

Инструкция по функциям инженерного калькулятора

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

Инженерный калькулятор онлайн KALKPRO.RU

  • [Inv] – обратная функция для sin, cos, tan, переключает интерфейс на другие функции
  • [Ln] – натуральный логарифм по основанию «e»
  • [ ( ] и [ ) ] - вводит скобки
  • [Int] – отображает целую часть десятичного числа
  • [Sinh] - гиперболический синус
  • [Sin] – синус заданного угла
  • [X 2 ] – возведение в квадрат (формула x^2)
  • [n!] - вычисляет факториал введенного значения - произведение n последовательных чисел, начиная с единицы до самого введенного числа, например 4!=1*2*3*4, то есть 24
  • [Dms] – переводит из десятичного вида в формат в градусы, минуты, секунды.
  • [Cosh] - гиперболический косинус
  • [Cos] – косинус угла
  • [x y ] – возведение икса в степ. игрик (формула x^y)
  • [ y √x] – извлечение корня в степени y из икс
  • [Pi] – число Пи, выдает значение Pi для расчетов
  • [tanh] - гиперболический тангенс
  • [tan] – тангенс угла онлайн, tg
  • [X 3 ] - помогает возвести в степень 3, в куб (формула x^3)
  • [ 3 √x] - извлечь корень кубический
  • [F – E] - переключает ввод чисел в экспоненциальном представлении и обратно
  • [Exp] - позволяет вводить данные в экспоненциальном представлении.
  • [Mod] - позволяет нам вычислить остаток от деления одного числа на другое
  • [Log] – рассчитывает десятичный логарифм
  • [10^x] – возведение десяти в произвольную степень
  • [1/X] - подсчитывает обратную величину
  • [e^x] – Возведение числа Эйлера в степень
  • [Frac] – отсекает целую часть, оставляет дробную
  • [sinh -1 ] – обратный гиперболический синус
  • [sin -1 ] – арксинус или обратный синус, arcsin или 1/sin
  • [deg] – перевод угла в градусах, минутах и секундах в десятичные доли градуса, подробнее
  • [cosh -1 ] - обратный гиперболический косинус
  • [cos -1 ] – аркосинус или обрат. косинус arccos или 1/cos
  • [2*Pi] – рассчитывает число Пи, помноженное на два
  • [tanh -1 ] – обрат. гиперболический тангенс
  • [tan -1 ] – арктангенс или обратный тангенс, arctg

Как пользоваться MR MC M+ M- MS

Как пользоваться инженерным калькулятором – на примерах

Как возвести в степень

Чтобы возвести, к примеру, 12^3 вводите в следующей последовательности:

12 [x y ] 3 [=]

12, клавиша «икс в степени игрик» [xy], 3, знак равенства [=]

Как найти корень кубический

Допустим, что мы извлекаем корень кубический из 729, нажмите в таком порядке:

729 [3√x] [=]

729, [ 3 √x] «кубический корень из икс», равенства [=]

Как найти корень на калькуляторе

Задача: Найти квадратный корень 36.

Решение: всё просто, нажимаем так:

36 [ y √x] 2 [=]

36, [ y √x] «корень из икса, в степени игрик», нужную нам степень 2, равно [=]

При помощи этой функции вы можете найти корень в любой степени, не только квадратный.

Как возвести в квадрат

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

[x y ] «икс в степени игрик», [X 2 ] «икс в квадрате»

Последовательность ввода данных такая же, как и раньше – сначала исходную величину, затем «x^2» и знак равно, либо если не квадрат, а произвольное число, необходимо нажать функцию «x^y», затем указать необходимую степень и так же нажать знак «равно».

Например: 45 [x y ] 6 [=]

Ответ: сорок пять в шестой степ. равно 8303765625

Тригонометрический калькулятор онлайн - примеры

Как произвести онлайн расчет синусов и косинусов, тангенсов

1 рад = 57,3°; 360° = 2π рад., 1 град = 0,9 градусов или 1 град = 0,015708 радиан.

Для включения того или иного режима измерения нажмите нужную кнопку:

Кнопка Deg на калькуляторе, Rad, Grad

где Deg – градусы, Rad – измерение в радианах, Grad - в градах. По умолчанию включен режим расчета в градусах.

В качестве самого простого примера найдем синус 90 градусов. Нажмите:

90 [sin] [=]

Также рассчитываются и другие тригонометрические функции, например, вычислим косинус 60 °:

60 [cos] [=]

Аналогичным способом вычисляются обратные тригонометрические функции онлайн на КАЛКПРО - арксинус , арккосинус, арктангенс, а также гиперболические функции sinh, cosh, tanh.

Для их ввода необходимо переключить интерфейс, нажав [Inv], появятся новые кнопки – asin, acos, atan. Порядок ввода данных прежний: сначала величину, затем символ нужной функции, будь то акрсинус или арккосинус.

Преобразование с кнопкой Dms и Deg на калькуляторе

[Deg] позволяет перевести угол из формата градусы, минуты и секунды в десятичные доли градуса для вычислений. [Dms] производит обратный перевод – в формат «градусы; минуты; секунды».

Например, угол 35 o 14 минут 04 секунды 53 десятые доли секунды переведем в десятые доли:

35,140453 [Deg] [=] 35,23459166666666666666

Переведем в прежний формат: 35,23459166666666666666 [Dms] [=] 35,140453

Десятичный логарифм онлайн

Десятичный логарифм на калькуляторе рассчитывается следующим образом, например, ищем log единицы по основанию 10, log10(1) или lg1:

1 [log] [=]

Получается 0 в итоге. Для подсчета lg100 нажмем так:

100 [log] [=]

Решение: два. Как себя проверить? Что вообще такое десятичный логарифм - log по основанию 10. В нашем примере 2 – это степень в которую необходимо ввести основание логарифма, то есть 10, чтобы получить 100.

Так же вычисляется натуральный логарифм, но кнопкой [ln].

Как пользоваться памятью на калькуляторе

Существующие кнопки памяти: M+, M-, MR, MS, MC.

Добавить данные в память программы, чтобы потом провести с ними дальнейшие вычисления поможет операция MS.

MR выведет вам на дисплей сохраненную в памяти информацию. MC удалит любые данные из памяти. M- вычтет число на онлайн дисплее из запомненного в памяти.

Пример. Внесем сто сорок пять в память программы:

145 [MR]

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

[MR]

На экране отобразится снова 145.

Потом мы снова считаем, считаем, а затем решили сложить, к примеру, 85 с запомненным 145, для этого нажимаем [M+], либо [M-] для вычитания 85 из запомненного 145. В первом случае по возвращению итогового числа из памяти кнопкой [MR] получится 230, а во втором, после нажатия [M-] и [MR] получится 60.

Перечень калькуляторов и функционал будет расширяться, просто добавьте сайт в закладки и расскажите друзьям!


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

Функции стандартных кнопок

Ввод команд с компьютерной клавиатуры

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

Примеры вычислений на инженерном калькуляторе

Только корректные расчеты по всем правилам математики!

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

Всё для вашего удобства:

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

Содержание справки:

Комплекс операций инженерного калькулятора

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

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

Ввод цифр производится в двух вариантах:

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

Инструкция по функциям инженерного калькулятора


Как пользоваться MR MC M+ M- MS

Как пользоваться инженерным калькулятором – на примерах

Как возвести в степень

Чтобы возвести, к примеру, 12^3 вводите в следующей последовательности:

12 [x y ] 3 [=]

12, клавиша «икс в степени игрик» [xy], 3, знак равенства [=]

Как найти корень кубический

Допустим, что мы извлекаем корень кубический из 729, нажмите в таком порядке:

729 [3√x] [=]

729, [ 3 √x] «кубический корень из икс», равенства [=]

Как найти корень на калькуляторе

Задача: Найти квадратный корень 36.

Решение: всё просто, нажимаем так:

36 [ y √x] 2 [=]

36, [ y √x] «корень из икса, в степени игрик», нужную нам степень 2, равно [=]

При помощи этой функции вы можете найти корень в любой степени, не только квадратный.

Как возвести в квадрат

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

[x y ] «икс в степени игрик», [X 2 ] «икс в квадрате»

Последовательность ввода данных такая же, как и раньше – сначала исходную величину, затем «x^2» и знак равно, либо если не квадрат, а произвольное число, необходимо нажать функцию «x^y», затем указать необходимую степень и так же нажать знак «равно».

Например: 45 [x y ] 6 [=]

Ответ: сорок пять в шестой степ. равно 8303765625

Как произвести онлайн расчет синусов и косинусов, тангенсов

1 рад = 57,3°; 360° = 2π рад., 1 град = 0,9 градусов или 1 град = 0,015708 радиан.

Для включения того или иного режима измерения нажмите нужную кнопку:


В качестве самого простого примера найдем синус 90 градусов. Нажмите:

90 [sin] [=]

Также рассчитываются и другие тригонометрические функции, например, вычислим косинус 60 °:

60 [cos] [=]

Для их ввода необходимо переключить интерфейс, нажав [Inv], появятся новые кнопки – asin, acos, atan. Порядок ввода данных прежний: сначала величину, затем символ нужной функции, будь то акрсинус или арккосинус.

Преобразование с кнопкой Dms и Deg на калькуляторе

[Deg] позволяет перевести угол из формата градусы, минуты и секунды в десятичные доли градуса для вычислений. [Dms] производит обратный перевод – в формат «градусы; минуты; секунды».

Например, угол 35 o 14 минут 04 секунды 53 десятые доли секунды переведем в десятые доли:

35,140453 [Deg] [=] 35,23459166666666666666

Переведем в прежний формат: 35,23459166666666666666 [Dms] [=] 35,140453

Десятичный логарифм онлайн

Десятичный логарифм на калькуляторе рассчитывается следующим образом, например, ищем log единицы по основанию 10, log10(1) или lg1:

1 [log] [=]

Получается 0 в итоге. Для подсчета lg100 нажмем так:

100 [log] [=]

Так же вычисляется натуральный логарифм, но кнопкой [ln].

Как пользоваться памятью на калькуляторе

Существующие кнопки памяти: M+, M-, MR, MS, MC.

Добавить данные в память программы, чтобы потом провести с ними дальнейшие вычисления поможет операция MS.

MR выведет вам на дисплей сохраненную в памяти информацию. MC удалит любые данные из памяти. M- вычтет число на онлайн дисплее из запомненного в памяти.

Пример. Внесем сто сорок пять в память программы:

145 [MR]

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

[MR]

На экране отобразится снова 145.

Потом мы снова считаем, считаем, а затем решили сложить, к примеру, 85 с запомненным 145, для этого нажимаем [M+], либо [M-] для вычитания 85 из запомненного 145. В первом случае по возвращению итогового числа из памяти кнопкой [MR] получится 230, а во втором, после нажатия [M-] и [MR] получится 60.

Перечень калькуляторов и функционал будет расширяться, просто добавьте сайт в закладки и расскажите друзьям!

В создании этой статьи участвовала наша опытная команда редакторов и исследователей, которые проверили ее на точность и полноту.

Команда контент-менеджеров wikiHow тщательно следит за работой редакторов, чтобы гарантировать соответствие каждой статьи нашим высоким стандартам качества.

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

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

В создании этой статьи участвовала наша опытная команда редакторов и исследователей, которые проверили ее на точность и полноту.

Команда контент-менеджеров wikiHow тщательно следит за работой редакторов, чтобы гарантировать соответствие каждой статьи нашим высоким стандартам качества.

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

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

  • На некоторых калькуляторах есть кнопка «Shift» вместо кнопки «2ND».
  • Во многих случаях цвет кнопки «Shift» или «2ND» соответствует цвету текста функции.
  • Это важно при длинных вычислениях с множеством операций — если вы забудете ввести закрывающую скобку, полученный результат будет неверным.
  • Это важно при выполнении расчетов в тригонометрии. Если полученное значение представляет собой десятичную дробь, а не градусы (или наоборот), переключитесь с радианов на градусы (или обратно).
  • Используйте функцию «Ответ», чтобы вызвать результат, который был показан последним. Например, если вы только что ввели 2^4 , введите -10 и нажмите «ENTER», чтобы вычесть 10 из последнего результата.
  • Когда получите нужный результат, нажмите «STO» (Сохранить) > «ALPHA», выберите букву, а затем нажмите «ENTER». Так вы сохраните этот результат в памяти под выбранной буквой. [2] X Источник информации
  • Также можно нажать «2ND» или «Shift», а затем нажать любую кнопку с надписью «QUIT» (Выйти). В большинстве случаев такой кнопкой является «MODE» (Режим).
  • найдите символ квадратного корня (√);
  • нажмите кнопку с символом квадратного корня или сначала нажмите кнопку «SHIFT» или «2ND», а затем нажмите кнопку с символом квадратного корня;
  • нажмите «9»;
  • нажмите «ENTER», чтобы получить ответ.
  • Например, чтобы вычислить 2 2 , введите 2^2 и нажмите «ENTER».
  • Чтобы убедиться, что вы не нарушили порядок ввода обоих чисел, вычислите 2 3 . Если в качестве ответа вы получите 8 , порядок ввода чисел не нарушен. Если на экране отобразилось число 9 , вы вычислили 3 2 .
  • Например, вычислите синус 30°. Он равен 0,5.
  • Выясните, нужно ли сначала ввести 30 или сначала нажать кнопку «SIN». Если сначала нужно нажать «SIN», а затем ввести 30 , ответом будет 0,5 ; в этом случае калькулятор работает с градусами. Если ответ равен -0,988 , калькулятор работает с радианами.
  • Обратите внимание, сколько скобок необходимо, чтобы правильно вычислить это выражение. Помните, что число открывающих «(» скобок должно равняться числу закрывающих «)» скобок.
  • нажмите кнопку «MATH»;
  • кнопками со стрелками прокрутите (вверх/вниз) категории уравнений;
  • кнопками со стрелками прокрутите (вправо/влево) уравнения определенной категории;
  • нажмите «ENTER», чтобы выбрать уравнение, а затем введите числа или формулу, к которой нужно применить это уравнение;
  • нажмите «ENTER», чтобы вычислить уравнение.
  • Чтобы вяснить, умеет ли калькулятор строить графики, почитайте инструкцию или поищите кнопку «Y=» в верхней части клавиатуры калькулятора.
  • Чтобы ввести часть уравнения, в которой находится переменная, нажмите кнопку «X», «T», «Θ», «n» или аналогичную.
Нажмите GRAPH (График). Как правило, эта кнопка находится в верхней части клавиатуры калькулятора.
  • Чтобы просмотреть координаты отдельных точек графика, нажмите кнопку «TABLE» (Таблица) (или нажмите «Shift»/»2ND», а затем нажмите кнопку «GRAPH») и прокрутите таблицу с координатами точек.
  • Расположение функций по кнопкам зависит от модели научного калькулятора. Поэтому найдите время, чтобы ознакомиться с калькулятором. Почитайте инструкцию, если не можете найти определенную функцию.
  • Возможно, на старых научных калькуляторах (например, те, которые не умеют строить графики), нет некоторых дополнительных функций, таких как меню «MATH» (Математика).

Дополнительные статьи

описать себя как личность

найти ускорение

понимать по часам

стать умным

основать свою собственную страну

создать подробную биографию персонажа

вычислить плотность населения

определить, растущая луна или убывающая

перестать мямлить и начать говорить отчетливо

найти скопление Плеяды

вычислить доверительный интервал

помочь остановить загрязнение окружающей среды

себя вести, если вас поймали на списывании

описать внешность человека

Об этой статье

В создании этой статьи участвовала наша опытная команда редакторов и исследователей, которые проверили ее на точность и полноту.

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

Я знаю несколько способы функционирования can быть вычислены, и написал свои собственные процедуры для вычисления функций с использованием серии Тейлора для удовольствия. Мне интересно, как это делают реальные языки производства, поскольку все мои реализации всегда на несколько порядков медленнее, хотя я думаю, что мои алгоритмы довольно умны (очевидно, что это не так).

в GNU libm, реализация sin зависит от системы. Поэтому вы можете найти реализацию для каждой платформы где-то в соответствующем подкаталоге sysdeps.

один каталог включает реализацию на языке C, предоставленную IBM. С октября 2011 года, это код, выполняющийся при вызове sin() в типичной системе x86-64 Linux. Это, по-видимому, быстрее, чем fsin инструкция по монтажу. Исходный код: sysdeps/ieee754/dbl-64 / s_sin.c искать __sin (double x) .

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

более старые 32-разрядные версии GCC / glibc использовали fsin инструкция, которая удивительно неточна для некоторых входов. Есть увлекательный блоге, иллюстрируя это всего 2 строки кода.

реализация fdlibm sin в чистом C намного проще, чем glibc, и хорошо прокомментирован. Исходный код: fdlibm / s_sin.c и fdlibm / k_sin.c

OK детки, время для профессионалов. Это одна из моих самых больших жалоб на неопытных инженеров-программистов. Они приходят к расчету трансцендентальных функций с нуля (используя ряд Тейлора), как будто никто никогда не делал этих вычислений раньше в своей жизни. Неправда. Это хорошо определенная проблема, к которой тысячи раз подходили очень умные инженеры по программному и аппаратному обеспечению, и у нее есть четко определенное решение. В основном, большинство трансцендентальных функций используют Полиномы Чебышева для их вычисления. Что касается того, какие многочлены используются, зависит от обстоятельств. Во-первых, Библия по этому вопросу-это книга под названием "компьютерные приближения" Харта и Чейни. В этой книге вы можете решить, есть ли у вас аппаратный сумматор, множитель, делитель и т. д., и решить, какие операции являются самыми быстрыми. например, если у вас действительно быстрый делитель, самый быстрый способ вычисления синуса может быть P1(x)/P2(x), где P1, P2-многочлены Чебышева. Без быстрого разделителя, это могло бы быть просто P (x), где P имеет гораздо больше членов, чем P1 или P2. так будет медленнее. Итак, первый шаг-определить ваше оборудование и то, что оно может сделать. Затем вы выбираете соответствующую комбинацию полиномов Чебышева(обычно имеет вид cos(ax) = aP (x) для Косинуса, например, снова, где P-полином Чебышева). Затем вы решаете, какую десятичную точность вы хотите. например, если вы хотите точность 7 цифр, вы посмотрите это в соответствующей таблице в книге, которую я упомянул, и она даст вам (для точность = 7.33) число N = 4 и полиномиальное число 3502. N-порядок многочлена (так что это p4.x^4 + p3.x^3 + p2.x^2 + p1.x + p0), потому что N=4. Затем вы просматриваете фактическое значение значений p4,p3,p2,p1,p0 в задней части книги под 3502 (они будут в плавающей точке). Затем вы реализуете свой алгоритм в программном обеспечении в виде: (((П4.x + p3).x + p2).x + p1).х + Р0 . и вот как вы вычисляете Косинус до 7 десятичных знаков на этом оборудовании.

обратите внимание, что большинство аппаратные реализации трансцендентальных операций в FPU обычно включают в себя некоторый микрокод и подобные операции (зависит от аппаратного обеспечения). Полиномы Чебышева используются для большинства трансцендентальных, но не для всех. например, квадратный корень быстрее использовать двойную итерацию метода Ньютона рафсона, используя сначала таблицу поиска. Опять же, эта книга "компьютерные приближения" скажет вам об этом.

Если вы планируете внедрить эти функции, я бы рекомендовал всем, чтобы они получили копию эта книга. Это действительно библия для такого рода алгоритмов. Обратите внимание, что есть пучки альтернативных средств для вычисления этих значений, таких как cordics и т. д., Но они, как правило, лучше всего подходят для конкретных алгоритмов, где вам нужна только низкая точность. Чтобы гарантировать точность каждый раз, многочлены Чебышева-это путь. Как я уже сказал, Проблема четко определена. Решается уже 50 лет. вот как это делается.

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

фишки не используйте ряды Тейлора для вычисления триггерных функций, по крайней мере, не полностью. Прежде всего они использовать CORDIC, но они могут также использовать короткую серию Тейлора для того чтобы отполировать вверх результат CORDIC или для специальных случаев как вычислять синус с высокой относительной точностью для очень малых углов. Для получения дополнительных объяснений см. Это StackOverflow ответ.

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

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

Это сложный вопрос. Intel-подобный процессор семейства x86 имеет аппаратную реализацию sin() функция, но она является частью FPU x87 и больше не используется в 64-битном режиме (где вместо этого используются регистры SSE2). В этом режиме используется программная реализация.

существует несколько таких реализаций. В fdlibm и используется в Java. Насколько мне известно, реализация glibc содержит части fdlibm и другие части предоставлено IBM.

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

использовать ряд Тейлора и попробуйте найти связь между терминами серии, чтобы вы не вычисляли вещи снова и снова

вот пример для cosinus:

используя это, мы можем получить новый член суммы, используя уже используемый (мы избегаем факториала и x^2p)

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

в некоторых случаях, максимальная ошибка не то, что вас интересует, а максимальная относительная ошибка. Например, для функции синуса ошибка около x = 0 должна быть намного меньше, чем для больших значений; вы хотите маленький относительные ошибка. Так что . вычислите полином Чебышева для sin x / x и умножьте этот полином на x.

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

например, sin x = x-x^3/6 + x^5 / 120-x^7 / 5040. Если вы наивно вычисляете sin x = x * (1 - x^2/6 + x^4/120 - x^6/5040. ), то эта функция в скобках уменьшается, и она будет случается, что если y-следующее большее число к x, то иногда sin y будет меньше, чем sin x. Вместо этого вычислите sin x = x-x^3 * (1/6 - x^2 / 120 + x^4/5040. ), где это не может произойти.

при вычислении многочленов Чебышева обычно необходимо округлить коэффициенты до двойной точности, например. Но в то время как полином Чебышева оптимален, полином Чебышева с коэффициентами, округленными до двойной точности, не является оптимальным полиномом с коэффициентами двойной точности!

например, для sin (x), где вам нужны коэффициенты для x, x^3, x^5, x^7 и т. д. Вы делаете следующее: вычислите наилучшее приближение sin x с полиномом (ax + bx^3 + cx^5 + dx^7) с более высокой точностью, затем округлите a до двойной точности, давая A. разница между a и A будет довольно большой. Теперь вычислите наилучшее приближение (sin x-Ax) с полиномом (b x^3 + cx^5 + dx^7). Вы получаете разные коэффициенты, потому что они адаптируются к разнице между A и A. раунд b для двойной точности B. Затем приближается (sin x-Ax - Bx^3) с полиномом cx^5 + dx^7 и так далее. Вы получите полином, который почти так же хорош, как исходный полином Чебышева, но намного лучше, чем Чебышев, округленный до двойной точности.

Далее следует учесть ошибки округления при выборе полинома. Вы нашли полином с минимальной ошибкой в полиноме, игнорируя ошибку округления, но вы хотите оптимизировать полином плюс ошибка округления. После того, как у вас есть полином Чебышева, вы можете вычислить границы ошибки округления. Скажем, f (x) - ваша функция, P (x) - многочлен, А E (x) - ошибка округления. Вы не хотите оптимизировать | f (x) - P (x) |, вы хотите оптимизировать | f (x) - P (x) +/- E (x) |. Вы получите немного другой полином, который пытается сохранить полиномиальные ошибки там, где ошибка округления велика, и немного расслабляет полиномиальные ошибки там, где ошибка округления мала.

все это позволит вам легко округлять ошибки не более 0,55 раза последний бит, где +, -,*, / имеют ошибки округления не более 0,50 последнего бита.

на sin в частности, использование расширения Тейлора даст вам:

sin (x): = x - x^3/3! + x^5/5! - x^7/7! + . (1)

вы будете продолжать добавлять термины, пока разница между ними не будет ниже принятого уровня допуска или просто для конечного количества шагов (быстрее, но менее точно). Примером может быть что-то вроде:

Примечание: (1) работает из-за апроксимации sin (x)=x для малых углов. Для больших углов вам нужно рассчитать все больше и больше сроков, чтобы получить приемлемые результаты. Вы можете использовать аргумент while и продолжить для определенной точности:

фактическая реализация библиотечных функций зависит от конкретного компилятора и / или поставщика библиотеки. Будь то аппаратное или программное обеспечение, будь то расширение Тейлора или нет и т. д., будет меняться.

Я понимаю, что это абсолютно не помогает.

относительно тригонометрической функции как sin() , cos() , tan() после 5 лет не было упоминания о важном аспекте высококачественных функций тригонометрии:уменьшение диапазона.

ранним шагом в любой из этих функций является уменьшение угла в радианах до диапазона интервала 2 * π. Но π иррационально настолько простые сокращения, как x = remainder(x, 2*M_PI) ввести ошибку как M_PI , или машина pi, является приближением π. Итак, как это сделать x = remainder(x, 2*π) ?

ранние библиотеки использовали расширенную точность или созданное Программирование, чтобы дать качественные результаты, но все еще в ограниченном диапазоне double . Когда запрашивается большое значение, например sin(pow(2,30)) , результаты были бессмысленными или 0.0 и, возможно, с флаг ошибки установить что-то вроде TLOSS полная потеря точности или PLOSS частичная потеря точности.

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

хороший отчет уменьшение аргументов для огромных аргументов: хорошо до последнего бита (1992). Он хорошо освещает проблему: обсуждает необходимость и как все было на разных платформах (SPARC, PC, HP, 30+ other) и предоставляет алгоритм решения, который дает качественные результаты для все double С -DBL_MAX to DBL_MAX .

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

различные тригонометрические тождества и remquo() предложите даже больше улучшения. Пример: sind ()

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

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

Если вам нужна реализация в программном обеспечении, а не в аппаратном обеспечении, место для поиска окончательного ответа на этот вопрос-Глава 5 Численные Рецепты. Моя копия находится в коробке, поэтому я не могу дать подробности, но короткая версия (если я правильно помню) заключается в том, что вы берете tan(theta/2) Как ваша примитивная операция и вычислить другие оттуда. Вычисление выполняется с приближением ряда, но это то, что сходится много быстрее, чем Тейлор серии.

Извините, я не могу вспомнить больше, не получив мою руку на книгу.

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

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

надеюсь, это поможет.

Я постараюсь ответить на случай sin() в программе C, скомпилированной с компилятором GCC C на текущем процессоре x86 (скажем, Intel Core 2 Duo).

в языке C стандартная библиотека C включает общие математические функции, не включенные в сам язык (например, pow , sin и cos для силы, синуса, и Косинуса соответственно). Заголовки которых включены в математика.h.

теперь в системе GNU / Linux эти библиотеки функции предоставляются glibc (GNU libc или GNU C Library). Но компилятор GCC хочет, чтобы вы ссылались на математическая библиотека ( libm.so ) С помощью -lm флаг компилятора для включения использования этих математических функций. я не уверен, почему он не является частью стандартной библиотеки C. это будет версия программного обеспечения функций с плавающей запятой или"soft-float".

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

теперь компилятор может оптимизировать стандартную функцию библиотеки C sin() (предоставлен libm.so ), который будет заменен вызовом собственной инструкции к встроенной функции Sin () вашего CPU/FPU, которая существует как инструкция FPU ( FSIN для x86 / x87) на более новых процессорах, таких как Core 2 series (это правильно почти так же, как i486DX). Это будет зависеть от флагов оптимизации, переданных компилятору gcc. Если бы компилятору было сказано написать код, который будет выполняться на любом процессоре i386 или новее, он не сделал бы такой оптимизации. The -mcpu=486 флаг сообщит компилятору, что такая оптимизация безопасна.

любые последние (начиная с 2.9 X прибл.) версия gcc также предлагает встроенную версию sin, __builtin_sin() что он будет использоваться для замены стандартного вызова версии библиотеки C в качестве оптимизации.

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

нет ничего лучше, чем поразить источник и увидеть, как кто-то на самом деле сделал это в общей библиотеке; давайте рассмотрим одну реализацию библиотеки C в частности. Я выбрал uLibC.

вот функция sin:

который выглядит так, как будто он обрабатывает несколько особых случаев, а затем выполняет некоторое уменьшение аргумента для отображения ввода в диапазон [- pi/4, pi / 4], (Разделение аргумента на две части, большую часть и хвост) перед вызовом

который затем работает на этих двух частях. Если хвоста нет, приближенный ответ генерируется с использованием полинома степени 13. Если есть хвост, вы получаете небольшое корректирующее дополнение, основанное на принципе, что sin(x+y) = sin(x) + sin'(x')y

всякий раз, когда такая функция оценивается, то на каком-то уровне, скорее всего, либо:

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

Если нет аппаратной поддержки, то компилятор, вероятно, использует последний метод, испуская только код ассемблера (без отладочных символов), а не используя библиотеку c-что затрудняет отслеживание фактического кода в отладчике.

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

вычисление синуса / Косинуса / касательной на самом деле очень легко сделать с помощью кода с использованием серии Тейлора. Написание одного из них занимает около 5 секунд.

вот некоторые процедуры, которые я написал для C:

Если вы хотите грешить, то asm volatile("fsin": "=t"(vsin) : "0"(xrads)); если вы хотите, потому что asm volatile("fcos": "=t"(vcos) : "0"(xrads)); если вы хотите корень после asm volatile("fsqrt": "=t"(vsqrt) : "0" (значение)); так зачем использовать неточный код, когда инструкции машины будут делать.

Читайте также: