四倍精度特征值,特征向量和矩阵对数

时间:2012-02-29 00:22:46

标签: python matlab numpy scipy sage

我试图以四倍精度对齐矩阵,并采用它们的对数。有没有一种语言可以使用内置函数来实现这一目标?

请注意,标签中的语言/包装不足,存在以下缺陷:

Matlab:不支持四精度。

Python / NumPy / SciPy:带有dtype float128的矩阵在float64中产生特征向量。

Sage:通过GP / PARI接口会产生神秘的错误消息。

有没有人对四边形精度进行对角化和矩阵对数,如果有,怎么做?

3 个答案:

答案 0 :(得分:8)

@Matlab:不支持四元精度。

Multiprecision Computing Toolbox for MATLAB以任意精度提供线性代数计算的例程。

它涵盖了许多其他领域 - 基础数学,数值方法(集成,颂歌,优化),特殊功能和基本数据分析。

此外,它允许以任意精度运行现有的Matlab程序,只需对源代码进行最少的修改(或不进行任何修改)。

更新(2013年3月27日):现在工具箱还包括快速四重精度模式,与其他选项相比,快了近100倍。有关比较和详细信息,请参阅Fast Quadruple Precision Computations in MATLAB


关于建议替代方案的批评者:

Mathworks的

符号数学工具箱 (MATLAB)针对符号计算。因此,它缺乏任意精确数值计算所需的许多基本特征。

例如,甚至不可能比较两个vpa()数字,因为它们是“符号”类型(按设计)。这个唯一的限制排除了99%的数值分析算法。

符号数学工具箱中缺少的其他基本线性代数函数是:norm, cond, max, min, sort, lu, qr, chol, schur

免费多精度工具箱(MATLAB)。

除了非常慢(它在每个算术运算上执行操作数的数字到字符串转换:+, -, ...)并且缺少基本功能(eig, det, cond, \, ...)之外,它在它所具有的函数中给出了错误的结果。

E.g。由svd函数提供的错误结果使我的研究在某些时候变得毫无意义,并且错误很难找到。

mpmath (Python)

主要针对特殊功能计算(特别是超几何家族)。并且不支持或多或少先进的数值算法。对矩阵的支持很少。虽然似乎有最新版本的矩阵对数。


实际上所有这些缺点促使我开发自己的MATLAB扩展,以使用任意精度计算(在开始时引用 - Multiprecision Computing Toolbox for MATLAB)。我只需要它来完成我的工作。

它正在积极开发中(但已经修复了所有列出的问题与其他替代方案) - 我将不胜感激任何反馈。

答案 1 :(得分:3)

关于对角化,也许this可以帮助你(他还需要更准确的特征值,而不是给予他的两倍,并最终使用四倍精度)。

他正在使用fortran。更改为四边形涉及将整数定义为16而不是8,并使用“-fdefault-real-8”使用gfortran重新编译LAPACK以将双精度提升为四边形。 ¿也许你可以像这样建立LAPACK然后从NumPy中使用它?我不知道。

当然,由于实际模拟了这个精度,程序的速度慢了10倍。

很抱歉没有更具体:我没有尝试过这样的事情,但我记得这篇博文,你可能已经足够至少开始了。

答案 2 :(得分:1)

对于MATLAB,Symbolic Math Toolbox或免费提供的Multiple Precision Toolbox会满足您的需求吗?多精度工具箱似乎没有等效的eig,但确实有svd