package ch.akuhn.matrix.eigenvalues; import ch.akuhn.matrix.Matrix; import ch.akuhn.matrix.Vector; public class Eigenvalues { public double[] value; public Vector[] vector; protected int n; protected int nev; public Eigenvalues(int n) { this.n = n; this.nev = n; } public static Eigenvalues of(Matrix A) { if (A.columnCount() == 0) { Eigenvalues eigen = new Eigenvalues(0); eigen.value = new double[0]; eigen.vector = new Vector[0]; return eigen; } if (A.columnCount() == 1) { Eigenvalues eigen = new Eigenvalues(0); eigen.value = new double[] { A.get(0, 0) }; eigen.vector = new Vector[] { Vector.from(1.0) }; return eigen; } if (A.columnCount() < 10) return new AllEigenvalues(A); return FewEigenvalues.of(A); } public Eigenvalues largest(int nev) { this.nev = nev; return this; } public Eigenvalues run() { return this; } }