/** {@inheritDoc} */ public double[] value(double[] point) { // set up parameters final DerivativeStructure[] dsX = new DerivativeStructure[point.length]; for (int i = 0; i < point.length; ++i) { dsX[i] = new DerivativeStructure(point.length, 1, i, point[i]); } // compute the derivatives final DerivativeStructure dsY = f.value(dsX); // extract the gradient final double[] y = new double[point.length]; final int[] orders = new int[point.length]; for (int i = 0; i < point.length; ++i) { orders[i] = 1; y[i] = dsY.getPartialDerivative(orders); orders[i] = 0; } return y; }
/** {@inheritDoc} */ public double[][] value(double[] point) { // set up parameters final DerivativeStructure[] dsX = new DerivativeStructure[point.length]; for (int i = 0; i < point.length; ++i) { dsX[i] = new DerivativeStructure(point.length, 1, i, point[i]); } // compute the derivatives final DerivativeStructure[] dsY = f.value(dsX); // extract the Jacobian final double[][] y = new double[dsY.length][point.length]; final int[] orders = new int[point.length]; for (int i = 0; i < dsY.length; ++i) { for (int j = 0; j < point.length; ++j) { orders[j] = 1; y[i][j] = dsY[i].getPartialDerivative(orders); orders[j] = 0; } } return y; }
/** * {@inheritDoc} */ @Override protected double doSolve() throws TooManyEvaluationsException { final double startValue = getStartValue(); final double absoluteAccuracy = getAbsoluteAccuracy(); double x0 = startValue; double x1; while (true) { final DerivativeStructure y0 = computeObjectiveValueAndDerivative(x0); x1 = x0 - (y0.getValue() / y0.getPartialDerivative(1)); if (FastMath.abs(x1 - x0) <= absoluteAccuracy) { return x1; } x0 = x1; } } }
for (int j = 0; j < nC; ++j) { orders[j] = 1; jacobianData[i][j] = dsValue[i].getPartialDerivative(orders); orders[j] = 0;
/** {@inheritDoc} * @exception NumberIsTooLargeException if derivation order is greater than 1 */ public DerivativeStructure value(final DerivativeStructure t) throws NumberIsTooLargeException { switch (t.getOrder()) { case 0 : return new DerivativeStructure(t.getFreeParameters(), 0, f.value(t.getValue())); case 1 : { final int parameters = t.getFreeParameters(); final double[] derivatives = new double[parameters + 1]; derivatives[0] = f.value(t.getValue()); final double fPrime = f.derivative().value(t.getValue()); int[] orders = new int[parameters]; for (int i = 0; i < parameters; ++i) { orders[i] = 1; derivatives[i + 1] = fPrime * t.getPartialDerivative(orders); orders[i] = 0; } return new DerivativeStructure(parameters, 1, derivatives); } default : throw new NumberIsTooLargeException(t.getOrder(), 1, true); } }
orders[i] = 1; for (int j = 0; j < n; ++j) { derivatives[i + 1] += gradient[j] * t[j].getPartialDerivative(orders);
orders[i] = 1; for (int j = 0; j < n; ++j) { derivatives[i + 1] += jacobian[k][j] * t[j].getPartialDerivative(orders);
/** {@inheritDoc} */ public double[] value(double[] point) { // set up parameters final DerivativeStructure[] dsX = new DerivativeStructure[point.length]; for (int i = 0; i < point.length; ++i) { dsX[i] = new DerivativeStructure(point.length, 1, i, point[i]); } // compute the derivatives final DerivativeStructure dsY = f.value(dsX); // extract the gradient final double[] y = new double[point.length]; final int[] orders = new int[point.length]; for (int i = 0; i < point.length; ++i) { orders[i] = 1; y[i] = dsY.getPartialDerivative(orders); orders[i] = 0; } return y; }
/** {@inheritDoc} */ public double[] value(double[] point) { // set up parameters final DerivativeStructure[] dsX = new DerivativeStructure[point.length]; for (int i = 0; i < point.length; ++i) { dsX[i] = new DerivativeStructure(point.length, 1, i, point[i]); } // compute the derivatives final DerivativeStructure dsY = f.value(dsX); // extract the gradient final double[] y = new double[point.length]; final int[] orders = new int[point.length]; for (int i = 0; i < point.length; ++i) { orders[i] = 1; y[i] = dsY.getPartialDerivative(orders); orders[i] = 0; } return y; }
/** {@inheritDoc} */ public double[][] value(double[] point) { // set up parameters final DerivativeStructure[] dsX = new DerivativeStructure[point.length]; for (int i = 0; i < point.length; ++i) { dsX[i] = new DerivativeStructure(point.length, 1, i, point[i]); } // compute the derivatives final DerivativeStructure[] dsY = f.value(dsX); // extract the Jacobian final double[][] y = new double[dsY.length][point.length]; final int[] orders = new int[point.length]; for (int i = 0; i < dsY.length; ++i) { for (int j = 0; j < point.length; ++j) { orders[j] = 1; y[i][j] = dsY[i].getPartialDerivative(orders); orders[j] = 0; } } return y; }
/** {@inheritDoc} */ public double[][] value(double[] point) { // set up parameters final DerivativeStructure[] dsX = new DerivativeStructure[point.length]; for (int i = 0; i < point.length; ++i) { dsX[i] = new DerivativeStructure(point.length, 1, i, point[i]); } // compute the derivatives final DerivativeStructure[] dsY = f.value(dsX); // extract the Jacobian final double[][] y = new double[dsY.length][point.length]; final int[] orders = new int[point.length]; for (int i = 0; i < dsY.length; ++i) { for (int j = 0; j < point.length; ++j) { orders[j] = 1; y[i][j] = dsY[i].getPartialDerivative(orders); orders[j] = 0; } } return y; }
/** * {@inheritDoc} */ @Override protected double doSolve() throws TooManyEvaluationsException { final double startValue = getStartValue(); final double absoluteAccuracy = getAbsoluteAccuracy(); double x0 = startValue; double x1; while (true) { final DerivativeStructure y0 = computeObjectiveValueAndDerivative(x0); x1 = x0 - (y0.getValue() / y0.getPartialDerivative(1)); if (Math.abs(x1 - x0) <= absoluteAccuracy) { return x1; } x0 = x1; } } }
/** * {@inheritDoc} */ @Override protected double doSolve() throws TooManyEvaluationsException { final double startValue = getStartValue(); final double absoluteAccuracy = getAbsoluteAccuracy(); double x0 = startValue; double x1; while (true) { final DerivativeStructure y0 = computeObjectiveValueAndDerivative(x0); x1 = x0 - (y0.getValue() / y0.getPartialDerivative(1)); if (FastMath.abs(x1 - x0) <= absoluteAccuracy) { return x1; } x0 = x1; } } }
for (int j = 0; j < nC; ++j) { orders[j] = 1; jacobianData[i][j] = dsValue[i].getPartialDerivative(orders); orders[j] = 0;
/** {@inheritDoc} * @exception NumberIsTooLargeException if derivation order is greater than 1 */ public DerivativeStructure value(final DerivativeStructure t) throws NumberIsTooLargeException { switch (t.getOrder()) { case 0 : return new DerivativeStructure(t.getFreeParameters(), 0, f.value(t.getValue())); case 1 : { final int parameters = t.getFreeParameters(); final double[] derivatives = new double[parameters + 1]; derivatives[0] = f.value(t.getValue()); final double fPrime = f.derivative().value(t.getValue()); int[] orders = new int[parameters]; for (int i = 0; i < parameters; ++i) { orders[i] = 1; derivatives[i + 1] = fPrime * t.getPartialDerivative(orders); orders[i] = 0; } return new DerivativeStructure(parameters, 1, derivatives); } default : throw new NumberIsTooLargeException(t.getOrder(), 1, true); } }
/** {@inheritDoc} * @exception NumberIsTooLargeException if derivation order is greater than 1 */ public DerivativeStructure value(final DerivativeStructure t) throws NumberIsTooLargeException { switch (t.getOrder()) { case 0 : return new DerivativeStructure(t.getFreeParameters(), 0, f.value(t.getValue())); case 1 : { final int parameters = t.getFreeParameters(); final double[] derivatives = new double[parameters + 1]; derivatives[0] = f.value(t.getValue()); final double fPrime = f.derivative().value(t.getValue()); int[] orders = new int[parameters]; for (int i = 0; i < parameters; ++i) { orders[i] = 1; derivatives[i + 1] = fPrime * t.getPartialDerivative(orders); orders[i] = 0; } return new DerivativeStructure(parameters, 1, derivatives); } default : throw new NumberIsTooLargeException(t.getOrder(), 1, true); } }
orders[i] = 1; for (int j = 0; j < n; ++j) { derivatives[i + 1] += gradient[j] * t[j].getPartialDerivative(orders);
orders[i] = 1; for (int j = 0; j < n; ++j) { derivatives[i + 1] += jacobian[k][j] * t[j].getPartialDerivative(orders);
orders[i] = 1; for (int j = 0; j < n; ++j) { derivatives[i + 1] += gradient[j] * t[j].getPartialDerivative(orders);
orders[i] = 1; for (int j = 0; j < n; ++j) { derivatives[i + 1] += jacobian[k][j] * t[j].getPartialDerivative(orders);