Author: erans
Date: Sat Aug 13 07:45:42 2011
New Revision: 1157345
URL: http://svn.apache.org/viewvc?rev=1157345&view=rev
Log:
MATH-602
Inverse condition number.
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math/linear/SingularValueDecompositionImpl.java
commons/proper/math/trunk/src/test/java/org/apache/commons/math/linear/SingularValueDecompositionImplTest.java
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=1157345&r1=1157344&r2=1157345&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
Sat Aug 13 07:45:42 2011
@@ -545,6 +545,17 @@ public class SingularValueDecompositionI
return singularValues[0] / singularValues[n - 1];
}
+ /**
+ * Computes the inverse of the condition number.
+ * In cases of rank deficiency, the {@link #getConditionNumber() condition
+ * number} will become undefined.
+ *
+ * @return the inverse of the condition number.
+ */
+ public double getInverseConditionNumber() {
+ return singularValues[n - 1] / singularValues[0];
+ }
+
/** {@inheritDoc} */
public int getRank() {
int r = 0;
Modified:
commons/proper/math/trunk/src/test/java/org/apache/commons/math/linear/SingularValueDecompositionImplTest.java
URL:
http://svn.apache.org/viewvc/commons/proper/math/trunk/src/test/java/org/apache/commons/math/linear/SingularValueDecompositionImplTest.java?rev=1157345&r1=1157344&r2=1157345&view=diff
==============================================================================
---
commons/proper/math/trunk/src/test/java/org/apache/commons/math/linear/SingularValueDecompositionImplTest.java
(original)
+++
commons/proper/math/trunk/src/test/java/org/apache/commons/math/linear/SingularValueDecompositionImplTest.java
Sat Aug 13 07:45:42 2011
@@ -298,6 +298,13 @@ public class SingularValueDecompositionI
Assert.assertEquals(3.0, svd.getConditionNumber(), 1.5e-15);
}
+ @Test
+ public void testInverseConditionNumber() {
+ SingularValueDecompositionImpl svd =
+ new
SingularValueDecompositionImpl(MatrixUtils.createRealMatrix(testSquare));
+ Assert.assertEquals(1.0/3.0, svd.getInverseConditionNumber(), 1.5e-15);
+ }
+
private RealMatrix createTestMatrix(final Random r, final int rows, final
int columns,
final double[] singularValues) {
final RealMatrix u =