def householder(a): n = len(a) v = np.zeros(n) v[0] = np.linalg.norm(a) if a[0] < 0: v[0] = -v[0] v = v + a v = v / np.linalg.norm(v) H = np.eye(n) - 2 * np.outer(v, v) return H def qr_décomposition(A): m, n = A.shape Q = np.eye(m) R = A.copy() for j in range(min(m, n)): a = R[j:, j] H = np.eye(m) H[j:, j:] = householder(a) Q = Q @ H.T R = H @ R return Q, R这段代码中加减乘除这样的基本运算有多少次
时间: 2024-02-14 14:08:34 浏览: 139
C 代码 计算系统 A乘x=b 的线性最小二乘 (LLS) 解.rar
在这段代码中,加法、减法、乘法和除法的基本运算分别出现了:
- 加法:4次(v = np.zeros(n),v = v + a,v = v / np.linalg.norm(v),Q = Q @ H.T)
- 减法:2次(v[0] = -v[0],R = A.copy())
- 乘法:7次(2次np.outer(v, v),2次H @ R,2次Q @ H.T,1次H[j:, j:] = householder(a))
- 除法:1次(v = v / np.linalg.norm(v))
因此,基本运算一共出现了14次。
阅读全文