QR decomposition: Difference between revisions
Changed householder: Vector(R)->Matrix(R)
m (Changed signValue function) |
(Changed householder: Vector(R)->Matrix(R)) |
||
Line 209:
TestPackage(R:Join(Field,RadicalCategory)): with
unitVector: NonNegativeInteger -> Vector(R)
"^": (Vector(R),NonNegativeInteger) -> Vector(R)
solveUpperTriangular: (Matrix(R),Vector(R)) -> Vector(R)
signValue: R -> R
householder:
qr: Matrix(R) -> Record(q:Matrix(R),r:Matrix(R))
lsqr: (Matrix(R),Vector(R)) -> Vector(R)
Line 223 ⟶ 222:
out(1) := 1@R
out
v:Vector(R) ^ n:NonNegativeInteger == map((vi:R):R +-> vi^n, v)$Vector(R)
solveUpperTriangular(r,b) ==
Line 238 ⟶ 236:
if sqrt(r*r) = r then 1 else -1
householder(a) ==
m :=
s := signValue(a(
e :=
u := a + length
v := u/u(
beta := (1+1)/
scalarMatrix(m,1) - beta
qr(a) ==
(m,n) := (nrows a, ncols a)
qm := scalarMatrix(m,1)
rm : Matrix(R) := copy a
for i in 1..(if m=n then n-1 else n) repeat
h := scalarMatrix(m,1)
setsubMatrix!(h,i,i,householder x)
|