Untitled

 avatar
unknown
python
2 years ago
391 B
6
Indexable
def tridiagonalization(A):
    m,n = np.shape(A)
    for k in range(0,m-2):
        x = A[k + 1 : m, k]
        size = np.size(x)
        e1 = np.eye(1,size,0)
        vk = np.sign(x[0])*scipy.linalg.norm(x)*e1 + x
        vk = vk/scipy.linalg.norm(vk)
        A[k+1:m,k:m] = A[k+1:m,k:m] - 2*vk.T@(vk@A[k+1:m,k:m])
        A[0:m,k+1:m] = A[0:m,k+1:m] - 2*(A[0:m,k+1:m]@vk.T)@vk
    return A
Editor is loading...