MATLAB除法运算的精度问题及其解决方案
生活随笔
收集整理的這篇文章主要介紹了
MATLAB除法运算的精度问题及其解决方案
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
MATLAB除法運算的精度問題及其解決方案
- 1. 問題描述:
- 2. 解決方案1(roundn)
- 3. 解決方案2(除變乘)
- 4. 有更多想法或者問題,歡迎多多交流
1. 問題描述:
今天做課題的時候,發現MATALB在執行除法運算時,如果需要的精度太高,會出現高精度部分運算出錯的情況。
比如在這里我執行一個簡單的除法運算:x=4.8/0.2,看一下結果:
命令行的結果看起來還不錯,24.0000,就是24嘛!
打開變量查看器查看,就會發現,嗯?結果差了0.000000000000004。
有時候這一點點精度缺失確實不值得注意,但是偶爾它也會產生很多麻煩,因此還是解決一下比較好。
2. 解決方案1(roundn)
roundn(X,N) 函數的作用是將X圓整,參數N定義圓整的精度,N為正代表圓整到小數點前N位,N為負代表圓整到小數點后N位。
這并不是一個很合理的解決方案,因為圓整操作會導致數值精度的丟失,但是至少可用。
我們使用: x=roundn(4.8/0.2,-10) ,執行一下,看效果:
命令行的結果其實已經表明我們的計算結果沒問題了,確實是24。
再打開變量查看器,發現結果確實是正確的。
這個方案損失了精度,所以對于精度要求高的場合,并不適用。
3. 解決方案2(除變乘)
為了不損失精度,我們可以將除法轉換為乘法,經測試也可以解決。
這里我們使用式子:x=4.8*(1/0.2),看一下命令行的結果:
4. 有更多想法或者問題,歡迎多多交流
總結
以上是生活随笔為你收集整理的MATLAB除法运算的精度问题及其解决方案的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 休眠后gpio状态_1.Linux电源管
- 下一篇: AlienVault Ossim各版本镜