String.valueOf(fX.getRootMeanSquareError()), "pixels")); String.valueOf(fY.getRootMeanSquareError()), "pixels"));
addRow("Center latitude", String.valueOf(approximation.getCenterLat()) + " degree"); addRow("Center longitude", String.valueOf(approximation.getCenterLon()) + " degree"); addRow("RMSE for X", String.valueOf(fX.getRootMeanSquareError()) + " pixels"); addRow("RMSE for Y", String.valueOf(fY.getRootMeanSquareError()) + " pixels"); addRow("Max. error for X", String.valueOf(fX.getMaxError()) + " pixels"); addRow("Max. error for Y", String.valueOf(fY.getMaxError()) + " pixels");
final double rmseX = fX.getRootMeanSquareError(); final double rmseY = fY.getRootMeanSquareError();
public void testRawAgainstOptimized(FXYSum fxyRaw, FXYSum fxyOpt) { final int m = 100; double[][] data = new double[m][3]; double x, y, z; for (int i = 0; i < m; i++) { x = Math.PI * random(-0.5, +0.5); y = Math.PI * random(-0.5, +0.5); z = Math.sin((x * y) / 4.0 + (x + y) / 2.0); data[i][0] = x; data[i][1] = y; data[i][2] = z; } fxyRaw.approximate(data, null); fxyOpt.approximate(data, null); final boolean oldState = Debug.setEnabled(true); try { assertEquals(fxyRaw.getRootMeanSquareError(), fxyOpt.getRootMeanSquareError(), EPS); double zRaw, zOpt; for (int i = 0; i < 10; i++) { x = Math.PI * random(-0.5, +0.5); y = Math.PI * random(-0.5, +0.5); zRaw = fxyRaw.computeZ(x, y); zOpt = fxyOpt.computeZ(x, y); assertEquals(zRaw, zOpt, EPS); } } finally { Debug.setEnabled(oldState); } }
try { potentialPolynomial.approximate(data, indices); double rmse = potentialPolynomial.getRootMeanSquareError(); double maxError = potentialPolynomial.getMaxError(); if (rmse < rmseMin) {