Fixed a wrong dimension check in SVD solver
thanks to Dimitri for identifying and solving this git-svn-id: https://svn.apache.org/repos/asf/commons/proper/math/trunk@891436 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
01e5f22cc5
commit
204990415d
|
@ -24,8 +24,8 @@ package org.apache.commons.math.linear;
|
|||
* Singular Value Decomposition of a real matrix.
|
||||
* <p>The Singular Value Decomposition of matrix A is a set of three matrices:
|
||||
* U, Σ and V such that A = U × Σ × V<sup>T</sup>.
|
||||
* Let A be an m × n matrix, then U is an m × m orthogonal matrix,
|
||||
* Σ is a m × n diagonal matrix with positive diagonal elements,
|
||||
* Let A be an m × n matrix, then U is an m × n orthogonal matrix,
|
||||
* Σ is a n × n diagonal matrix with positive diagonal elements,
|
||||
* and V is an n × n orthogonal matrix.</p>
|
||||
* <p>This interface is similar to the class with similar name from the
|
||||
* <a href="http://math.nist.gov/javanumerics/jama/">JAMA</a> library, with the
|
||||
|
|
|
@ -24,8 +24,8 @@ import org.apache.commons.math.util.MathUtils;
|
|||
* Calculates the Singular Value Decomposition of a matrix.
|
||||
* <p>The Singular Value Decomposition of matrix A is a set of three matrices:
|
||||
* U, Σ and V such that A = U × Σ × V<sup>T</sup>.
|
||||
* Let A be an m × n matrix, then U is an m × m orthogonal matrix,
|
||||
* Σ is a m × n diagonal matrix with positive diagonal elements,
|
||||
* Let A be an m × n matrix, then U is an m × n orthogonal matrix,
|
||||
* Σ is a n × n diagonal matrix with positive diagonal elements,
|
||||
* and V is an n × n orthogonal matrix.</p>
|
||||
*
|
||||
* @version $Revision$ $Date$
|
||||
|
@ -361,10 +361,10 @@ public class SingularValueDecompositionImpl implements SingularValueDecompositio
|
|||
public double[] solve(final double[] b)
|
||||
throws IllegalArgumentException, InvalidMatrixException {
|
||||
|
||||
if (b.length != singularValues.length) {
|
||||
if (b.length != uT.getColumnDimension()) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(
|
||||
"vector length mismatch: got {0} but expected {1}",
|
||||
b.length, singularValues.length);
|
||||
b.length, uT.getColumnDimension());
|
||||
}
|
||||
|
||||
final double[] w = uT.operate(b);
|
||||
|
@ -390,10 +390,10 @@ public class SingularValueDecompositionImpl implements SingularValueDecompositio
|
|||
public RealVector solve(final RealVector b)
|
||||
throws IllegalArgumentException, InvalidMatrixException {
|
||||
|
||||
if (b.getDimension() != singularValues.length) {
|
||||
if (b.getDimension() != uT.getColumnDimension()) {
|
||||
throw MathRuntimeException.createIllegalArgumentException(
|
||||
"vector length mismatch: got {0} but expected {1}",
|
||||
b.getDimension(), singularValues.length);
|
||||
b.getDimension(), uT.getColumnDimension());
|
||||
}
|
||||
|
||||
final RealVector w = uT.operate(b);
|
||||
|
|
|
@ -39,6 +39,9 @@ The <action> type attribute can be add,update,fix,remove.
|
|||
</properties>
|
||||
<body>
|
||||
<release version="2.1" date="TBD" description="TBD">
|
||||
<action dev="luc" type="fix" due-to="Dimitri Pourbaix">
|
||||
Fixed a wrong dimension check in SVD solver.
|
||||
</action>
|
||||
<action dev="luc" type="fix" issue="MATH-313" due-to="Jake Mannix">
|
||||
Added composition features for real functions.
|
||||
</action>
|
||||
|
|
Loading…
Reference in New Issue