4
A
回答
3
如果你正在尋找你想要它的原因,一個是所謂的「範圍縮小」
假設您想用sind
函數來計算參數的正弦值(度)。一個天真的方式做這將是
sind(x) = sin(x*pi/180)
然而pi
這裏不是真正的無理數pi
,而是浮點最接近pi
號。這導致諸如sind(180) == 1.2246467991473532e-16
之類的東西,以及諸如this和this之類的SO問題(以及許多,更多)。
但正弦周期函數,因此,如果我們計算
remainder(x,90.0)
我們在區間得到的值[-45,45]。請注意,0,90,180,270等等正好爲0,並乘以pi/180
仍然爲0.因此,採取適當簽名的sin
或cos
,我們可以得到這些值的確切結果(如果您做了一些基本的錯誤分析,你可以證明它也減少了其他值的誤差)。
兩個跟進點:
- 你如何確定使用哪個
sin
或cos
?那麼這就是remquo
。 - 不幸的是,由於中間舍入的變幻莫測,這仍然不會給
sind(30.0) == 0.5
。有辦法解決這個問題,例如看什麼Julia library does。
+0
所以大致總結一下:它在數學中用於在非理性數字上得到更正確的結果,對吧? 感謝您的解釋。我覺得我對此並不深入去理解它。還有一些事情要學習。 – TheTrowser 2014-12-17 22:58:57
相關問題
- 1. 什麼是IEEE-754?
- 2. 754在IEEE 754浮點數中意味着什麼?
- 3. DavLockDB:我們需要什麼?
- 4. 我的IEEE 754浮點表示有什麼問題?
- 5. 爲什麼我們需要simple_one_for_one?
- 6. 爲什麼我們需要TensorFlow tf.Graph?
- 7. 爲什麼我們需要使用prompt.start()?
- 8. 爲什麼我們需要scalaz.stream迭代?
- 9. 爲什麼我們需要WCF
- 10. 爲什麼我們需要Anaconda 2.7?
- 11. 爲什麼我們需要編寫log.isDebugEnabled?
- 12. 爲什麼我們需要ng-click?
- 13. 爲什麼我們需要Control.Lens.Reified?
- 14. 我們爲什麼需要纖維
- 15. 爲什麼我們需要org.junit.ComparisonFailure?
- 16. 爲什麼我們需要addRequestHeader方法?
- 17. 爲什麼我們需要時代?
- 18. 爲什麼我們需要ContinueWith方法?
- 19. 爲什麼我們需要Java NIO Selector?
- 20. 爲什麼我們需要使用ExitWindowsEx
- 21. 爲什麼我們需要包裝類
- 22. 爲什麼我們需要在JavaScript
- 23. 爲什麼我們需要設置SONAR_RUNNER_OPTS?
- 24. 爲什麼我們需要ioc容器
- 25. mongodb爲什麼我們需要getSisterDB
- 26. 爲什麼我們需要BeginGetResponse和BeginRead?
- 27. 爲什麼我們需要fieldset標籤?
- 28. 爲什麼我們需要boost :: thread_specific_ptr?
- 29. JSP:爲什麼我們需要RequestDispatcher?
- 30. 爲什麼我們需要calloc(或malloc)?
@MarkDickinson這是什麼意思?你可以添加一個完整的答案嗎? – 2014-11-05 06:30:38