Eigenvalues.java


Below is the syntax highlighted version of Eigenvalues.java from §9.9 Scientific Computing.


/******************************************************************************
 *  Compilation:  javac -classpath .:jama.jar Eigenvalues.java
 *  Execution:    java -classpath .:jama.jar Eigenvalues
 *  Dependencies: jama.jar
 *
 *  Test client for computing eigenvalues and eigenvectors of a real
 *  symmetric matrix A = V D V^T.
 *
 *       http://math.nist.gov/javanumerics/jama/
 *       http://math.nist.gov/javanumerics/jama/Jama-1.0.1.jar
 *
 ******************************************************************************/

import Jama.EigenvalueDecomposition;
import Jama.Matrix;

public class Eigenvalues {
    public static void main(String[] args) {
        int N = 5;

        // create a symmetric positive definite matrix
        Matrix A = Matrix.random(N, N);
        A = A.transpose().times(A);

        // compute the spectral decomposition
        EigenvalueDecomposition e = A.eig();
        Matrix V = e.getV();
        Matrix D = e.getD();

        StdOut.print("A =");
        A.print(9, 6);
        StdOut.print("D =");
        D.print(9, 6);
        StdOut.print("V =");
        V.print(9, 6);

        // check that V is orthogonal
        StdOut.print("||V * V^T - I|| = ");
        StdOut.println(V.times(V.transpose()).minus(Matrix.identity(N, N)).normInf());

        // check that A V = D V
        StdOut.print("||AV - DV|| = ");
        StdOut.println(A.times(V).minus(V.times(D)).normInf());
    }

}


Copyright © 2000–2022, Robert Sedgewick and Kevin Wayne.
Last updated: Thu Aug 11 09:50:05 EDT 2022.