def qr_fast_givens(A):
'''
QR factorization via fast givens transformation
'''
m = A.shape[0]
n = A.shape[1]
d = np.ones(m)
for j in range(n):
for i in range(m-1, j, -1):
alpha, beta, ty = givens.fast_givens(A[i-1:i+1, j], d[i-1:i+1])
if ty == 1:
A[i-1:i+1, j:n+1] = np.array([[beta, 1],
[1, alpha]]).dot(A[i-1:i+1, j:n+1])
else:
A[i-1:i+1, j:n+1] = np.array([[1, alpha],
[beta, 1]]).dot(A[i-1:i+1, j:n+1])
return A
# least square using QR (A must be full column rank)
评论列表
文章目录