寻找 upper/lower 任意矩阵 n*n 的三角形式 - python

Finding upper/lower triangular form of arbitrary matrix n*n - python

每个矩阵都可以简单地通过旋转基础来写成上三角或下三角形式。 python (numpy) 中是否有一个简单的例程来做到这一点?我找不到它,我不敢相信没有这样的东西。举个例子:

matrix = numpy.array([[a,b,c],
                      [d,e,f],
                      [g,h,i]])

matrix2 = numpy.array([[z,0,0],
                       [y,x,0],
                       [v,u,t]])

字母是浮点数。那么如何进行这种改变,但不仅仅是通过将数字 b、c 和 f 归零,而是通过以最简单的方式正确旋转基础。

谢谢!

您正在寻找 Schur decomposition。 Schur 分解将矩阵 A 分解为 A = Q U Q^H,其中 U 是上三角矩阵,Q 是酉矩阵(影响基旋转),Q^HQ 的 Hermitian 伴随。

import numpy as np
from scipy.linalg import schur

a = np.array([[ 1., 2., 3.], [4., 5., 6.], [7., 8., 9.]])
u, q = schur(a) # q is the unitary matrix, u is upper triangular

repr(u)
# array([[  1.61168440e+01,   4.89897949e+00,   1.58820582e-15],
#        [  0.00000000e+00,  -1.11684397e+00,  -1.11643184e-15],
#        [  0.00000000e+00,   0.00000000e+00,  -1.30367773e-15]])