MATLAB精度

Dev*_*Dev 14 floating-point precision matlab

在解决Matrix特征值问题时,如何在MATLAB中实现四倍精度(128位运算)?

我正在尝试解决不可压缩平面Couette流的线性稳定性分析问题,并且MATLAB的默认64位精度对于更高的雷诺数值(大约4000)是不够的.

gno*_*ice 12

您可以使用MATLAB中的符号数学工具箱执行可变精度算术.如果使用VPA函数的有效位数,则应该获得与四倍精度浮点数几乎相同的精度.34

如果您没有访问符号数学工具箱,我想看看在提交"多精度MATLAB工具箱"本BarrowesMathWorks的文件交换.


小智 8

我在MATLAB中有一个通用的精度浮点运算工具箱,它不需要符号工具箱.它现在可以在文件交换中使用.例如,200位精度...

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

>> X^723 - 2
ans =
    1770275636625441478440184064843963160282702377364043536065.674784028
335311702907341138106304578079399191891193908698215227428501441099262538
4031886249461115861966367898404170725299823585166135087107488           
Run Code Online (Sandbox Code Playgroud)

如果您希望在使用HPF编号时以200位精度执行所有算术运算,则只需将其指定为默认值.

>> DefaultNumberOfDigits 200
>> hpf('pi')
ans =
    3.141592653589793238462643383279502884197169399375105820974944592307
816406286208998628034825342117067982148086513282306647093844609550582231
7253594081284811174502841027019385211055596446229489549303819           
Run Code Online (Sandbox Code Playgroud)

HPF不是一种真正的可变精度工具,因为它以固定的位数工作.它可以合理有效地达到数万个数字.因此要获得100位exp(pi),这需要大约1/4秒.

>> timeit(@() exp(hpf('pi',100)))
ans =
   0.2643
Run Code Online (Sandbox Code Playgroud)

Trig功能也是如此.这里有sin(pi)的1000位数字.当然应该是零.

>> tic,sin(hpf('pi',1000)),toc
ans =
    0
Elapsed time is 0.201679 seconds.
Run Code Online (Sandbox Code Playgroud)