You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by di...@apache.org on 2010/08/05 10:48:00 UTC
svn commit: r982507 - in /commons/proper/math/trunk/src:
main/java/org/apache/commons/math/linear/
main/java/org/apache/commons/math/optimization/general/ site/xdoc/
test/java/org/apache/commons/math/optimization/general/
Author: dimpbx
Date: Thu Aug 5 08:48:00 2010
New Revision: 982507
URL: http://svn.apache.org/viewvc?rev=982507&view=rev
Log:
MATH-377 fixed
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/EigenDecompositionImpl.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/SingularValueDecompositionImpl.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/general/AbstractLeastSquaresOptimizer.java
commons/proper/math/trunk/src/site/xdoc/changes.xml
commons/proper/math/trunk/src/test/java/org/apache/commons/math/optimization/general/LevenbergMarquardtOptimizerTest.java
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/EigenDecompositionImpl.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/EigenDecompositionImpl.java?rev=982507&r1=982506&r2=982507&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/EigenDecompositionImpl.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/EigenDecompositionImpl.java Thu Aug 5 08:48:00 2010
@@ -561,7 +561,7 @@ public class EigenDecompositionImpl impl
z[ia][i] = c * z[ia][i] - s * p;
}
}
- if (e[i + 1] == 0.0 && i >= j)
+ if (t == 0.0 && i >= j)
continue;
realEigenvalues[j] -= u;
e[j] = q;
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/SingularValueDecompositionImpl.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/SingularValueDecompositionImpl.java?rev=982507&r1=982506&r2=982507&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/SingularValueDecompositionImpl.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/SingularValueDecompositionImpl.java Thu Aug 5 08:48:00 2010
@@ -108,7 +108,7 @@ public class SingularValueDecompositionI
for (int k = 0; k < n; k++) {
matAAT[i][j] += localcopy[i][k] * localcopy[j][k];
}
- matAAT[j][i]=matAAT[i][j];
+ matAAT[j][i]=matAAT[i][j];
}
}
int p;
@@ -119,7 +119,6 @@ public class SingularValueDecompositionI
new Array2DRowRealMatrix(matATA),1.0);
singularValues = eigenDecomposition.getRealEigenvalues();
cachedV = eigenDecomposition.getV();
-
// compute eigen decomposition of A*A^T
eigenDecomposition = new EigenDecompositionImpl(
new Array2DRowRealMatrix(matAAT),1.0);
@@ -141,7 +140,7 @@ public class SingularValueDecompositionI
singularValues[i] = Math.sqrt(Math.abs(singularValues[i]));
}
// Up to this point, U and V are computed independently of each other.
- // There still an sign indetermination of each column of, say, U.
+ // There still a sign indetermination of each column of, say, U.
// The sign is set such that A.V_i=sigma_i.U_i (i<=p)
// The right sign corresponds to a positive dot product of A.V_i and U_i
for (int i = 0; i < p; i++) {
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/general/AbstractLeastSquaresOptimizer.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/general/AbstractLeastSquaresOptimizer.java?rev=982507&r1=982506&r2=982507&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/general/AbstractLeastSquaresOptimizer.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math/optimization/general/AbstractLeastSquaresOptimizer.java Thu Aug 5 08:48:00 2010
@@ -237,23 +237,20 @@ public abstract class AbstractLeastSquar
* @return RMS value
*/
public double getRMS() {
- double criterion = 0;
- for (int i = 0; i < rows; ++i) {
- final double residual = residuals[i];
- criterion += residualsWeights[i] * residual * residual;
- }
- return Math.sqrt(criterion / rows);
+ return Math.sqrt(getChiSquare() / rows);
}
/**
- * Get the Chi-Square value.
+ * Get a Chi-Square-like value assuming the N residuals follow N
+ * distinct normal distributions centered on 0 and whose variances are
+ * the reciprocal of the weights.
* @return chi-square value
*/
public double getChiSquare() {
double chiSquare = 0;
for (int i = 0; i < rows; ++i) {
final double residual = residuals[i];
- chiSquare += residual * residual / residualsWeights[i];
+ chiSquare += residual * residual * residualsWeights[i];
}
return chiSquare;
}
Modified: commons/proper/math/trunk/src/site/xdoc/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/site/xdoc/changes.xml?rev=982507&r1=982506&r2=982507&view=diff
==============================================================================
--- commons/proper/math/trunk/src/site/xdoc/changes.xml (original)
+++ commons/proper/math/trunk/src/site/xdoc/changes.xml Thu Aug 5 08:48:00 2010
@@ -52,6 +52,9 @@ The <action> type attribute can be add,u
If the output is not quite correct, check for invisible trailing spaces!
-->
<release version="2.2" date="TBD" description="TBD">
+ <action dev="dimpbx" type="fix" issue="MATH-377">
+ Fixed bug in chi-square computation in AbstractLeastSquaresOptimizer.
+ </action>
<action dev="luc" type="add" issue="MATH-400" due-to="J. Lewis Muir">
Added support for Gaussian curve fitting.
</action>
Modified: commons/proper/math/trunk/src/test/java/org/apache/commons/math/optimization/general/LevenbergMarquardtOptimizerTest.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/optimization/general/LevenbergMarquardtOptimizerTest.java?rev=982507&r1=982506&r2=982507&view=diff
==============================================================================
--- commons/proper/math/trunk/src/test/java/org/apache/commons/math/optimization/general/LevenbergMarquardtOptimizerTest.java (original)
+++ commons/proper/math/trunk/src/test/java/org/apache/commons/math/optimization/general/LevenbergMarquardtOptimizerTest.java Thu Aug 5 08:48:00 2010
@@ -439,8 +439,8 @@ public class LevenbergMarquardtOptimizer
assertEquals(cov[0][1], cov[1][0], 1.0e-14);
assertEquals(0.0016, cov[1][1], 0.001);
errors = optimizer.guessParametersErrors();
- assertEquals(0.002, errors[0], 0.001);
- assertEquals(0.002, errors[1], 0.001);
+ assertEquals(0.004, errors[0], 0.001);
+ assertEquals(0.004, errors[1], 0.001);
}