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