首頁 > 其他

如何使Matlab中符號數位實現任意精度表達

2019-12-25 20:37:16

MATLAB中的符號計算運算過程是在完全精確情況下完成的,他不會產生累計誤差。但這一切的實現是以降低計算速度和增加所需記憶體為代價來實現的。有時候為了兼顧計算精度和計算速度,我們就需要對符號數位進行「變精度」表達。這裡我就介紹一下如何在Matlab中是實現符號數位的任意精度表達。


1

重置符號計算引擎

    在計算之前我們需要重置符號計算引擎,以產生準確的符號數位。這裡重置符號計算引擎的指令為reset(symengine) ,其功能為重新啟動符號計算引擎。詳細請看下圖:


2

精度表達的相關指令

有關精度表達的相關指令有如下:

digits  功能:顯示當前環境下符號數位「十進位制浮點」表示的有效數位位數

digits(n) 功能:設定符號數位「十進位制浮點」表示的有效數位位數

xs=vpa(x) 功能:根據表示式x得到digits制定精度下的符號數位xs

xs=vpa(x,n) 功能:根據表示式x得到n位有效數位的符號數位xs


3

採用預設設定的結果

    這裡我們先採用預設設定「變精度演算法」的及結果,以及真正了解有效數位的含義。在這過程中需要用到上一步介紹的指令,我們要注意其用法。詳細過程請看下圖。


4

設定有效數位位數

    在設定之前我們先檢視目前「變精度演算法」的有效數位位數,然後在重新設定為另外一個有效數位位數。


5

利用vpa指令檢視修改結果

這裡我們採用第二步介紹的vpa指令的兩種輸入方法檢視結果。具體請看下圖。


6

小結

由以上可以看出:

1,digits(n)可以設定系統的「變精度演算法」的有效數位位數,對其後都有影響。

2,xs=vpa(x,n),根據表示式x得到n位有效數位的符號數位xs,只改變xs的有效位數,對其後沒有影響。



IT145.com E-mail:sddin#qq.com