public void testBig() throws NoConvergenceException { for (int k = 0; k < Abig.length; ++k) { Abig[k][k] = 0.1; Bbig[k] = k; } for (int k = 0; k < Abig.length; ++k) { for (int l = 0; l < Abig.length; ++l) { Abig[k][l] += k * l / 1000.0; } } for (int k = 0; k < Abig.length; ++k) { for (int l = 0; l < Abig.length; ++l) { Abig[k][l] += (k % 3) * (l % 3) / 10.0; } } long before, after; before = System.currentTimeMillis(); Minres.solve(Abig, Bbig); after = System.currentTimeMillis(); System.out.println("Minres took " + (after - before) / 1000.0 + " seconds"); before = System.currentTimeMillis(); SymmLQ.solve(Abig, Bbig); after = System.currentTimeMillis(); System.out.println("Symmlq took " + (after - before) / 1000.0 + " seconds"); before = System.currentTimeMillis(); ConjugateGradient.solve(Abig, Bbig); after = System.currentTimeMillis(); System.out.println("ConjugateGradient took " + (after - before) / 1000.0 + " seconds"); before = System.currentTimeMillis(); JSciSolver.solve(Abig, Bbig); after = System.currentTimeMillis(); System.out.println("LU Decomposition took " + (after - before) / 1000.0 + " seconds"); }
public void testSmall() throws NoConvergenceException { for (int k = 0; k < Asmall.length; ++k) { Asmall[k][k] = 1.0; Bsmall[k] = k; } for (int k = 0; k < Asmall.length; ++k) { for (int l = 0; l < Asmall.length; ++l) { Asmall[k][l] += k * l / 1000.0; } } UtilMath.print(Minres.solve(Asmall, Bsmall)); UtilMath.print(SymmLQ.solve(Asmall, Bsmall)); UtilMath.print(ConjugateGradient.solve(Asmall, Bsmall)); UtilMath.print(JSciSolver.solve(Asmall, Bsmall)); }