问题标签 [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 投票
0 回答
803 浏览

c# - 使用 Accord.NET 计算 3x3 矩阵的特征值和特征向量

我想从 3x3 矩阵中获取特征向量和特征值。

我已经尝试过使用EigenvalueDecomposition来自 Accord 的。结果特征向量的问题(?)是特征向量的在线计算器给了我与 Accord.NET 不同的向量。

EigenvalueDecomposition更准确地说,我在这个测试矩阵上尝试了 Accord :

(1, 2, 3)

(4, 5, 6)

(7, 8, 9)

arndt-bruenner计算器(http://www.arndt-bruenner.de/mathe/scripts/engl_eigenwert2.htm)给我这些结果:

真实特征值:{ -1.1168439698070431 ; 0; 16.116843969807043 }

特征向量:

对于特征值 -1.1168439698070431:

[ -0.785830238742067 ; -0.08675133925662847;0.6123275602288102]

对于特征值 0:

[ 0.4082482904638631 ; -0.8164965809277261;0.4082482904638631]

对于特征值 16.116843969807043:

[0.2319706872462859; 0.5253220933012337;0.8186734993561815]

现在,当我在 Accords EigenvalueDecomposition 上使用此测试矩阵时,我得到以下结果:

(0.231970687246286, 0.816964204061037, 0.408248290463863)

(0.525322093301234, 0.0901883579085377, -0.816496580927726)

(0.818673499356182, -0.636587488243964, 0.408248290463863)

然而,特征值与在线计算器的结果是正确的。

我做错了什么,我该如何正确使用 Accord 的功能呢?

我只在 c# 中这样做:

并在控制台中打印特征向量。

0 投票
1 回答
462 浏览

c# - 为什么使用 Parallel.For 的 LU 分解不起作用?

根据本文档,我正在尝试使用 Doolittle 算法解决 LU 分解。如果没有并行化,代码可以正常工作。但是,我想让这段代码并行运行——尝试创建一个并行的外部循环和两个内部循环。不幸的是,我仍然缺少一些东西。如果我试图首先让外循环并行运行,我会收到一个糟糕的结果。

我试图检测可能发生碰撞的位置。之后我锁定了那些地方,但我仍然没有收到正确的结果。我将它们作为注释添加到复制的代码中。我做错了什么,我需要锁定其他地方吗?

外循环的正确实现是什么?

内部循环会是什么样子?

先感谢您。



算法的实现(顺序)

算法的实现(并行)

顺序正确结果

并行坏结果

编辑 我试图用一把锁锁定所有进入字段的方法。我知道以这种方式失去所有并行化。但是,我想至少获得正确的结果,不幸的是没有成功。

0 投票
1 回答
156 浏览

eigenvalue - EigenvalueDecomposition 返回错误的特征向量

我正在使用 apache.commons.math3 库来计算 3x3 矩阵的特征向量,但是用于计算特征向量的 EigenDecomposition 方法返回错误的结果:这是我的代码:

打印结果如下:

而正确的应该是

问题是什么?是精度误差吗?在我看来,这样一个错误的结果是不可能的

0 投票
1 回答
320 浏览

c++ - 当 A=LLt 时求解 Lx=b 和 Px=b

我正在使用 Eigen 分解稀疏 SPD 矩阵 A。它将是 LLt 或 LDLt 分解(Cholesky),因此我们可以假设矩阵将分解为A = P-1 LDLt P其中 P 是置换矩阵,L 是下三角形,D 是对角线(可能是单位矩阵)。如果我做

要解决Lx=b那么执行以下操作是否有效?

同样,要解决Px=b那么执行以下操作是否有效?

我想这样做是为了bt A-1 b高效稳定地计算。

0 投票
1 回答
87 浏览

linear-algebra - NURBS:我在哪里可以找到这两个线性代数效用函数?

我正在阅读Piegl 和 Tiller的 NURBS Book。对于全局插值算法,它们要求您提供两个实用程序来求解线性方程组:

LUDecomposition(A, q, sbw)q x q具有半带宽的系数矩阵分解sbw为下三角分量和上三角分量;为简单起见,我们假设A它是一个q x q方形数组,但应该使用一个只存储非零频带的实用程序。

ForwardBackward(A, q, sbw, rhs, sol)执行向前/向后替换(参见 [Press88]);rhs[] 是系统的右手边(Q_k 的坐标),sol[] 是解向量(P_i 的坐标)。

检查参考 Press88,我发现它是C 中的数字食谱。我应该能够修改那本书中的算法以获得ForwardBackward函数,但就目前LUDecomposition而言,我在哪里可以找到适用于对角带矩阵的特殊情况的算法?

0 投票
1 回答
5752 浏览

numpy - 特征分解让我想知道 numpy

我测试了 A = Q * Lambda * Q_inverse 的定理,其中 Q 是具有特征向量的矩阵,而 Lambda 是具有对角线特征值的对角线矩阵。

我的代码如下:

哪个返回:

返回的矩阵不应该和被分解的原始矩阵一样吗?

0 投票
1 回答
916 浏览

scikit-learn - X_transformed_fit_ 属性错误:AttributeError:“KernelPCA”对象没有属性“X_transformed_fit_”

我试图获取我的数据集中的哪些特征会影响主要成分,并试图观察我的数据如何适合我的内核 PCA 算法。我尝试使用纪录片中存在的 X_transformed_fit_ 属性,但出现此错误: AttributeError: 'KernelPCA' object has no attribute 'X_transformed_fit_'

我的 KPCA 代码如下:

如果这不是我能够获得如何解释我的 KPCA 组成的方式,那么我将如何理解这些主成分是构造的?我正在调查的原因是,我将通过聚类算法实现(K-means,凝聚 HC)继续这个过程,并且我想了解我的不同聚类的特征,这些特征将来自最后的算法(通过了解主要成分的结构)。

0 投票
1 回答
1582 浏览

python - SciPy 广义特征值:eig 和 eigh 产生不同的结果

使用scipy,我想计算一个广义特征值问题(请参阅此链接)。

就我而言,matrix A它是对称且真实的,尽管不是肯定的(它不需要是 afaik)。Matrix B是实数、对称和正定的。因此,两种scipy算法eigeigh应该工作,我希望它们产生相同的结果。

但事实并非如此。要重现,请考虑以下试验矩阵:

这不仅发生在我的计算机上,而且可以在不同的机器上重现。

我很困惑,为什么两种算法中的特征向量不相同?我需要担心吗?


重现代码(例如在https://www.katacoda.com/courses/python/playground):

0 投票
1 回答
1838 浏览

python-3.x - 如何分解仿射矩阵?

我在两个 3D 系统中有一系列点。有了它们,我使用 np.linalg.lstsq 来计算两者之间的仿射变换矩阵(4x4)。但是,由于我的项目,我必须“禁用”转换中的剪切。有没有办法将矩阵分解为基本变换?我已经找到了如何进行平移和缩放,但我不知道如何分离旋转和剪切。如果没有,有没有办法从不包括剪切的点计算转换矩阵?顺便说一句,我只能使用 numpy 或 tensorflow 来解决这个问题。

0 投票
1 回答
2877 浏览

r - R 函数 eigen() 返回的特征向量是否错误?

我正在尝试在 R 中查找特征值和特征向量。函数eigen适用于特征值,但特​​征向量值存在错误。有没有办法解决这个问题?

特征值和向量的代码