问题标签 [matrix-decomposition]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
542 浏览

python - Python中的Dulmage-Mendelsohn矩阵分解

Matlab 有一个名为的函数dmperm,用于计算矩阵的所谓 Dulmage-Mendelsohn分解n x n

来自维基百科,Dulmage-Mendelsohn是将二分图的顶点划分为子集,具有两个相邻顶点属于同一子集的属性当且仅当它们在图的完美匹配中相互配对。

在 scipy 和 numpy 上查看,我找不到这个函数,也找不到一些类似的版本。是否可以使用基本的线性代数运算来实现它?知道这是否在某些 Python 包中实现?

0 投票
1 回答
978 浏览

python - 为什么 scipy.linalg.lu() 在这段代码中返回错误的方阵 B 的分解矩阵?

我有以下代码,其结果非常令人困惑:

它返回以下内容:

[[ 1. 0. 0. ] [ 1. 1. 0. ] [-0.5 -0.25 1. ]]

但这不是 B 的 LU 分解中的正确 L 矩阵。据我所知,命令 scipy.linalg.lu(matrix) 只计算您输入的任何矩阵的 LU 分解矩阵。但是,在这种情况下L 矩阵不正确。这里发生了什么?任何帮助表示赞赏。

0 投票
1 回答
364 浏览

python - 为什么 scipy.linalg.lu() 不返回与 scipy.sparse.linalg.splu() 相同的 L 矩阵?

我有以下代码,其中我使用命令 scipy.linalg.lu() 计算给定方阵的 L 矩阵,然后我再次做同样的事情,除非然后使用 scipy 应用于给定矩阵的稀疏形式。 sparse.linalg.slu()。这是代码:

它返回以下内容:

正如我们所见,这些矩阵并不相同。我是误解了这两个命令的作用还是有其他问题?任何帮助表示赞赏。谢谢!

0 投票
0 回答
330 浏览

python - 如何在不使用 scipy.sparse.linalg.splu() 的情况下从稀疏矩阵 A 的 LU 分解中获得正确的 L 和 U 矩阵?

我注意到这scipy.sparse.linalg.splu()不允许我将稀疏矩阵 A 分解为可以单独调用的正确 L 和 U 矩阵。命令“仅”允许我分解矩阵并稍后使用置换矩阵重建它。但是,对于我的代码,我需要将稀疏矩阵 A 分解为稀疏矩阵 L 和 U,然后能够分别调用 L 和 U 矩阵(没有置换矩阵等)。scipy.sparse.linalg.splu()这在使用命令时不起作用。我可以使用scipy.linalg.lu(),但不能将其应用于稀疏格式的矩阵 A。有没有其他方法可以从稀疏矩阵 A 中获得正确的 L 和 U 分解矩阵?提前致谢。

0 投票
1 回答
29 浏览

gcc - Gcc 给出 [1] 504 ...这是什么?

我编译了交流食谱,不知道我是否做对了。它确实编译了。我将一个矩阵匹配到指定的格式并运行: ./croutLU matrix1 & tee > b 第一次响应似乎成功但“b”为空。第二次运行生成的相同命令:[1] 654 并且挂起...我重新启动、重新编译并再次运行它:[1] 504 我使用的是 freeBSD。什么是“[1] 504” 谁能告诉我这里发生了什么。事情进展顺利吗?还是错了?谢谢乔纳森·恩格沃尔

0 投票
1 回答
27 浏览

python-2.7 - 如何将求解函数的结果更新为原始 L 和 U 矩阵?

我可以找到要解决的每个方程,但我似乎无法更新原始矩阵中的每个计算结果。

我试图在矩阵中进行项集,用求解函数的实际结果替换 u 变量。但随后它给出了以下错误: TypeError: can't multiply sequence by non-int of type 'Symbol'

不知道还能做什么!

它应该给我求解的每个方程的数值结果。

0 投票
1 回答
228 浏览

python - 近端交替线性化最小化算法的python实现

在此处输入图像描述 梯度的更新在某种程度上是错误的。

我已经实现了以下给定的算法。我做错了什么

在此处输入图像描述

我相信从 W 的第二行和 D 的第二列中 D 和 W 的更新是错误的

0 投票
1 回答
115 浏览

r - Rfast hd.eigen() 返回 NA,但基本 eigen() 不返回

我在使用hd.eigenin时遇到问题Rfast。它给出了与大多数数据非常接近的结果eigen,但有时 hd.eign 会返回一个空的 NAs$vector或其他不需要的结果。例如:

除了它破坏了我的脚本之外,这些 NA 是否表明我的数据存在更深层次的问题?还是hd.eig无法处理股票eigen()可以处理的某些情况?这个比那个好吗?

编辑:根据拉尔夫的建议,我检查了我的 BLAS 版本,看起来 R 可能正在寻找错误的版本/在错误的位置:

另外,我不清楚 openBLAS 是否等同于其他发行版中默认安装的 BLAS。

编辑 2:我在基于 CentOS 的 HPC 系统上尝试了相同的示例,但没有得到任何 NA。在那里,sessionInfo()揭示了:

编辑3:hd.eign产生NA的表达式是

具体来说,L^(-0.5)在索引 2000 处产生 NaN

但是,在没有返回 NA 的两台机器上,L[2000] 是正数(虽然略有不同,但5.822884e-14在 HPC 系统和3.022511e-12我的运行 Microsoft 构建的 R.

编辑 4:差异似乎源于基函数,它从问题机器上的矩阵eigen()返回一个负值,而不是其他两个。我保存了对象并在计算机之间打开,所以我知道输入是完全相同的。crossprod()xxxxeigen()

编辑5:我钻了一层更深,发现原来的负值来自这个语句eigen()

编辑 6:如果我保存为 CSV 然后重新打开,问题计算机不会产生负特征值。

这会给任何人一个线索吗?这是一个错误吗?

0 投票
2 回答
271 浏览

python - Cholesky 分解浮点数错误

在不使用 numpy.linalg.* 的情况下在 Python 中实现 Choleky 分解(是的,这是一个作业)我遇到了一个关于使用浮点数的问题。我的算法适用于正数整数:

我事先测试了矩阵的对称性;n 是维度,L 成为下三角 Cholesky 因子。

使用随机浮点 nxn 矩阵乘以它们的转置(为了得到一个正定矩阵),两个 ValueErrors 都会被提升,即在没有提升 ValueErrors 的情况下,L 输出矩阵部分填充了 NaN 和 inf 值。如何在 python 中处理浮点数?

编辑:最小可重现示例:

0 投票
1 回答
401 浏览

python - python中五对角矩阵的Cholesky优化

所以我正在处理这个五角矩阵A,大小n在此处输入图像描述

(这里还有五角矩阵的一般信息: https ://en.wikipedia.org/wiki/Pentadiagonal_matrix )我正在使用Cholesky 分解来获得矩阵L的矩阵A,其中L*L.T=A,(L.T是 L 的转置)根据算法 。所以标准算法numpy是:

你可以在这里看到这个页面,它也有数学公式。我对 Python3 和 numpy 的使用做了一些修改: https ://www.quantstart.com/articles/Cholesky-Decomposition-in-Python-and-NumPy

好吧,我想优化算法,因为A我正在处理的矩阵是一个稀疏矩阵,我想测试它是否非常大n(即 for n=10000)。对于经典的cholesky,它没有被优化,因为有很多不需要访问的零。到目前为止,我尝试的是更改代码行的范围

至 :

为了不sum每次都计算零点。可以进一步优化吗?因为仍然可以访问零并且不需要进行计算。或者另一种解决方案可能是采用我们原始的矩阵A并在其上应用cholesky?