public static void analysis(Vector X, Supplier<double[]> function) { long start = System.nanoTime(); double[] r = function.get(); long end = System.nanoTime(); System.out.println("Time:" + (end - start) / 1000000f + "ms"); Vector R = new Vector(r); System.out.println("Norm2:" + X.sub(R).getNorm2()); pw.print(","); pw.print((end - start) / 1000000f); pw.print(","); pw.print(X.sub(R).getNorm2()); pw.println(); pw.flush(); }
public static void analysisGaussianEliminationWithPivot(Matrix A, Vector B, Vector X) { System.out.println("GaussianElimination"); pw.print(","); pw.print("GaussianElimination"); analysis( X, () -> { try { return Algorithm.gaussianEliminationWithPivot(A.toDoubleArray(), B.toDoubleArray()); } catch (Exception e) { e.printStackTrace(); pw.print(","); pw.print("-"); pw.print(","); pw.print("-"); pw.println(); return new double[0]; } }); }
public static void main(String[] args) throws Exception { fw = new FileWriter("/Users/Main/Desktop/test.csv", false); // ※1 pw = new PrintWriter(new BufferedWriter(fw)); for (range = 1; range < 1000000; range *= 2) { for (int j = 0; j < 3; j++) { for (int i = 0; i < 1; i++) { Vector X = Vector.generate(n, range); Matrix A = Matrix.generate(n, n, range); Vector B = A.multi(X); pw.print(range); pw.print(","); pw.print(n); System.out.println(n); analysisGaussianEliminationWithPivot(A, B, X); System.out.println(); } } } pw.close(); }