gramschmidt.RdModified Gram-Schmidt Process
gramSchmidt(A, tol = .Machine$double.eps^0.5)The modified Gram-Schmidt process uses the classical orthogonalization process to generate step by step an orthonoral basis of a vector space. The modified Gram-Schmidt iteration uses orthogonal projectors in order ro make the process numerically more stable.
List with two matrices Q and R, Q orthonormal and
R upper triangular, such that A=Q%*%R.
Trefethen, L. N., and D. Bau III. (1997). Numerical Linear Algebra. SIAM, Society for Industrial and Applied Mathematics, Philadelphia.
## QR decomposition
A <- matrix(c(0,-4,2, 6,-3,-2, 8,1,-1), 3, 3, byrow=TRUE)
gs <- gramSchmidt(A)
(Q <- gs$Q); (R <- gs$R)
#> [,1] [,2] [,3]
#> [1,] 0.0 -0.80 0.60
#> [2,] 0.6 -0.48 -0.64
#> [3,] 0.8 0.36 0.48
#> [,1] [,2] [,3]
#> [1,] 10 -1 -2
#> [2,] 0 5 -1
#> [3,] 0 0 2
Q %*% R # = A
#> [,1] [,2] [,3]
#> [1,] 0 -4 2
#> [2,] 6 -3 -2
#> [3,] 8 1 -1