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

matrix - 如何从 QR 分解输出中获得 Q?

LAPACK 中的DGEQRF 和 SGEQRF以打包格式返回 QR 分解的 Q 部分。拆包似乎需要一些O(k^3)步骤(k 个低等级产品),而且似乎不是很简单。k另外,我不清楚进行顺序乘法的数值稳定性。

LAPACK 是否包含解包 Q 的子程序,如果没有,我应该怎么做?

0 投票
1 回答
135 浏览

linear-algebra - 矩形矩阵的 Lapack 正交归一化函数

我想知道 Lapack 中是否有一个函数可以对一个非常高而瘦的矩阵的列进行正交归一化。一个类似的先前问题问了这个问题,大概是在方阵的上下文中。我的设置如下:我有一个 M 乘 N 矩阵 A,我正在尝试对其列进行正交归一化。

所以,我的第一个想法是做一个二维码分解。在 Lapack 中进行 qr 分解的函数似乎是 dgeqrf 和 dormqr。伟大的。但是,我的问题如下:我的矩阵 A 太高了,我不想实际计算所有 Q,因为它是 M × M。事实上,我无法实例化 M × M 矩阵在我的任何计算过程中(它不适合内存)。我宁愿只计算维基百科调用的矩阵 Q1。但是,我似乎无法找到一种方法来完成这项工作。

奇怪的是,我认为这是可能的。特别是 Numpy,有一个函数numpy.linalg.qr似乎就是这样做的。但是,即使在阅读了他们的源代码之后,我也无法弄清楚他们是如何使用 lapack 调用来使其工作的。

人们有想法吗?我强烈希望它只使用 lapack 函数,因为我希望将此代码移植到 CuSOLVE,它已经为 GPU 实现了几个 lapack 函数(包括 dgeqrf 和 dormqr)。

0 投票
0 回答
3725 浏览

c - 在 C 中实现 QR 分解

问题解决了

看来我不小心写了 j 应该是 0 就行了

应该是哪个


我正在使用我的矩阵实现和各种辅助函数在 C 中实现 QR 分解。我编写了 main 函数,使用 Gram-Schmidt 过程将矩阵 A 分解为两个矩阵 Q 和 R:

qr

矩阵.c

我创建和使用的功能是

然而,我的 QRdecompose() 函数中有一个错误,其中 Q 矩阵的最后一列不正确,即值不同。我已经在 Eclipse 中使用 GDB 调试了 4 个小时,但我真的被卡住了,所以我想我会向 SE 寻求帮助。

主程序

我使用矩阵测试了我的代码:

矩阵

我的程序的输出产生

实际答案应该在哪里

Q 的行/列在模型答案中可能不同,但我的输出的实际行/列仍然正确,除了最后一列。

问题似乎发生在第一个循环的最后一次迭代中;我在里面打印了矩阵 R:

我不确定我的辅助函数中是否有任何错误,因为我在开始测试代码之前检查了它们,但是 QRdecompose() 函数内部的逻辑似乎有点不对劲。除了我还没有涉及的内存泄漏。任何人都可以在 QRdecompose() 中看到任何问题我错过了什么吗?

非常抱歉大量的代码帮助非常感谢!

0 投票
3 回答
1627 浏览

matlab - 我的例子表明 SVD 的数值稳定性不如 QR 分解

我在 Math Stackexchange 中问过这个问题,但似乎没有得到足够的关注,所以我在这里问。https://math.stackexchange.com/questions/1729946/why-do-we-say-svd-can-handle-singular-matrx-when-doing-least-square-comparison?noredirect=1#comment3530971_1729946

我从一些教程中了解到,在解决最小二乘问题时,SVD 应该比 QR 分解更稳定,并且能够处理奇异矩阵。但是下面我用matlab写的例子似乎支持了相反的结论。我对 SVD 没有深入的了解,所以如果你能在 Math StackExchange 的旧帖子中查看我的问题并向我解释,我将不胜感激。

我使用具有大条件数(e+13)的矩阵。结果显示 SVD 得到的误差(0.8)比 QR(e-27)大得多

0 投票
1 回答
5601 浏览

python - 使用改进的 Gram Schmidt 进行 QR 分解

问题:对于这个问题,给你一个名为 As 的矩阵列表,你的工作是找到每个矩阵的 QR 分解。

实现 qr_by_gram_schmidt:此函数将矩阵 A 作为输入并计算 QR 分解,返回两个变量 Q 和 R,其中 A=QR,Q 正交且 R 在对角线下方为零。

A 是一个 n×m 矩阵,其中 n≥m(即行多于列)。

您应该使用修改后的 Gram-Schmidt 过程来实现此功能。

输入:

As:数组列表

输出:

Qs:qr_by_gram_schmidt 输出的 Q 矩阵列表,顺序与 As 相同。对于形状为 n×m 的矩阵 A,Q 的形状应为 n×m。
Rs:qr_by_gram_schmidt 输出的 R 矩阵列表,顺序与 As 相同。对于形状为 n×m 的矩阵 A,R 的形状应为 m×m

我已经编写了我认为正确的 QR 分解代码:

如何编写循环来计算 As 中每个矩阵的 QR 分解并按该顺序存储它们?

编辑:代码也有一些错误。如果您能帮助我调试它,我将不胜感激。

谢谢

0 投票
1 回答
3419 浏览

r - 如何使用 R 中的 QR 分解计算最小二乘估计量的方差?

我正在尝试学习 QR 分解,但无法弄清楚如何在不求助于传统矩阵计算的情况下获得 beta_hat 的方差。我正在使用iris数据集进行练习,这就是我目前所拥有的:

谢谢你的帮助!

0 投票
1 回答
1323 浏览

tensorflow - TensorFlow 中的 QR 分解

我看到有一些方法可以在 TensorFlow 中进行Cholesky 分解和使用 QR 方法求解线性系统,但是,我找不到在 TensorFlow 中实现 QR 分解的方法。

如何在 TensorFlow 中执行 QR 分解?

0 投票
1 回答
1565 浏览

r - Writing a Householder QR factorization function in R code

I am working on a piece of code to find the QR factorization of a matrix in R.

But, Here I have not calculated in every step the matrix H that represents the householder reflection, also I have not calculated the matrix A in every step.

As H = I - 2 v v', if I multiply by Q I obtain

Now, this operations should be work in every step. However if I consider the first matrix H and he the second matrix H1.... these matrices will be of smaller that the first one. In order to avoid that I have used the next line of code:

but, I am not sure why the code is working well, when I generate the new vector a_r with the first k entries of zeros at every step.

0 投票
1 回答
2102 浏览

r - 使用 QR 分解在 R 中进行多元回归分析

我正在尝试编写一个使用 QR 分解解决多元回归的函数。输入:y向量和X矩阵;输出:b,e,R^2。到目前为止,我已经得到了这个并且非常卡住;我想我把一切都弄得太复杂了:

0 投票
0 回答
395 浏览

matrix - 用 Eigen 重新正交化矩阵

Eigen 中是否有任何内置方法可以重新正交化矩阵?当您乘以大量旋转时,矩阵最终将需要重新正交化。有一些标准技术,例如使用 SVD,当然可以花一天时间手动编写和优化它。但是我希望 Eigen 在某处内置了一些东西。之前提出了一个相关问题,但在 Eigen 的上下文中没有明确的答案。