﻿ Householder similarity transformation of matrix in Python_python_开心洋葱网
• 欢迎访问开心洋葱网站，在线教程，推荐使用最新版火狐浏览器和Chrome浏览器访问本网站，欢迎加入开心洋葱` QQ群`
• 为方便开心洋葱网用户，开心洋葱官网已经开启复制功能！
• 欢迎访问开心洋葱网站，手机也能访问哦~欢迎加入开心洋葱多维思维学习平台` QQ群`
• 如果您觉得本站非常有看点，那么赶紧使用Ctrl+D 收藏开心洋葱吧~~~~~~~~~~~~~！
• 由于近期流量激增，小站的ECS没能经的起亲们的访问，本站依然没有盈利，如果各位看如果觉着文字不错，还请看官给小站打个赏~~~~~~~~~~~~~！

# Householder similarity transformation of matrix in Python

2903次浏览

Householder similarity transformation of matrix in Python

```''' d,c = householder(a).
Householder similarity transformation of matrix [a] to
the tridiagonal form [c\d\c].

p = computeP(a).
Computes the acccumulated transformation matrix [p]
after calling householder(a).
'''
from numpy import dot,diagonal,outer,identity
from math import sqrt

def householder(a):
n = len(a)
for k in range(n-2):
u = a[k+1:n,k]
uMag = sqrt(dot(u,u))
if u < 0.0: uMag = -uMag
u = u + uMag
h = dot(u,u)/2.0
v = dot(a[k+1:n,k+1:n],u)/h
g = dot(u,v)/(2.0*h)
v = v - g*u
a[k+1:n,k+1:n] = a[k+1:n,k+1:n] - outer(v,u) \
- outer(u,v)
a[k,k+1] = -uMag
return diagonal(a),diagonal(a,1)

def computeP(a):
n = len(a)
p = identity(n)*1.0
for k in range(n-2):
u = a[k+1:n,k]
h = dot(u,u)/2.0
v = dot(p[1:n,k+1:n],u)/h
p[1:n,k+1:n] = p[1:n,k+1:n] - outer(v,u)
return p
```