Python 四精度特征值、特征向量和矩阵对数

Python 四精度特征值、特征向量和矩阵对数,python,matlab,numpy,scipy,sage,Python,Matlab,Numpy,Scipy,Sage,我试图以四倍精度对角化矩阵,并取它们的对数。是否有一种语言可以使用内置函数来实现这一点 注意,标签中的语言/软件包不足,存在以下缺陷: Matlab:不支持四精度 Python/NumPy/SciPy:dtype为float128的矩阵在float64中生成特征向量 Sage:通过GP/PARI的接口会产生隐藏的错误消息 是否有人执行过对角化和矩阵对数的四倍精度,如果是,如何执行?关于对角化,也许可以帮助您(他还需要比给他的两倍精度更精确的特征值,并最终使用四倍精度) 他正在使用fortran。

我试图以四倍精度对角化矩阵,并取它们的对数。是否有一种语言可以使用内置函数来实现这一点

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

Matlab:不支持四精度

Python/NumPy/SciPy:dtype为float128的矩阵在float64中生成特征向量

Sage:通过GP/PARI的接口会产生隐藏的错误消息


是否有人执行过对角化和矩阵对数的四倍精度,如果是,如何执行?

关于对角化,也许可以帮助您(他还需要比给他的两倍精度更精确的特征值,并最终使用四倍精度)

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

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

抱歉没有说得更具体一些:我没有尝试过类似的方法,但我记得这篇博文,您至少可以开始了。

或者免费提供的MATLAB,可以满足您的需要吗?多精度工具箱似乎没有与eig等效的工具,但它确实有svd,Matlab:不支持四精度

提供任意精度的线性代数计算例程

它涵盖了许多其他领域——基础数学、数值方法(积分、常微分方程、优化)、特殊函数和基础数据分析

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

更新(2013年3月27日):现在工具箱还包括快速四倍精度模式,比其他模式快近100倍。有关比较和详细信息,请参阅


对建议替代方案的批评:

符号数学工具箱(MATLAB),来自Mathworks,面向符号计算。因此,它缺少任意精度数值计算所需的许多基本特性

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

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

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

除了速度非常慢(它在每次算术运算中执行操作数到字符串的转换:
+,-,…
)和缺乏基本功能(
eig,det,cond,\,…
)之外,它还提供了错误的函数结果

例如,
svd
函数提供的不正确结果使我的研究在某一点上毫无意义,发现错误是痛苦的

mpmath(Python)

主要针对特殊函数计算(特别是超几何族)。也不支持多少先进的数值算法。对矩阵的支持非常少。虽然在最新版本中似乎有您正在寻找的矩阵对数


实际上,所有这些缺点促使我开发了自己的MATLAB扩展,使其能够进行任意精度的计算(在开始时提到-)。我只是工作需要它


它正在积极开发中(但已经用其他替代方案修复了所有列出的问题)-我将非常感谢您的反馈

试试这个:[()我忘了在前面提到,mpmath不支持多精度对角化和矩阵函数。不过,它几乎可以做其他所有事情。@Benstriger-值得一提的是,我认为numpy的基本问题是大多数BLAS实现不支持128位浮点精度。我想@woodchips是否可以帮助我们解决这个问题问题你没有提到mathematica。它有real128类型,但我不知道特征向量的精度是否较低。如果你没有访问它的权限,你能用wolfram alpha吗?