image thumbnail


version (3.19 KB) by Antonio Trujillo-Ortiz
Modified Gram-Schmidt orthogonalization procedure.


Updated 02 Oct 2006

View License

-For a basis of fundamentals on classical Gram-Schmidt process, procedure and its origin. Please see the text of the m-file cgrsho you can download from:

The classical Gram-Scmidt algorithm is numerically unstable, mainly because of all the successive subtractions in the order they appear. When this process is implemented on a computer, then the vectors s_n are not quite orthogonal because of rounding errors. This loss of orthogonality is particularly bad; therefore, it is said that the (naive) classical Gram-Schmidt process is numerically unstable. If we write an algorithm based on the way we developed the Gram-Schmidt iteration (in terms of projections), we get a better algorithm.

The Gram-Schmidt process can be stabilized by a small modification. Instead of computing the vector u_n as,

u_n = v_k - proj_u_1 v_n - proj_u_2 v_n -...- proj_u_n-1 v_n

it is computed as,

u_n = u_n ^n-2 - proj_u_n-1 u_n ^n-2

This series of computations gives the same result as the original formula in exact arithmetic, but it introduces smaller errors in finite-precision arithmetic. A stable algorithm is one which does not suffer drastically from perturbations due to roundoff errors. This is called as the modified Gram-Schmidt orthogonalization process.

There are several different variations of the Gram-Schmidt process including classical Gram-Schmidt (CGS), modified Gram-Schmidt (MGS) and modified Gram-Schmidt with pivoting (MGSP). MGS economizes storage and is generally more stable than CGS.

The Gram-Schmidt process can be used in calculating Legendre polynomials, Chebyshev polynomials, curve fitting of empirical data, smoothing, and calculating least square methods and other functional equations.

A - matrix of n linearly independent vectors of equal size. Here, them
must be arranged as columns.

Matrix of n orthogonalized vectors.

Cite As

Antonio Trujillo-Ortiz (2021). mgrscho (, MATLAB Central File Exchange. Retrieved .

MATLAB Release Compatibility
Created with R14
Compatible with any release
Platform Compatibility
Windows macOS Linux

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!