where
is solved. An initial guess (-1.2, 1.0) is supplied, as well as the analytic Jacobian. The residual at the approximate solution is returned.
import com.imsl.math.*; public class BoundedLeastSquaresEx2 { public static void main(String args[]) throws Exception { int m = 2; int n = 2; int ibtype = 0; double[] xlb = {-2.0, -1.0}; double[] xub = {0.5, 2.0}; double[] xguess = {-1.2, 1.0}; BoundedLeastSquares.Function rosbck = new BoundedLeastSquares.Function() { public void compute(double[] x, double[] f) { f[0] = 10.0*(x[1] - x[0]*x[0]); f[1] = 1.0 - x[0]; } }; BoundedLeastSquares.Jacobian jacob = new BoundedLeastSquares.Jacobian() { public void compute(double[] x, double[] fjac) { fjac[0] = -20.0*x[0]; fjac[1] = 10.0; fjac[2] = -1.0; fjac[3] = 0.0; } }; BoundedLeastSquares zf = new BoundedLeastSquares(rosbck, m, n, ibtype, xlb, xub); zf.setJacobian(jacob); zf.setGuess(xguess); zf.solve(); new PrintMatrix("Solution").print(zf.getSolution()); new PrintMatrix("Residuals").print(zf.getResiduals()); } }
Solution 0 0 0.5 1 0.25 Residuals 0 0 0 1 0.5Link to Java source.