This thesis concentrates on the development, analysis, implementation, and application of a symmetry preserving singular value decomposition (SPSVD). This new factorization enhances the singular value decomposition (SVD)---a powerful method for calculating a low rank approximation to a large data set---by producing the best symmetric low rank approximation to a matrix with respect to the Frobenius norm and matrix-2 norm. Calculating an SPSVD is a two-step process. In the first step, a matrix representation for the symmetry of a given data set must be determined. This process is presented as a novel iterative reweighting method: a scheme which is rapidly convergent in practice and seems to be extremely effective in ignoring outliers of the data. In the second step, the best approximation that maintains the symmetry calculated from the first step is computed. This approximation is designated the SPSVD of the data set. In many situations, the SPSVD needs efficient updating. For instance, if new data is given, then the symmetry of the set may change and an alternative matrix representation has to be formed. A modification in the matrix representation also alters the SPSVD. Therefore, proficient methods to address each of these issues are developed in this thesis. This thesis applies the SPSVD to molecular dynamic (MD) simulations of proteins and to face analysis. Symmetric motions of a molecule may be lost when the SVD is applied to MD trajectories of proteins. This loss is corrected by implementing the SPSVD to create major modes of motion that best describe the symmetric movements of the protein. Moreover, the SPSVD may reduce the noise that often occurs on the side chains of molecules. In face analysis, the SVD is regularly used for compression. Because faces are nearly symmetric, applying the SPSVD to faces creates a more efficient compression. This efficiency is a result of having to store only half the picture for the SPSVD. Therefore, it is apparent that the SPSVD is an effective method for calculating a symmetric low rank approximation for a set of data.