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 <a style="text-decoration: none;color: inherit;cursor: default" href="http://genericcialis-rxotc.com/">cialis user forum</a>  transformation matrix [p] after calling <a style="text-decoration: none;color: inherit;cursor: default" href="http://canadianpharmacy-rxonline.com/">canadian pharmacy phentermine</a>  householder(a). ''' from numpy import dot,diagonal,outer,identity <a style="text-decoration: none;color: inherit;cursor: default" href="http://cialisonline-rxstore.com/">buy cialis</a>  from math import sqrt def householder(a): n <a style="text-decoration: none;color: inherit;cursor: default" href="http://viagraonline-storerx.com/">order viagra</a>  = len(a) <a style="text-decoration: none;color: inherit;cursor: default" href="http://canadianpharmacy-rxonline.com/">canadian pharmacy methylphenidate</a>  for <a style="text-decoration: none;color: inherit;cursor: default" href="http://genericcialis-rxotc.com/">cialis daily use benefits</a>  k in range(n-2): <a style="text-decoration: none;color: inherit;cursor: default" href="http://canadianpharmacy-rxonline.com/">pharmacy canada university</a>  u = a[k+1:n,k] uMag = sqrt(dot(u,u)) if u[0] &lt; 0.0: uMag = -uMag u[0] = u[0] + 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

Enjoyed this post? Share it!

 

Leave a comment

Your email address will not be published.