Алгоритм Хаусхолдера (метод отображений) не работает

Задача - решить СЛАУ приведя матрицу А к верхне-треугольному виду используя алгоритм Хаусхолдера (метод отображений). Так вот матрица не становится треугольной. Не могу найти ошибку. Все формулы взяты из методички.

def HH(A, b):
     n = A.shape[0]
     for j in range(n):
        H = np.eye(n)   
        a = A[j:, j].copy()
        r = np.linalg.norm(a, ord = 2)
        w = np.array([])
        if r == 0 or np.array_equal(a[a==0], a[1:]):
            w = 0
        elif r != 0 and a[0] == 0:
            a[0] -=  r
            w = a/np.linalg.norm(a, ord = 2)
        else:
            a[0] += r*np.sign(a[0])
            w = a/np.linalg.norm(a, ord = 2)
        H[j:, j:] -= 2*np.outer(w, w)
        A = np.dot(H, A)
        b = np.dot(H, b)`

Ответы (0 шт):