python实现QR法解线性方程组

来源:互联网 发布:以太网传输数据PLC 编辑:程序博客网 时间:2024/06/06 01:35
QR(正交三角)分解法是目前求一般矩阵全部特征值的最有效并广泛应用的方法,一般矩阵先经过正交相似变化成为Hessenberg矩阵,然后再应用QR方法求特征值和特征向量。它是将矩阵分解成一个正规正交矩阵Q与上三角形矩阵R,所以称为QR分解法,与此正规正交矩阵的通用符号Q有关。测试所用b为全1矩阵。
import numpy as npA = np.zeros((100, 100))for i in range(100): #generate A    for j in range(100):        if (i == j):            A[i, j] = 2        if (abs(i - j) == 1):            A[i, j] = A[j, i] = -1b = np.ones((100, 1))  #generate bprint("QR x:")Q=np.zeros_like(A) #Q.shape=A.shapew = 0for a in A.T:    u = np.copy(a)    for i in range(0, w):           u -= np.dot(np.dot(Q[:, i].T, a), Q[:, i])    ex = u / np.linalg.norm(u)    Q[:, w] = ex    w+= 1R = np.dot(Q.T, A) # A=Q*RN=np.dot(Q.T,b)x2=np.linalg.solve(R,N)  # Rx=Q.T*bprint(x2)   #solve xprint("done QR!")

原创粉丝点击