问题标签 [qr-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 回答
234 浏览

r - R和Matlab中复矩阵QR分解的区别

使用下面的矩阵A,我在 [R] 和 Matlab 之间的 QR 分解中得到了 R 的不同矩阵。(当然,Q 也不同。)

而使用 Matlab:

检查 R 软件的分解,我必须重新排序 R 矩阵的列以A使用重新创建我的原始矩阵Q %*% R[, QR$pivot],但这当然会破坏 R 的上三角特性:

而使用 Matlab,直接Q * R工作:

我意识到 QR 分解不是唯一的,但我需要得到一个上三角 R 矩阵,就像在 Matlab 中一样,我可以随后使用它而无需重新排列它的列,这样Q %*% R = A.

R软件中关于我如何实现这一目标的任何建议?

更新:建议可以在此处回答问题,但该答案仅适用于矩阵,而我的查询适用于complex

0 投票
0 回答
293 浏览

c++ - Eigen C++中的QR分解 - 符号问题

我需要为一个项目计算一些行列式:我使用 c++ 14 和 Eigen。

因此,MatrixXd A 是具有 X 行和 X 列的特征矩阵,并且包含双精度值。为了计算行列式,我使用 A.determinant()。让我们假设 A.determinant() 等于 d。然后,当我使用 QR 分解时出现问题,因为 R.determinant() 等于 -d,应该等于 d。这仅发生在大型矩阵(大小大于 5 - 我观察到这一点)。只有标志有问题,为什么?

我的代码:

我该如何解决这个问题? 图像

0 投票
1 回答
76 浏览

matrix - Xilinx Vivado_HLS 提供的线性代数库中的 QRF_ALT 函数中使用的算法是什么?

随 Vivado HLS 安装一起提供了一个线性代数库。在这个库中有这个函数 QRF_ALT,它应该是 Qrf-basic 的高吞吐量版本:使用给定旋转的 QR 分解。

我的问题是它如何实现高吞吐量?从随代码提供的简短注释来看,我的猜测是它使用批量矩阵行的并行处理,但它是如何安排的,我无法理解。

有没有人有任何 Vivado HLS 的经验可以帮助我?在这一点上,任何帮助将不胜感激。

该库位于(linux)中

文件也可以在这里找到:

https://filebin.ca/5gtV16lXK4ZT/qrf_alt.h

https://filebin.ca/5gtVEqUqccsx/qrf_alt.cpp

https://filebin.ca/5gtVLiMVGsbv/qrf_alt_tb.cpp

0 投票
1 回答
660 浏览

python-3.x - 用于特征向量 Python 的 QR 方法

我正在尝试使用 QR 方法找到矩阵 A 的特征向量。我找到了对应于最大特征值的特征值和特征向量。如何在不使用 numpy.linalg.eig 的情况下找到其余的特征向量?

接下来我检查条件:

检查条件:

0 投票
0 回答
60 浏览

eigen - 使用 Eigen C++ 库的 R 矩阵(QR 分解)的条件数

我想知道是否(如何)可以计算 QR 分解,然后使用 Eigen C++ 库计算 R 矩阵的条件数。

我知道如何使用 QR 进行最小二乘求解,但不知道如何对 Q 和 R 矩阵本身进行计算。

0 投票
0 回答
57 浏览

linear-algebra - 面向行和面向列在矩阵中是什么意思

我正在阅读论文“ Gram Schmidt 正交的数值”,然后我注意到论文中的 P299 有一些我无法理解的术语是“面向行”和“面向列”。

原句是“在面向行的 MGS 中,一个矩阵序列,A=A1, A2, ..., An is computed...”。

我google了一下,发现“面向行/列”主要用于数据库。一个易于理解的来源是这篇文章

然后我发现我可以理解的矩阵理论中的“行/列主要”是您计算机中的存储类型,可以在这篇文章中找到。基于它出现在论文中的上下文,我很确定“面向行/列”不是“以行/列为主”。(如果是这样,为什么算法仍然按“row_orient”矩阵中的列访问数据?)

0 投票
0 回答
32 浏览

r - 使用 Matrix::qr() 在稀疏矩阵中完美共线性检测

该练习的总体目标是X在线性回归问题的上下文中,在 R 中一个非常大但稀疏的矩阵中找到完全共线的列。不时出现的一种方法是利用底层的 QR 分解lm()来提取 OLS 系数并删除所有分配NA为估计值的变量。虽然base::qr()速度太慢而无法成为可行的选择,但它可以Matrix::qr()很好地处理稀疏矩阵并且速度非常快。不幸的是,这两种实现的结果是完全不同的。

考虑玩具数据集

其中 variablex3是 和 的线性组合,x1因此x2目标是从x3下降Xbase我们可以使用以下方法快速估计 OLS 系数

在这里,系数x3自动NA根据需要设置为 。X通过使用密集矩阵作为 的输入,可以获得类似的结果Matrix::qr()。但是,使用稀疏矩阵类时情况会发生变化:

X由于没有满级而在某些时候明显出错的地方。有没有办法生成类似于base::qr()using的结果Matrix::qr()

0 投票
0 回答
11 浏览

matrix - 找到外积最接近给定(方形)矩阵的列和行向量的最快方法是什么?

我正在寻找最快的方法来计算其外积最接近给定(方形)矩阵的列和行向量。理想情况下,我想要一个原始算法,而不需要外部依赖项(如矩阵特征值提取等)。

为了判断这种情况下“最佳近似”是什么意思,获取上下文可能会有所帮助:这样做的目的是我想通过分离一个大的方形二维滤波器内核(矩阵) 到两个 1D 滤波器内核(计算的列和行向量)。我假设最小化原始矩阵和近似值之间的平方差可能是这里的最佳选择。

如果可能的话,算法解释对我的帮助远远超过非常复杂的数学符号。:)

0 投票
1 回答
114 浏览

c - 为什么 QR 分解不能正常工作?(Lapacke,复杂案例)

我用拉帕克。我正在尝试在 C 中对复杂数据进行 QR 分解。为此,我编写了函数(基于 Haatschii 代码How to get the Q from the QR factorization output?):

值得注意的是,Alireza 的作者也遇到了函数znugqr的问题,但他切换到函数zunmqr似乎幸福来了(LAPACK QR 分解)。我相信我的问题也与LAPACKE_zungqr矩阵 R 与其他方法相同,因此LAPACKE_zgeqrf可以成功运行。

但是最后,用 Mathematica(QRDecomposition函数)和 Python(numpy.linalg.qr函数)比较相似的结果(QR 分解),我看到矩阵 Q 是不同的,而矩阵 R 是相同的。

输入矩阵,为简单起见 5×5:

输出 Q 矩阵(来自我的 C 代码):前 3 列:

最后两列:

输出 Q 矩阵(来自 Python 代码):

(这里我只列出这个矩阵的最后 2 列。前 3 列是相同的)。

我计算了这些矩阵中各列的最大和平均差异。结论是这样的:前三列在水平上10^-11不同,后两列的差异分别是10^-3, 10^-2(肉眼可见的差异)。

随着矩阵大小的增加,观察到差异的增加,并且通常前 2-3 列很好地吻合。

也许有人可以帮助我?