SVD_SNOWFALL
Singular Value Decomposition of Snowfall Data


SVD_SNOWFALL is a C++ library which demonstrates the use of the Singular Value Decomposition (SVD) to analyze a set of historical snowfall data, with plots created by GNUPLOT.

The snowfall data consists of records for the 123 seasons from 1890 to 2012, of the snowfall in inches, over the months from October to May, as measured at Michigan Tech.

This data can be regarded as an 8 by 123 matrix A. Applying the singular value decomposition produces the factors

A = U * S * V'
and it is the purpose of this library to consider what these factors indicate about the snowfall data.

The sample problem writes files that can be processed by GNUPLOT to create plots.

Licensing:

The computer code and data files described and made available on this web page are distributed under the GNU LGPL license.

Languages:

SVD_SNOWFALL is available in a C version and a C++ version and a FORTRAN77 version and a FORTRAN90 version and a MATLAB version.

Related Data and Programs:

FINGERPRINTS, a dataset directory which contains a few images of fingerprints.

GNUPLOT, C++ programs which illustrate how a program can write data and command files so that gnuplot can create plots of the program results.

SVD_BASIS, a C++ program which applies the Singular Value Decomposition (SVD) to a set of vectors, extracting dominant modes;

SVD_DEMO, a C++ program which demonstrates the singular value decomposition (SVD) for a simple example.

SVD_TRUNCATED, a C++ program which demonstrates the computation of the reduced or truncated Singular Value Decomposition (SVD) that is useful for cases when one dimension of the matrix is much smaller than the other.

TIME_SERIES, a dataset directory which contains examples of files describing time series.

Reference:

  1. Edward Anderson, Zhaojun Bai, Christian Bischof, Susan Blackford, James Demmel, Jack Dongarra, Jeremy Du Croz, Anne Greenbaum, Sven Hammarling, Alan McKenney, Danny Sorensen,
    LAPACK User's Guide,
    Third Edition,
    SIAM, 1999,
    ISBN: 0898714478,
    LC: QA76.73.F25L36
  2. Gene Golub, Charles VanLoan,
    Matrix Computations, Third Edition,
    Johns Hopkins, 1996,
    ISBN: 0-8018-4513-X,
    LC: QA188.G65.
  3. David Kahaner, Cleve Moler, Steven Nash,
    Numerical Methods and Software,
    Prentice Hall, 1989,
    ISBN: 0-13-627258-4,
    LC: TA345.K34.
  4. Lloyd Trefethen, David Bau,
    Numerical Linear Algebra,
    SIAM, 1997,
    ISBN: 0-89871-361-7,
    LC: QA184.T74.

Source Code:

Examples and Tests:

The snowfall data itself must be read into the program from a file:

The second test function writes "command" and "data" files that can be used by gnuplot to create plots.

The third test function writes "command" and "data" files that can be used by gnuplot to create plots.

The fourth test function writes "command" and "data" files that can be used by gnuplot to create plots of the first 6 U modes, which form a basis for average snowfall as a function of the month.

The fifth test function writes "command" and "data" files that can be used by gnuplot to create plots of the first 6 V modes, which form a basis for total yearly snowfall behavior as a function of the year.

List of Routines:

You can go up one level to the C++ source codes.


Last revised on 09 May 2013.