当前位置: 移动技术网 > IT编程>脚本编程>Python > Python解线性方程组的直接法(基于吉文斯变换的QR分解)

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

2020年10月12日  | 移动技术网IT编程  | 我要评论
基于吉文斯变换的QR分解# 基于吉文斯变换的QR分解import numpy as npdef 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

基于吉文斯变换的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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网