如何在求解矩陣特徵值問題時在MATLAB中實現四倍精度(128位算術)?MATLAB精度
我想解決不可壓縮平面庫埃特流的線性穩定性分析問題,MATLAB的默認64位精度不足以滿足雷諾數更高的值(4000左右)。
如何在求解矩陣特徵值問題時在MATLAB中實現四倍精度(128位算術)?MATLAB精度
我想解決不可壓縮平面庫埃特流的線性穩定性分析問題,MATLAB的默認64位精度不足以滿足雷諾數更高的值(4000左右)。
您可以使用MATLAB中的Symbolic Math Toolbox執行variable-precision arithmetic。如果您使用34
作爲VPA函數的significant digits的數字,則應該獲得與quadruple precision floating-point number幾乎相同的精度。
如果您無權訪問符號數學工具箱,那麼我會查看關於MathWorks File Exchange上Ben Barrowes的提交"Multiple Precision Toolbox for MATLAB"。
我在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.
Multiprecision Computing Toolbox for MATLAB具有快速四倍精度模式。
特別是,它能夠比符號數學工具箱(使用相同的四倍精度)快x70-x100倍,計算100 x 100矩陣的特徵向量。
請參閱Fast Quadruple Precision Computations in MATLAB頁面進行比較和詳細信息。
除了建議的選擇 - 符號數學工具箱和Ben Barrowes的庫都有很大的侷限性,請參閱我的回答here。
我目前正試圖解決使用符號工具箱的問題。不過,如果您可以向我發送通用精度浮點算術工具箱的代碼,那就太好了。 – Dev 2011-04-07 07:19:05
HPF現在正在進行文件交換。 http://www.mathworks.com/matlabcentral/fileexchange/36534-hpf-a-big-decimal-class-currently-in-beta-release – 2012-05-30 21:56:40
根據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