找到任意矩阵n*n - python的上/下三角形

Add*_*man 3 python arrays numpy matrix linear-algebra

每个矩阵只需旋转基础即可以上三角形或下三角形写入.在python(numpy)中有一个简单的例程吗?我无法找到它,我不能相信没有这样的事情.为了说明它:

matrix = numpy.array([[a,b,c],
                      [d,e,f],
                      [g,h,i]])
Run Code Online (Sandbox Code Playgroud)

matrix2 = numpy.array([[z,0,0],
                       [y,x,0],
                       [v,u,t]])
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

Pas*_*ion 5

您正在寻找Schur分解.Schur分解将矩阵分解AA = Q U Q^H,其中U是上三角矩阵,Q是酉矩阵(影响基旋转)并且Q^H是Hermitian伴随Q.

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]])
Run Code Online (Sandbox Code Playgroud)