private void check(double[][] a, double[][] v, double[] d) { int n = a.length; for (int k=0; k<n; ++k) { assertTrue(k==0 || d[k-1]>=d[k]); for (int i=0; i<n; ++i) { double av = 0.0f; for (int j=0; j<n; ++j) { av += a[i][j]*v[k][j]; } double vd = v[k][i]*d[k]; assertEquals(av,vd,0.0001); } } }
public void testSymmetric33() { double[][] v = new double[3][3]; double[] d = new double[3]; int nrand = 10000; for (int irand=0; irand<nrand; ++irand) { //double[][] a = randdouble(3,3); //a = add(a,transpose(a)); double[][] a = makeRandomSymmetric33(); Eigen.solveSymmetric33(a,v,d); check(a,v,d); } }
private static double[][] makeRandomSymmetric33() { double[] e = makeRandomEigenvalues3(); double[] u = makeRandomEigenvector3(); double[] w = makeOrthogonalVector3(u); return makeSymmetric33(e,u,w); }
public void testSymmetric33Special() { double[][] v = new double[3][3]; double[] d = new double[3]; double[][][] as = {ASMALL,A100,A110,A111,ATEST1}; for (double[][] a:as) { Eigen.solveSymmetric33(a,v,d); check(a,v,d); } }
public static void main(String[] args) { if (args.length>0 && args[0].equals("bench")) { benchSymmetric33(); } else { TestSuite suite = new TestSuite(EigenTest.class); junit.textui.TestRunner.run(suite); } }
public void testSymmetric22() { int nrand = 10000; double[][] v = new double[2][2]; double[] d = new double[2]; for (int irand=0; irand<nrand; ++irand) { double[][] a = randdouble(2,2); a = add(a, transpose(a)); Eigen.solveSymmetric22(a,v,d); check(a,v,d); } }