问题标签 [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.
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# 中这样做:
并在控制台中打印特征向量。
c# - 为什么使用 Parallel.For 的 LU 分解不起作用?
根据本文档,我正在尝试使用 Doolittle 算法解决 LU 分解。如果没有并行化,代码可以正常工作。但是,我想让这段代码并行运行——尝试创建一个并行的外部循环和两个内部循环。不幸的是,我仍然缺少一些东西。如果我试图首先让外循环并行运行,我会收到一个糟糕的结果。
我试图检测可能发生碰撞的位置。之后我锁定了那些地方,但我仍然没有收到正确的结果。我将它们作为注释添加到复制的代码中。我做错了什么,我需要锁定其他地方吗?
外循环的正确实现是什么?
内部循环会是什么样子?
先感谢您。
算法的实现(顺序)
算法的实现(并行)
顺序正确结果
并行坏结果
编辑 我试图用一把锁锁定所有进入字段的方法。我知道以这种方式失去所有并行化。但是,我想至少获得正确的结果,不幸的是没有成功。
eigenvalue - EigenvalueDecomposition 返回错误的特征向量
我正在使用 apache.commons.math3 库来计算 3x3 矩阵的特征向量,但是用于计算特征向量的 EigenDecomposition 方法返回错误的结果:这是我的代码:
打印结果如下:
而正确的应该是
问题是什么?是精度误差吗?在我看来,这样一个错误的结果是不可能的
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
高效稳定地计算。
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
而言,我在哪里可以找到适用于对角带矩阵的特殊情况的算法?
numpy - 特征分解让我想知道 numpy
我测试了 A = Q * Lambda * Q_inverse 的定理,其中 Q 是具有特征向量的矩阵,而 Lambda 是具有对角线特征值的对角线矩阵。
我的代码如下:
哪个返回:
返回的矩阵不应该和被分解的原始矩阵一样吗?
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)继续这个过程,并且我想了解我的不同聚类的特征,这些特征将来自最后的算法(通过了解主要成分的结构)。
python - SciPy 广义特征值:eig 和 eigh 产生不同的结果
使用scipy
,我想计算一个广义特征值问题(请参阅此链接)。
就我而言,matrix A
它是对称且真实的,尽管不是肯定的(它不需要是 afaik)。Matrix B
是实数、对称和正定的。因此,两种scipy
算法eig
都eigh
应该工作,我希望它们产生相同的结果。
但事实并非如此。要重现,请考虑以下试验矩阵:
这不仅发生在我的计算机上,而且可以在不同的机器上重现。
我很困惑,为什么两种算法中的特征向量不相同?我需要担心吗?
重现代码(例如在https://www.katacoda.com/courses/python/playground):
python-3.x - 如何分解仿射矩阵?
我在两个 3D 系统中有一系列点。有了它们,我使用 np.linalg.lstsq 来计算两者之间的仿射变换矩阵(4x4)。但是,由于我的项目,我必须“禁用”转换中的剪切。有没有办法将矩阵分解为基本变换?我已经找到了如何进行平移和缩放,但我不知道如何分离旋转和剪切。如果没有,有没有办法从不包括剪切的点计算转换矩阵?顺便说一句,我只能使用 numpy 或 tensorflow 来解决这个问题。