public static boolean gradient( FunctionNtoS func , FunctionNtoN gradient , double param[] , double tol , double differenceScale ) { NumericalGradientForward numerical = new NumericalGradientForward(func,differenceScale); if( numerical.getN() != gradient.getN() ) throw new RuntimeException("N is not equal: "+numerical.getN() +" "+gradient.getN()); int N = numerical.getN(); double[] found = new double[N]; double[] expected = new double[N]; gradient.process(param, found); numerical.process(param,expected); for (int i = 0; i < N; i++) { if(Math.abs(found[i]-expected[i]) > tol) return false; } return true; }
public static boolean gradient( FunctionNtoS func , FunctionNtoN gradient , double param[] , double tol , double differenceScale ) { NumericalGradientForward numerical = new NumericalGradientForward(func,differenceScale); if( numerical.getN() != gradient.getN() ) throw new RuntimeException("N is not equal: "+numerical.getN() +" "+gradient.getN()); int N = numerical.getN(); double[] found = new double[N]; double[] expected = new double[N]; gradient.process(param, found); numerical.process(param,expected); for (int i = 0; i < N; i++) { if(Math.abs(found[i]-expected[i]) > tol) return false; } return true; }