public NumericalJacobianFB(FunctionNtoM function, double differenceScale) { this.function = function; this.differenceScale = differenceScale; this.N = function.getNumOfInputsN(); this.M = function.getNumOfOutputsM(); output0 = new double[M]; output1 = new double[M]; }
@Override public double computeDerivative() { return derivative.process(input); } }
@Override public double computeFunction() { if( cachedFunction ) return currentOutput; currentOutput = function.process(currentInput); cachedFunction = true; return currentOutput; }
public Individual_to_CoupledJacobian(FunctionNtoM func, FunctionNtoMxN<S> jacobian) { if( func.getNumOfOutputsM() != jacobian.getNumOfOutputsM() ) throw new IllegalArgumentException("M not equal"); if( func.getNumOfInputsN() != jacobian.getNumOfInputsN() ) throw new IllegalArgumentException("N not equal"); this.func = func; this.jacobian = jacobian; }
public LsToNonLinearDeriv(FunctionNtoM func,FunctionNtoMxN<S> deriv) { this.func = func; this.deriv = deriv; funcOutput = new double[ deriv.getNumOfOutputsM() ]; J = deriv.declareMatrixMxN(); }
@Override protected void functionGradientHessian(DMatrixRMaj x, boolean sameStateAsCost, DMatrixRMaj gradient, HessianSchurComplement<S> hessian) { if( !sameStateAsCost ) functionResiduals.process(x.data,residuals.data); functionJacobian.process(x.data,jacLeft,jacRight); hessian.computeHessian(jacLeft,jacRight); hessian.computeGradient(jacLeft,jacRight,residuals,gradient); }
public NumericalGradientFB(FunctionNtoS function, double differenceScale) { this.function = function; this.differenceScale = differenceScale; this.N = function.getNumOfInputsN(); }
@Override public double process(double[] input) { func.process(input,output); double result = 0; for( int i = 0; i < output.length; i++ ) { result += output[i]*output[i]; } return result; } }
@Override public void computeJacobian(S jacobian) { this.jacobian.process(x,jacobian); } }
public NumericalJacobianForward_DDRM(FunctionNtoM function, double differenceScale) { this.function = function; this.differenceScale = differenceScale; this.N = function.getNumOfInputsN(); this.M = function.getNumOfOutputsM(); output0 = new double[M]; output1 = new double[M]; }
public LsToNonLinearDeriv(FunctionNtoM func,FunctionNtoMxN<S> deriv) { this.func = func; this.deriv = deriv; funcOutput = new double[ deriv.getNumOfOutputsM() ]; J = deriv.declareMatrixMxN(); }
@Override public double computeDerivative() { if( !cachedDerivative ) { cachedDerivative = true; currentDerivative = lineDerivative.process(currentStep); } return currentDerivative; }
@Override public double computeFunction() { if( cachedFunction ) return currentOutput; currentOutput = function.process(currentInput); cachedFunction = true; return currentOutput; }
public NumericalGradientFB(FunctionNtoS function, double differenceScale) { this.function = function; this.differenceScale = differenceScale; this.N = function.getNumOfInputsN(); }
@Override public void computeFunctions(double[] output) { func.process(x,output); }
public NumericalJacobianForward_DSCC(FunctionNtoM function, double differenceScale) { this.function = function; this.differenceScale = differenceScale; this.N = function.getNumOfInputsN(); this.M = function.getNumOfOutputsM(); output0 = new double[M]; output1 = new double[M]; }
@Override public double computeDerivative() { if( !cachedDerivative ) { cachedDerivative = true; currentDerivative = lineDerivative.process(currentStep); } return currentDerivative; }
@Override public double process(double x) { for( int i = 0; i < N; i++ ) { point[i] = start[i] + x*direction[i]; } return function.process(point); } }
public CachedGradientLineFunction(FunctionNtoS function, FunctionNtoN gradient) { this.function = function; this.gradient = gradient; this.N = function.getNumOfInputsN(); currentInput = new double[N]; currentGradient = new double[N]; }
public NumericalGradientForward(FunctionNtoS function, double differenceScale) { this.function = function; this.differenceScale = differenceScale; this.N = function.getNumOfInputsN(); }