2011-04-06 120 views
13

如何在求解矩陣特徵值問題時在MATLAB中實現四倍精度(128位算術)?MATLAB精度

我想解決不可壓縮平面庫埃特流的線性穩定性分析問題,MATLAB的默認64位精度不足以滿足雷諾數更高的值(4000左右)。

回答

8

我在MATLAB中有一個通用精度浮點算術工具箱,它不需要符號工具箱。它現在可在File Exchange上使用。作爲一個例子,在200位精度...

>> X = hpf('1.2',200) 
X = 
    1.2 

>> X^723 - 2 
ans = 
    1770275636625441478440184064843963160282702377364043536065.674784028 
335311702907341138106304578079399191891193908698215227428501441099262538 
4031886249461115861966367898404170725299823585166135087107488   

如果您希望採用HPF數字來完成所有的算法在精度200位,那麼就指定爲默認值。

>> DefaultNumberOfDigits 200 
>> hpf('pi') 
ans = 
    3.141592653589793238462643383279502884197169399375105820974944592307 
816406286208998628034825342117067982148086513282306647093844609550582231 
7253594081284811174502841027019385211055596446229489549303819   

HPF不是一個真正的可變精度工具,因爲它工作在固定的數字位數。它的合理效率高達幾萬位數。所以要得到exp(pi)的100個數字,這需要大約1/4秒。

>> timeit(@() exp(hpf('pi',100))) 
ans = 
    0.2643 

也具有觸發功能。這裏有1000個數字的sin(pi)。它當然應該是零。

>> tic,sin(hpf('pi',1000)),toc 
ans = 
    0 
Elapsed time is 0.201679 seconds. 
+0

我目前正試圖解決使用符號工具箱的問題。不過,如果您可以向我發送通用精度浮點算術工具箱的代碼,那就太好了。 – Dev 2011-04-07 07:19:05

+1

HPF現在正在進行文件交換。 http://www.mathworks.com/matlabcentral/fileexchange/36534-hpf-a-big-decimal-class-currently-in-beta-release – 2012-05-30 21:56:40

+0

根據PDF文檔,這個工具箱實現了加法,乘法,除法, 1 x/sqrt(x),1/sqrt(x),exp(x),ln(x),2^x,log2(x),sin(x),cos(x),tan(x) arcsin(x),arccos(x),arctan(x),sinh(x),cosh(x),tanh(x),arsinh(x),arcosh(x),artanh(x)'。 – 2014-10-12 05:08:16