【发布时间】:2014-09-30 22:24:24
【问题描述】:
我有一个 m x n 矩阵 A,n > m,我试图通过它的行梯形来识别独立的行。函数 scipy.linalg.lu 返回我的矩阵的 PLU 分解,但 U 因子似乎不是梯形形式,即枢轴不是阶梯模式。据我所知,U 因子应该总是呈阶梯状。
考虑以下示例:
from numpy import array
from scipy.linalg import lu
A = array([[1, 1, 1, 1, 0, 1, 1, 1, 1, 0],
[1, 1, 0, 0, 1, 0, 1, 0, 1, 1],
[1, 1, 0, 0, 0, 1, 1, 0, 0, 0],
[0, 1, 0, 1, 1, 0, 1, 0, 0, 1],
[1, 1, 0, 0, 1, 1, 1, 1, 1, 1]])
P, L, U = lu(A)
U 因子不是行梯形。对于每一行 k,枢轴应始终位于第 k-1 行中枢轴的右侧。看到第五行的枢轴不在第四行的枢轴右侧:
array([[ 1., 1., 1., 1., 0., 1., 1., 1., 1., 0.],
[ 0., 1., 0., 1., 1., 0., 1., 0., 0., 1.],
[ 0., 0., -1., -1., 0., 0., 0., -1., -1., 0.],
[ 0., 0., 0., 0., 1., -1., 0., 0., 1., 1.],
[ 0., 0., 0., 0., 1., 0., 0., 1., 1., 1.]])
【问题讨论】:
-
请提供示例代码。
-
顺便说一句,我已经解决了通过 QR 分解来识别独立行的问题,虽然我的第一次尝试是按照线性代数教科书通过高斯消去法来识别它们。
-
scipy.linalg.lu(docs.scipy.org/doc/scipy/reference/generated/…) 并没有说U将采用行梯形 (en.wikipedia.org/wiki/Row_echelon_form)。它说它将是上三角形(mathworld.wolfram.com/UpperTriangularMatrix.html)。
标签: python numpy matrix scipy linear-algebra