Author: luc Date: Sun May 17 20:19:34 2009 New Revision: 775751 URL: http://svn.apache.org/viewvc?rev=775751&view=rev Log: simplified DifferentiableMultivariateVectorialFunction the gradient and partial derivaritves can be retrieved from the jacobian and adding them at the interface level was cumbersome for implementing optimization problems. Now users need to provide only the jacobian method
Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/DifferentiableMultivariateVectorialFunction.java commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/general/GaussNewtonOptimizerTest.java commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/general/LevenbergMarquardtOptimizerTest.java commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/general/MinpackTest.java Modified: commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/DifferentiableMultivariateVectorialFunction.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/DifferentiableMultivariateVectorialFunction.java?rev=775751&r1=775750&r2=775751&view=diff ============================================================================== --- commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/DifferentiableMultivariateVectorialFunction.java (original) +++ commons/proper/math/trunk/src/java/org/apache/commons/math/analysis/DifferentiableMultivariateVectorialFunction.java Sun May 17 20:19:34 2009 @@ -28,45 +28,7 @@ extends MultivariateVectorialFunction { /** - * Returns the partial derivative of the function with respect to point - * coordinate x<sub>j</sub>. - * <p> - * The partial derivative basically represents column j of the jacobian - * matrix. If the partial derivatives with respect to all coordinates are - * needed, it may be more efficient to use the {...@link #jacobian()} method - * which will compute the complete matrix at once. - * </p> - * @param j index of the coordinate with respect to which the partial - * derivative is computed - * @return the partial derivative function with respect to point coordinate - * x<sub>i</sub> - */ - MultivariateVectorialFunction partialDerivative(int j); - - /** - * Returns the gradient function of the i<sup>th</sup> component of - * the vectorial function. - * - * <p> - * The i<sup>th</sup> gradient basically represents row i of the jacobian - * matrix. If all gradients are needed, it may be more efficient to use the - * {...@link #jacobian()} method which will compute the complete matrix at once. - * </p> - * @param i index of the function component for which the gradient is requested - * @return the gradient function of the i<sup>th</sup> component of - * the vectorial function - */ - MultivariateVectorialFunction gradient(int i); - - /** * Returns the jacobian function. - * <p> - * If only one column of the jacobian is needed, it may be more efficient to - * use the {...@link #partialDerivative(int)} method which will compute only the - * specified column. If only one row of the jacobian is needed, it may be more - * efficient to use the {...@link #gradient(int)} method which will compute only the - * specified row. - * </p> * @return the jacobian function */ MultivariateMatrixFunction jacobian(); Modified: commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/general/GaussNewtonOptimizerTest.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/general/GaussNewtonOptimizerTest.java?rev=775751&r1=775750&r2=775751&view=diff ============================================================================== --- commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/general/GaussNewtonOptimizerTest.java (original) +++ commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/general/GaussNewtonOptimizerTest.java Sun May 17 20:19:34 2009 @@ -493,24 +493,6 @@ return factors.operate(variables); } - public MultivariateVectorialFunction partialDerivative(final int i) { - return new MultivariateVectorialFunction() { - private static final long serialVersionUID = 1037082026387842358L; - public double[] value(double[] point) { - return factors.getColumn(i); - } - }; - } - - public MultivariateVectorialFunction gradient(final int i) { - return new MultivariateVectorialFunction() { - private static final long serialVersionUID = -3268626996728727146L; - public double[] value(double[] point) { - return factors.getRow(i); - } - }; - } - public MultivariateMatrixFunction jacobian() { return new MultivariateMatrixFunction() { private static final long serialVersionUID = -8387467946663627585L; @@ -590,29 +572,6 @@ } - public MultivariateVectorialFunction partialDerivative(final int i) { - return new MultivariateVectorialFunction() { - private static final long serialVersionUID = -2884159755283203273L; - public double[] value(double[] point) { - double[][] m = jacobian(point); - double[] partial = new double[m.length]; - for (int j = 0; j < partial.length; ++j) { - partial[i] = m[i][j]; - } - return partial; - } - }; - } - - public MultivariateVectorialFunction gradient(final int i) { - return new MultivariateVectorialFunction() { - private static final long serialVersionUID = -43357217231860547L; - public double[] value(double[] point) { - return jacobian(point)[i]; - } - }; - } - public MultivariateMatrixFunction jacobian() { return new MultivariateMatrixFunction() { private static final long serialVersionUID = -4340046230875165095L; Modified: commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/general/LevenbergMarquardtOptimizerTest.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/general/LevenbergMarquardtOptimizerTest.java?rev=775751&r1=775750&r2=775751&view=diff ============================================================================== --- commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/general/LevenbergMarquardtOptimizerTest.java (original) +++ commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/general/LevenbergMarquardtOptimizerTest.java Sun May 17 20:19:34 2009 @@ -533,24 +533,6 @@ return factors.operate(variables); } - public MultivariateVectorialFunction partialDerivative(final int i) { - return new MultivariateVectorialFunction() { - private static final long serialVersionUID = 4868131119285501303L; - public double[] value(double[] point) { - return factors.getColumn(i); - } - }; - } - - public MultivariateVectorialFunction gradient(final int i) { - return new MultivariateVectorialFunction() { - private static final long serialVersionUID = 6280336674474631774L; - public double[] value(double[] point) { - return factors.getRow(i); - } - }; - } - public MultivariateMatrixFunction jacobian() { return new MultivariateMatrixFunction() { private static final long serialVersionUID = 556396458721526234L; @@ -632,29 +614,6 @@ } - public MultivariateVectorialFunction partialDerivative(final int i) { - return new MultivariateVectorialFunction() { - private static final long serialVersionUID = -2884159755283203273L; - public double[] value(double[] point) { - double[][] m = jacobian(point); - double[] partial = new double[m.length]; - for (int j = 0; j < partial.length; ++j) { - partial[i] = m[i][j]; - } - return partial; - } - }; - } - - public MultivariateVectorialFunction gradient(final int i) { - return new MultivariateVectorialFunction() { - private static final long serialVersionUID = -43357217231860547L; - public double[] value(double[] point) { - return jacobian(point)[i]; - } - }; - } - public MultivariateMatrixFunction jacobian() { return new MultivariateMatrixFunction() { private static final long serialVersionUID = -4340046230875165095L; @@ -700,29 +659,6 @@ return values; } - public MultivariateVectorialFunction partialDerivative(final int i) { - return new MultivariateVectorialFunction() { - private static final long serialVersionUID = 2371658898687841192L; - public double[] value(double[] point) { - double[][] m = jacobian(point); - double[] partial = new double[m.length]; - for (int j = 0; j < partial.length; ++j) { - partial[i] = m[i][j]; - } - return partial; - } - }; - } - - public MultivariateVectorialFunction gradient(final int i) { - return new MultivariateVectorialFunction() { - private static final long serialVersionUID = 6863958501785879369L; - public double[] value(double[] point) { - return jacobian(point)[i]; - } - }; - } - public MultivariateMatrixFunction jacobian() { return new MultivariateMatrixFunction() { private static final long serialVersionUID = -8673650298627399464L; Modified: commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/general/MinpackTest.java URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/general/MinpackTest.java?rev=775751&r1=775750&r2=775751&view=diff ============================================================================== --- commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/general/MinpackTest.java (original) +++ commons/proper/math/trunk/src/test/org/apache/commons/math/optimization/general/MinpackTest.java Sun May 17 20:19:34 2009 @@ -582,29 +582,6 @@ return true; } - public MultivariateVectorialFunction partialDerivative(final int i) { - return new MultivariateVectorialFunction() { - private static final long serialVersionUID = 2192585229396907068L; - public double[] value(double[] point) { - double[][] m = jacobian(point); - double[] partial = new double[m.length]; - for (int j = 0; j < partial.length; ++j) { - partial[i] = m[i][j]; - } - return partial; - } - }; - } - - public MultivariateVectorialFunction gradient(final int i) { - return new MultivariateVectorialFunction() { - private static final long serialVersionUID = -5562016064510078300L; - public double[] value(double[] point) { - return jacobian(point)[i]; - } - }; - } - public MultivariateMatrixFunction jacobian() { return new MultivariateMatrixFunction() { private static final long serialVersionUID = -2435076097232923678L;