public static double[] rosenbrockGradient(double[] x) { double a = x[1] - x[0] * x[0]; double b = 1 - x[0]; double f0 = -2 * b - 400 * x[0] * a; double f1 = 200 * a; return new[] { f0, f1 }; }