You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by md...@apache.org on 2003/07/05 20:04:42 UTC
cvs commit: jakarta-commons-sandbox/math/src/java/org/apache/commons/math/stat/distribution AbstractContinuousDistribution.java
mdiggory 2003/07/05 11:04:42
Modified: math/src/java/org/apache/commons/math/stat/distribution
AbstractContinuousDistribution.java
Log:
PR: http://nagoya.apache.org/bugzilla/show_bug.cgi?id=21313
Submitted by: brent@worden.org
Revision Changes Path
1.6 +29 -12 jakarta-commons-sandbox/math/src/java/org/apache/commons/math/stat/distribution/AbstractContinuousDistribution.java
Index: AbstractContinuousDistribution.java
===================================================================
RCS file: /home/cvs/jakarta-commons-sandbox/math/src/java/org/apache/commons/math/stat/distribution/AbstractContinuousDistribution.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- AbstractContinuousDistribution.java 22 Jun 2003 03:57:57 -0000 1.5
+++ AbstractContinuousDistribution.java 5 Jul 2003 18:04:42 -0000 1.6
@@ -53,8 +53,10 @@
*/
package org.apache.commons.math.stat.distribution;
+import org.apache.commons.math.MathException;
import org.apache.commons.math.analysis.RootFinding;
-import org.apache.commons.math.analysis.UnivariateFunction;
+import org.apache.commons.math.analysis.UnivariateRealFunction;
+import org.apache.commons.math.analysis.UnivariateRealSolverFactory;
/**
* Base class for various continuous distributions. It provides default
@@ -101,22 +103,37 @@
// by default, do simple root finding using bracketing and bisection.
// subclasses can overide if there is a better method.
- UnivariateFunction rootFindingFunction = new UnivariateFunction() {
- public double evaluate(double x) {
+ UnivariateRealFunction rootFindingFunction =
+ new UnivariateRealFunction() {
+
+ public double value(double x) throws MathException {
return cummulativeProbability(x) - p;
}
+
+ public double firstDerivative(double x) throws MathException {
+ return 0;
+ }
+
+ public double secondDerivative(double x) throws MathException {
+ return 0;
+ }
};
- // bracket root
- double[] bracket = RootFinding.bracket(rootFindingFunction,
- getInitialDomain(p), getDomainLowerBound(p),
- getDomainUpperBound(p));
-
- // find root
- double root = RootFinding.bisection(rootFindingFunction, bracket[0],
- bracket[1]);
+ try {
+ // bracket root
+ double[] bracket = RootFinding.bracket(rootFindingFunction,
+ getInitialDomain(p), getDomainLowerBound(p),
+ getDomainUpperBound(p));
+
+ // find root
+ double root = UnivariateRealSolverFactory.solve(
+ rootFindingFunction, bracket[0], bracket[1]);
- return root;
+ return root;
+ } catch (MathException ex) {
+ // this should never happen.
+ return Double.NaN;
+ }
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org