{ pwr = 1.5; quadS = "{expr2 = (x-y+1); Value = expr2^pwr + x^pwr + 10.; expr7 = pwr-1.; expr9= (expr2^expr7)*pwr; Gradient = new double[2]; Gradient[[0]] =expr9 + ((x^expr7) * pwr); Gradient[[1]] = -expr9;}"; // function produced from S function derivOmegahat (on merced) quadS = function(x, y){ Value = new Object[2]; grad=new double[ 2 ]; expr2 = (x - y) + 1; expr3 = expr2^2; expr5 = x^2; expr8 = pwr - 1.; expr12 = (expr3^expr8) * (pwr * (2 * expr2)); value = (expr3^pwr) + (expr5^pwr) + 10.; grad[[0]] = expr12 + ((expr5^expr8) * (pwr * (2 * x))); grad[[1]] = - expr12; Value[[0]] = value; Value[[1]] = grad; return(Value); }; quadE = parse("{GV=quadS(x,y); Value = GV[[0]]; Gradient=GV[[1]];}"); quadM = new ModelObjectiveOmegahat(quadE); quadM.setEvaluator(this); xy = new double[] {.5, .5}; xyNames = new String[]{"x", "y"}; quadM.setParameterNames(xyNames); opta = new OptimizerAlgorithmBFGS(); // opt = new Optimizer(opta, quadM, new doubleArray(xy)); xp = opta.newModelPoint(); xp.getParameters().setData(xy); xp.setModel(quadM); opt = new Optimizer(opta, xp); dynamicClassLoader().defineClass("org.omegahat.Numerics.Optimizers.InformationListener", "FL"); xyf = function(ev){show(x); show(y);}; ll = new FL(xyf, this); opt.addListener(ll); pl = new PlotListener(); pl.make(xp, opt); }