Method: Stick::Matrix::Householder.QR
- Defined in:
- lib/stick/matrix/householder.rb
.QR(mat) ⇒ Object
a QR factorization that uses Householder transformation Q^T * A = R MC, Golub & van Loan, pg 224, 5.2.1 Householder QR
11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
# File 'lib/stick/matrix/householder.rb', line 11 def Householder.QR(mat) h = [] a = mat.clone m = a.row_size n = a.column_size n.times{|j| v, beta = a[j..m - 1, j].house h[j] = Matrix.diag(Matrix.I(j), Matrix.I(m-j)- beta * (v * v.t)) a[j..m-1, j..n-1] = (Matrix.I(m-j) - beta * (v * v.t)) * a[j..m-1, j..n-1] a[(j+1)..m-1,j] = v[2..(m-j)] if j < m - 1 } h end |