Python解线性方程组的直接法(基于吉文斯变换的QR分解)

2022-07-29,,,

基于吉文斯变换的QR分解

#  基于吉文斯变换的QR分解 import numpy as np def givens(A): m = A.shape[0] n = A.shape[1] P = np.mat(np.eye(n)) p1 = P for i in range(0, n-1): for j in range(i+1, n): if A[i, j] == 0: continue else: c1 = np.sqrt(np.sum(np.multiply(A[i:j, i], A[i:j, i]))) d = np.sqrt(np.sum(np.multiply(A[i:j+1, i], A[i:j+1, i]))) s1 = A[j, i] c = c1/d
                s = s1/d
                P[i, i] = c
                P[i, j] = s
                P[j, i] = -s
                P[j, j] = c
                A = P*A
                p1 = P * p1
                P = np.mat(np.eye(n)) for i in range(m): for j in range(n): if abs(A[i, j]) < 10**-10: A[i, j] = 0 return A, p1.T if __name__ == "__main__": ai = np.mat([[3, 5, 5], [0, 3, 4], [4, 0, 5]], dtype=float) aa, po = givens(ai) print('基于吉文斯变换的QR分解:') print('R:') print(aa) print('Q:') print(po) 

求解结果如下图所示:

专栏文章

Python解线性方程组的直接法(1)————高斯消元法
Python解线性方程组的直接法(2)————高斯列元主元素消去法
Python解线性方程组的直接法(3)————列主元素高斯-若当消去法
Python解线性方程组的直接法(4)————矩阵的LU分解
Python解线性方程组的直接法(5)————平方根法求解线性方程组
Python解线性方程组的直接法(6)————求解三对角方程组的追赶法
Python解线性方程组的直接法(7)————基于吉文斯变换的QR分解
Python解线性方程组的直接法(8)————基于豪斯霍尔德变换的QR分解

本文地址:https://blog.csdn.net/weixin_40653652/article/details/109038667

《Python解线性方程组的直接法(基于吉文斯变换的QR分解).doc》

下载本文的Word格式文档,以方便收藏与打印。