HomoLuden
@HomoLuden

[(Iron)Ruby] Проблема с Math.cos?

Случайно наткнулся на ошибку в Math.cos для аргумента PI/2.
irb(main):002:0&gt; cos(PI/2)<br/>
=&gt; 6.123031769111886e-17


На ruby-talk это обсуждали… как я понял это проблема «малых чисел» и имплементации тригонометрии.

«so of course it's reasonable to say that Math.cos( Math::PI/2 ) â 0.0, but perhaps not exactly. 9e-17 is insignificantly small. „

Для меня 9е-17 это “значимая» погрешность, т.к. косинус и синус использую в кватернионах для вращения векторов.


Эта погрешность только вблизи граничных результатов или на всей области определения?

Как корректно обойти эту ситуацию?

Переопределить косинус как мне надо (для PI/2 возвращать 0) и считать что для всех остальных аргументов вычисления верны?
  • Вопрос задан
  • 2805 просмотров
Решения вопроса 1
Wott
@Wott
это проблема арифметики с плавающей точкой и может всплыть в любом действии
если для вашей задачи E-16 ощутимо ( ну бывает, редко, но бывает :) ) — найдите библиотеку работающую с точностью, которая устраивает
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы