任何用于高速可变精度算术的 FOSS MATLAB/Octave 工具箱?

计算科学 matlab 软件 浮点 精确 符号计算
2021-12-19 23:46:37

我需要在 MATLAB 中使用可变精度算术来进行一组昂贵的计算。

符号数学工具箱提供的 vpa 函数很慢。我发现了一个名为“Advanpix”( http://www.advanpix.com/ )的非免费替代工具箱,它使用试用版将速度提高了一个数量级。

但是,我的资助机构不允许为这个项目购买任何额外的软件。

对于 MATLAB,advanpix/vpa 是否有可行/快速的替代方案?

1个回答

虽然我不知道有什么适合的工具箱,但 Julia 是 MATLAB 和 Octave 的一个很好的开源替代品,它确实可以很好地解决这个问题。MATLAB/Octave 的线性代数语法几乎直接转移到 Julia,尽管您需要A(i)A[i]. 但经过快速翻译后,您可以将 JuliaBigFloats用于可变精度数字。这是 MPFR 库的包装器,它非常标准并且可以。基于 Arb 库的 ArbFloats.jl 中给出了比特大小 <500 的更快实现。最后,如果您只想要 128 位数字,DecFP.jl 提供了一些很好的实现。

走这条路的好处是 Julia 的调度系统使这些只是标准数字的替代品,因此您可以在大多数编写良好的库中使用它们。因此,您可以使用这些高速可变精度数字,只需调用通用矩阵乘法、SVD 分解、\微分方程求解器、优化例程等,并期望它们代替Float64s 工作。