线性方程组的QR分解,求解(Python)

import numpy as np
def householder(A):
     (r, c) = np.shape(A)
     Q = np.identity(r)
     R = np.copy(A)
     for i in range(r - 1):
         x = R[i:, i]
         e = np.zeros_like(x)
         e[0] = np.linalg.norm(x)
         u = x - e
         v = u / np.linalg.norm(u)
         Q_i = np.identity(r)
         Q_i[i:, i:] -= 2.0 * np.outer(v, v)
         R = np.dot(Q_i, R)  
         Q = np.dot(Q, Q_i)  
     return (Q, R,c)
 
np.set_printoptions(precision=4, suppress=True)
A = eval(input('A='))
A = np.array(A,dtype=float)
b = eval(input('b='))
b = np.array(b,dtype=float)

(Q, R,c) = householder(A)
x=np.arange(c)
B = np.dot(Q.T,b)

x=np.linalg.solve(R,B)
print('Q:',Q)
print('R:',R)
print('x:',x)
#(made  cheng)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值