R: The Gram-Schmidt algorithm

GramSchmidt {rgl} | R Documentation

## The Gram-Schmidt algorithm

### Description

Generate a 3x3 orthogonal matrix using the Gram-Schmidt algorithm.

### Usage

    GramSchmidt(v1, v2, v3, order = 1:3)

### Arguments

`v1, v2, v3` | Three length 3 vectors (taken as row vectors).
`order` | The precedence order for the vectors; see Details.

### Details

This function orthogonalizes the matrix `rbind(v1, v2, v3)` using the Gram-Schmidt algorithm. It can handle rank 2 matrices (returning a rank 3 matrix). If the original is rank 1, it is likely to fail.

The `order` vector determines the precedence of the original vectors. For example, if it is `c(i, j, k)`, then row `i` will be unchanged (other than normalization); row `j` will normally be transformed within the span of rows `i` and `j`. Row `k` will be transformed orthogonally to the span of the others.

### Value

A 3x3 matrix whose rows are the orthogonalization of the original row vectors.

### Author(s)

Duncan Murdoch

### Examples

    # Proceed through the rows in order
    print(A <- matrix(rnorm(9), 3, 3))
    GramSchmidt(A[1, ], A[2, ], A[3, ])

    # Keep the middle row unchanged
    print(A <- matrix(c(rnorm(2), 0, 1, 0, 0, rnorm(3)), 3, 3, byrow = TRUE))
    GramSchmidt(A[1, ], A[2, ], A[3, ], order = c(2, 1, 3))

[Package rgl version 0.99.9 Index]