Мне нужно сделать все остальные столбцы матрицы A
ортогональными одному из ее столбцов j
.
Я использую следующий алгоритм:
# Orthogonalize with selected column
for i in remaining_cols:
A[:,i] = A[:,i] - A[:,j] * np.dot(A[:,i], A[:,j]) / np.sum(A[:,j]**2)
Идея приходитиз QR-разложения с процессом Грамма-Шмидта .
Но этот код не оптимизирован и нестабилен из-за процесса Грамма-Шмидта.
Предоставляет ли Numpy какой-либо метод?вычислить ортогональную проекцию этих векторов?
С матрицей домохозяев
Я слышал, что отражатели домовладельцев используются в numpy.linalg.qr
.Это позволило бы мне вычислить ортогональную матрицу Q
, чтобы
Q * A[:,j] = [0 ... 0 1 0 ... 0]
|
j_th coordinate
Мне пришлось бы только игнорировать строку j
и умножить обратно на Q.T
.
Есть лиспособ получить матрицу домохозяина с Numpy?Я имею в виду, не кодируя алгоритм вручную.