问题标签 [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.
r - R中的QR分解和Choleski分解
我最近读到了如何使用 Choleski 分解计算 QR 分解的 R 矩阵。关系是:
R = Choleski 分解(A^TA)
例子:
现在计算 QR 和 Choleski 分解:
正如所观察到的,从 Choleski 和 QR 分解计算的 R 矩阵的值并不相同。第一行和第三行chol(AtA)
被否定 wrt qr.R(qr_A)
。这是为什么?我假设的关系不正确吗?
algorithm - 使用伴随矩阵求根
我想找到一个单变量多项式的所有实根。例如,我可以使用 Jenkins-Traub 算法,但我想学习如何使用伴随矩阵来解决它。
我知道如何将多项式转换为伴随矩阵,并且我找到了一个执行 QR 分解的脚本:http: //quantstart.com/articles/QR-Decomposition-with-Python-and-NumPy
这就是我迷失的地方:下一步该做什么?我想我必须计算多个分解,但是当我这样做时,我总是得到相同的结果(显然)。我还读到,首先将伴随矩阵转换为 Hessenberg 形式可能很有用 - 但是如何?然后是“轮班”——它们是什么?
我还找到了http://www.nr.com/webnotes/nr3web17.pdf但由于我什么都不懂,我想知道是否有更简单的方法(即使速度较慢或不太稳定)。
换句话说:阅读http://en.wikipedia.org/wiki/QR_algorithm
“让 A 成为我们想要计算其特征值的实矩阵”
好的,那是我的伴生矩阵,对吗?“我们计算来自第一个链接的 QR 分解 Ak=QkRk”,对吗
?Q, R = householder(A)
“然后我们形成 Ak+1 = RkQk”
很容易,只需将 R 和 Q 相乘“在一定条件下,[2] 矩阵 Ak 收敛到一个三角矩阵,即 A 的 Schur 形式。三角矩阵的特征值列在对角线上,特征值问题就解决了。”
/li>
……等等,什么?我试过了:
但似乎没有任何进展,我什至看不到任何接近正确根源的数字。
请问,谁能给我解释一下?
PS:我不想盲目地使用 LAPACK 或类似的东西,因为我想了解它是如何工作的,至少在非常简化的方面。
PPS:还有http://adorio-research.org/wordpress/?p=184(不知道它与第一种方法有什么不同,虽然......)
r - 从 QR 分解中获取帽子矩阵以进行加权最小二乘回归
我正在尝试扩展lwr()
package 的功能McSptial
,它将加权回归拟合为非参数估计。在函数的核心中,它使用QR 分解而不是 QR 分解来lwr()
反转矩阵,从而导致数值不稳定。solve()
我想更改它,但无法弄清楚如何从 QR 分解中获取帽子矩阵(或其他导数)。
有数据:
lwr()
功能如下:
我需要的值,例如:
目前我使用reg <- lm.wfit(x=xmat, y=y, w=w)
但无法从其中取回在我看来是帽子矩阵 ( xmat1
) 的东西。
r - 在 QR 分解中计算 R 矩阵并在 R 中旋转列
我有一个矩阵A
,可以通过以下代码获得:
我想对矩阵应用 qr 分解与列旋转A
,然后我执行以下代码来获取矩阵R
,但我们知道t(R)%*%R
应该与矩阵相同A
,为什么它们根据行或列的顺序不同?我怎样才能得到正确的矩阵R
?
matlab - Matlab中使用QR分解求解最小二乘
我正在使用 Matlab 估计具有普通最小二乘法 (OLS) 的回归模型。
该模型是y = xB
,其中x
是一个非常稀疏的矩阵,其维度为500000 x 2500
。我正在使用 QR 分解:
然后b
估计
我的问题是我是否需要担心这里的数字错误。我需要做一些额外的迭代吗?R
我应该检查, 或的条件数R'R
吗?任何指导将不胜感激。
python - 使用 numpy 和 CULA 的不同 QR 分解结果
我以两种不同的方式执行 QR 分解:使用标准 numpy 方法和使用在 CULA 库中实现的 GEQRF LAPACK 函数。这是python中的简单示例(用于访问CULA的PyCULA):
它产生以下输出:
我的代码有什么问题?
matlab - 使用 Givens-rotations 计算 Hessenberg 矩阵
我正在 matlab 中实现计算给定矩阵 A 的 Hessenberg 矩阵。我理解数学并且我手动计算了它,但我一直在使用相同的解决方案。
矩阵 A =
我的结果=
matlab中的hess结果=
我获得的结果是仅使用一个 Given 旋转
G{1}(3,4)
G{1}(3,4).transpose * A * G{1}(3,4) 应该得到正确的解决方案。
如您所见,我获得的结果有一些不属于它们的减号。我的实现是错误的还是 hess 的实现是错误的,或者它们都是有效的?
提前谢谢了!
python - 在 scipy/numpy 中 n > m 的矩形矩阵的 QR 分解
我有一个 n > m 的 amxn 矩形矩阵 A。给定 A 的秩 r <= m,简化的 QR 分解产生具有 mxr 维的矩阵 Q,以及具有 rxn 维的 R。Q 的列是 A 范围的正交基。R 将是上三角形,但呈阶梯状。R 中带有枢轴的列对应于 A 中的独立列。
当我从 numpy.linalg 应用 qr 函数时(在 scipy.linalg 中也有这个函数的一个版本,这似乎是相同的),它返回矩阵 Q 具有 mxm 维度,以及 R 具有 mxn 维度,即使排名为矩阵 A 小于 m。这似乎是“完整”的 QR 分解,其中 Q 的列是 Re^m 的正交基。是否可以通过 numpy.linalg;scipy.linalg 中函数 qr 返回的这个 R 矩阵来识别 A 的独立列?
c++ - Eigen SparseQR 矩阵逆并不像 Matlab 中那样精确
在我的算法中,我采用了稀疏矩阵逆运算,并通过使用 QR 分解方法的 A*x=b 方法来解决它。在 Matlab 上,QR 操作运行良好。
但是,当我尝试使用 Eigen 库将代码转换为 C++ 时,我没有得到相同的答案。在某些情况下,与 Matlab 中的结果相比,向量 x 的每个元素都有一些值的偏移。然而,导致移位的这个值在向量中的所有元素中都是恒定的。
一瞥我所做的事情:
x 是我的最终向量,其中包含 A.inverse()*b 的结果,不是吗?
此外,我试图将它作为一个完整的矩阵来解决,但与 Matlab 相比,在 C++ 上仍然产生了不同的答案。
这里有没有人遇到过类似的问题?如果是,欢迎任何帮助或指点。另一方面,如果我的理解有问题,也感谢任何纠正。
谢谢。