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归零,而是通过以最简单的方式正确旋转基数.
谢谢!
您正在寻找Schur分解.Schur分解将矩阵分解A为A = 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)