package com.imsl.test.example.math; import com.imsl.math.*; /** *

* MinUnconMultiVar Example 2: Minimizes a multivariate function with a user * supplied gradient.

* The minimum of \(100(x_2 - x_1^2)^2 + (1-x_1)^2\) is found using function * evaluations and a user supplied gradient. * * @see Code * @see Output */ public class MinUnconMultiVarEx2 { static class MyFunction implements MinUnconMultiVar.Gradient { @Override public double f(double[] x) { return 100. * ((x[1] - x[0] * x[0]) * (x[1] - x[0] * x[0])) + (1. - x[0]) * (1. - x[0]); } @Override public void gradient(double[] x, double[] gp) { gp[0] = -400. * (x[1] - x[0] * x[0]) * x[0] - 2. * (1. - x[0]); gp[1] = 200. * (x[1] - x[0] * x[0]); } } public static void main(String args[]) throws Exception { MinUnconMultiVar solver = new MinUnconMultiVar(2); solver.setGuess(new double[]{-1.2, 1.0}); double x[] = solver.computeMin(new MyFunction()); System.out.println("Minimum point is (" + x[0] + ", " + x[1] + ")"); } }