You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2011/10/16 23:04:19 UTC
svn commit: r1184933 -
/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/
Author: erans
Date: Sun Oct 16 21:04:19 2011
New Revision: 1184933
URL: http://svn.apache.org/viewvc?rev=1184933&view=rev
Log:
Added "derivative".
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acos.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acosh.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asin.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asinh.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atan.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atanh.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cbrt.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Constant.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cos.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cosh.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Exp.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Expm1.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Identity.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Inverse.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log1p.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Power.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sin.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sinh.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tan.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tanh.java
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acos.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acos.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acos.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acos.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
package org.apache.commons.math.analysis.function;
import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
import org.apache.commons.math.util.FastMath;
/**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
* @version $Id$
* @since 3.0
*/
-public class Acos implements UnivariateRealFunction {
+public class Acos implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return FastMath.acos(x);
}
+
+ /** {@inheritDoc} */
+ public UnivariateRealFunction derivative() {
+ return new UnivariateRealFunction() {
+ /** {@inheritDoc} */
+ public double value(double x) {
+ return -1 / FastMath.sqrt(1 - x * x);
+ }
+ };
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acosh.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acosh.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acosh.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Acosh.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
package org.apache.commons.math.analysis.function;
import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
import org.apache.commons.math.util.FastMath;
/**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
* @version $Id$
* @since 3.0
*/
-public class Acosh implements UnivariateRealFunction {
+public class Acosh implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return FastMath.acosh(x);
}
+
+ /** {@inheritDoc} */
+ public UnivariateRealFunction derivative() {
+ return new UnivariateRealFunction() {
+ /** {@inheritDoc} */
+ public double value(double x) {
+ return 1 / FastMath.sqrt(x * x - 1);
+ }
+ };
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asin.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asin.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asin.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asin.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
package org.apache.commons.math.analysis.function;
import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
import org.apache.commons.math.util.FastMath;
/**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
* @version $Id$
* @since 3.0
*/
-public class Asin implements UnivariateRealFunction {
+public class Asin implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return FastMath.asin(x);
}
+
+ /** {@inheritDoc} */
+ public UnivariateRealFunction derivative() {
+ return new UnivariateRealFunction() {
+ /** {@inheritDoc} */
+ public double value(double x) {
+ return 1 / FastMath.sqrt(1 - x * x);
+ }
+ };
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asinh.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asinh.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asinh.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Asinh.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
package org.apache.commons.math.analysis.function;
import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
import org.apache.commons.math.util.FastMath;
/**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
* @version $Id$
* @since 3.0
*/
-public class Asinh implements UnivariateRealFunction {
+public class Asinh implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return FastMath.asinh(x);
}
+
+ /** {@inheritDoc} */
+ public UnivariateRealFunction derivative() {
+ return new UnivariateRealFunction() {
+ /** {@inheritDoc} */
+ public double value(double x) {
+ return 1 / FastMath.sqrt(1 + x * x);
+ }
+ };
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atan.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atan.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atan.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atan.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
package org.apache.commons.math.analysis.function;
import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
import org.apache.commons.math.util.FastMath;
/**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
* @version $Id$
* @since 3.0
*/
-public class Atan implements UnivariateRealFunction {
+public class Atan implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return FastMath.atan(x);
}
+
+ /** {@inheritDoc} */
+ public UnivariateRealFunction derivative() {
+ return new UnivariateRealFunction() {
+ /** {@inheritDoc} */
+ public double value(double x) {
+ return 1 / (1 + x * x);
+ }
+ };
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atanh.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atanh.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atanh.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Atanh.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
package org.apache.commons.math.analysis.function;
import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
import org.apache.commons.math.util.FastMath;
/**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
* @version $Id$
* @since 3.0
*/
-public class Atanh implements UnivariateRealFunction {
+public class Atanh implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return FastMath.atanh(x);
}
+
+ /** {@inheritDoc} */
+ public UnivariateRealFunction derivative() {
+ return new UnivariateRealFunction() {
+ /** {@inheritDoc} */
+ public double value(double x) {
+ return 1 / (1 - x * x);
+ }
+ };
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cbrt.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cbrt.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cbrt.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cbrt.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
package org.apache.commons.math.analysis.function;
import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
import org.apache.commons.math.util.FastMath;
/**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
* @version $Id$
* @since 3.0
*/
-public class Cbrt implements UnivariateRealFunction {
+public class Cbrt implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return FastMath.cbrt(x);
}
+
+ /** {@inheritDoc} */
+ public UnivariateRealFunction derivative() {
+ return new UnivariateRealFunction() {
+ /** {@inheritDoc} */
+ public double value(double x) {
+ return 1 / (3 * FastMath.cbrt(x * x));
+ }
+ };
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Constant.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Constant.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Constant.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Constant.java Sun Oct 16 21:04:19 2011
@@ -17,7 +17,7 @@
package org.apache.commons.math.analysis.function;
-import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
/**
* Constant function.
@@ -25,7 +25,7 @@ import org.apache.commons.math.analysis.
* @version $Id$
* @since 3.0
*/
-public class Constant implements UnivariateRealFunction {
+public class Constant implements DifferentiableUnivariateRealFunction {
/** Constant. */
private final double c;
@@ -40,4 +40,9 @@ public class Constant implements Univari
public double value(double x) {
return c;
}
+
+ /** {@inheritDoc} */
+ public DifferentiableUnivariateRealFunction derivative() {
+ return new Constant(0);
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cos.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cos.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cos.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cos.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
package org.apache.commons.math.analysis.function;
import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
import org.apache.commons.math.util.FastMath;
/**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
* @version $Id$
* @since 3.0
*/
-public class Cos implements UnivariateRealFunction {
+public class Cos implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return FastMath.cos(x);
}
+
+ /** {@inheritDoc} */
+ public UnivariateRealFunction derivative() {
+ return new UnivariateRealFunction() {
+ /** {@inheritDoc} */
+ public double value(double x) {
+ return -FastMath.sin(x);
+ }
+ };
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cosh.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cosh.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cosh.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Cosh.java Sun Oct 16 21:04:19 2011
@@ -17,7 +17,7 @@
package org.apache.commons.math.analysis.function;
-import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
import org.apache.commons.math.util.FastMath;
/**
@@ -26,9 +26,14 @@ import org.apache.commons.math.util.Fast
* @version $Id$
* @since 3.0
*/
-public class Cosh implements UnivariateRealFunction {
+public class Cosh implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return FastMath.cosh(x);
}
+
+ /** {@inheritDoc} */
+ public DifferentiableUnivariateRealFunction derivative() {
+ return new Sinh();
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Exp.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Exp.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Exp.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Exp.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
package org.apache.commons.math.analysis.function;
import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
import org.apache.commons.math.util.FastMath;
/**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
* @version $Id$
* @since 3.0
*/
-public class Exp implements UnivariateRealFunction {
+public class Exp implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return FastMath.exp(x);
}
+
+ /** {@inheritDoc} */
+ public UnivariateRealFunction derivative() {
+ return new UnivariateRealFunction() {
+ /** {@inheritDoc} */
+ public double value(double x) {
+ return FastMath.exp(x);
+ }
+ };
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Expm1.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Expm1.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Expm1.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Expm1.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
package org.apache.commons.math.analysis.function;
import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
import org.apache.commons.math.util.FastMath;
/**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
* @version $Id$
* @since 3.0
*/
-public class Expm1 implements UnivariateRealFunction {
+public class Expm1 implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return FastMath.expm1(x);
}
+
+ /** {@inheritDoc} */
+ public UnivariateRealFunction derivative() {
+ return new UnivariateRealFunction() {
+ /** {@inheritDoc} */
+ public double value(double x) {
+ return FastMath.exp(x);
+ }
+ };
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Identity.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Identity.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Identity.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Identity.java Sun Oct 16 21:04:19 2011
@@ -17,7 +17,7 @@
package org.apache.commons.math.analysis.function;
-import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
/**
* Identity function.
@@ -25,9 +25,14 @@ import org.apache.commons.math.analysis.
* @version $Id$
* @since 3.0
*/
-public class Identity implements UnivariateRealFunction {
+public class Identity implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return x;
}
+
+ /** {@inheritDoc} */
+ public DifferentiableUnivariateRealFunction derivative() {
+ return new Constant(1);
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Inverse.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Inverse.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Inverse.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Inverse.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
package org.apache.commons.math.analysis.function;
import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
/**
* Inverse function.
@@ -25,9 +26,19 @@ import org.apache.commons.math.analysis.
* @version $Id$
* @since 3.0
*/
-public class Inverse implements UnivariateRealFunction {
+public class Inverse implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return 1 / x;
}
+
+ /** {@inheritDoc} */
+ public UnivariateRealFunction derivative() {
+ return new UnivariateRealFunction() {
+ /** {@inheritDoc} */
+ public double value(double x) {
+ return -1 / (x * x);
+ }
+ };
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
package org.apache.commons.math.analysis.function;
import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
import org.apache.commons.math.util.FastMath;
/**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
* @version $Id$
* @since 3.0
*/
-public class Log implements UnivariateRealFunction {
+public class Log implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return FastMath.log(x);
}
+
+ /** {@inheritDoc} */
+ public UnivariateRealFunction derivative() {
+ return new UnivariateRealFunction() {
+ /** {@inheritDoc} */
+ public double value(double x) {
+ return 1 / x;
+ }
+ };
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log1p.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log1p.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log1p.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Log1p.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
package org.apache.commons.math.analysis.function;
import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
import org.apache.commons.math.util.FastMath;
/**
@@ -26,9 +27,19 @@ import org.apache.commons.math.util.Fast
* @version $Id$
* @since 3.0
*/
-public class Log1p implements UnivariateRealFunction {
+public class Log1p implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return FastMath.log1p(x);
}
+
+ /** {@inheritDoc} */
+ public UnivariateRealFunction derivative() {
+ return new UnivariateRealFunction() {
+ /** {@inheritDoc} */
+ public double value(double x) {
+ return 1 / (1 + x);
+ }
+ };
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Power.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Power.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Power.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Power.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
package org.apache.commons.math.analysis.function;
import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
import org.apache.commons.math.util.FastMath;
/**
@@ -26,7 +27,7 @@ import org.apache.commons.math.util.Fast
* @version $Id$
* @since 3.0
*/
-public class Power implements UnivariateRealFunction {
+public class Power implements DifferentiableUnivariateRealFunction {
/** Power. */
private final double p;
@@ -41,4 +42,14 @@ public class Power implements Univariate
public double value(double x) {
return FastMath.pow(x, p);
}
+
+ /** {@inheritDoc} */
+ public UnivariateRealFunction derivative() {
+ return new UnivariateRealFunction() {
+ /** {@inheritDoc} */
+ public double value(double x) {
+ return p * FastMath.pow(x, p - 1);
+ }
+ };
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sin.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sin.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sin.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sin.java Sun Oct 16 21:04:19 2011
@@ -17,7 +17,7 @@
package org.apache.commons.math.analysis.function;
-import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
import org.apache.commons.math.util.FastMath;
/**
@@ -26,9 +26,14 @@ import org.apache.commons.math.util.Fast
* @version $Id$
* @since 3.0
*/
-public class Sin implements UnivariateRealFunction {
+public class Sin implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return FastMath.sin(x);
}
+
+ /** {@inheritDoc} */
+ public DifferentiableUnivariateRealFunction derivative() {
+ return new Cos();
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sinh.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sinh.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sinh.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Sinh.java Sun Oct 16 21:04:19 2011
@@ -17,7 +17,7 @@
package org.apache.commons.math.analysis.function;
-import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
import org.apache.commons.math.util.FastMath;
/**
@@ -26,9 +26,14 @@ import org.apache.commons.math.util.Fast
* @version $Id$
* @since 3.0
*/
-public class Sinh implements UnivariateRealFunction {
+public class Sinh implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return FastMath.sinh(x);
}
+
+ /** {@inheritDoc} */
+ public DifferentiableUnivariateRealFunction derivative() {
+ return new Cosh();
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tan.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tan.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tan.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tan.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
package org.apache.commons.math.analysis.function;
import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
import org.apache.commons.math.util.FastMath;
/**
@@ -26,9 +27,20 @@ import org.apache.commons.math.util.Fast
* @version $Id$
* @since 3.0
*/
-public class Tan implements UnivariateRealFunction {
+public class Tan implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return FastMath.tan(x);
}
+
+ /** {@inheritDoc} */
+ public UnivariateRealFunction derivative() {
+ return new UnivariateRealFunction() {
+ /** {@inheritDoc} */
+ public double value(double x) {
+ final double tanX = FastMath.tan(x);
+ return 1 + tanX * tanX;
+ }
+ };
+ }
}
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tanh.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tanh.java?rev=1184933&r1=1184932&r2=1184933&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tanh.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/analysis/function/Tanh.java Sun Oct 16 21:04:19 2011
@@ -18,6 +18,7 @@
package org.apache.commons.math.analysis.function;
import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.DifferentiableUnivariateRealFunction;
import org.apache.commons.math.util.FastMath;
/**
@@ -26,9 +27,20 @@ import org.apache.commons.math.util.Fast
* @version $Id$
* @since 3.0
*/
-public class Tanh implements UnivariateRealFunction {
+public class Tanh implements DifferentiableUnivariateRealFunction {
/** {@inheritDoc} */
public double value(double x) {
return FastMath.tanh(x);
}
+
+ /** {@inheritDoc} */
+ public UnivariateRealFunction derivative() {
+ return new UnivariateRealFunction() {
+ /** {@inheritDoc} */
+ public double value(double x) {
+ final double tanhX = FastMath.tanh(x);
+ return 1 - tanhX * tanhX;
+ }
+ };
+ }
}