diff --git a/src/Examples/LinearAlgebra/DirectSolvers.cs b/src/Examples/LinearAlgebra/DirectSolvers.cs index 30d10565..210a33b6 100644 --- a/src/Examples/LinearAlgebra/DirectSolvers.cs +++ b/src/Examples/LinearAlgebra/DirectSolvers.cs @@ -64,7 +64,7 @@ namespace Examples.LinearAlgebraExamples public void Run() { // Format matrix output to console - var formatProvider = (CultureInfo)CultureInfo.InvariantCulture.Clone(); + var formatProvider = (CultureInfo) CultureInfo.InvariantCulture.Clone(); formatProvider.TextInfo.ListSeparator = " "; // Solve next system of linear equations (Ax=b): @@ -73,13 +73,13 @@ namespace Examples.LinearAlgebraExamples // 4*x + 1*y + 5*z = 43 // Create matrix "A" with coefficients - var matrixA = DenseMatrix.OfArray(new[,] { { 5.00, 2.00, -4.00 }, { 3.00, -7.00, 6.00 }, { 4.00, 1.00, 5.00 } }); + var matrixA = DenseMatrix.OfArray(new[,] {{5.00, 2.00, -4.00}, {3.00, -7.00, 6.00}, {4.00, 1.00, 5.00}}); Console.WriteLine(@"Matrix 'A' with coefficients"); Console.WriteLine(matrixA.ToString("#0.00\t", formatProvider)); Console.WriteLine(); // Create vector "b" with the constant terms. - var vectorB = new DenseVector(new[] { -7.0, 38.0, 43.0 }); + var vectorB = new DenseVector(new[] {-7.0, 38.0, 43.0}); Console.WriteLine(@"Vector 'b' with the constant terms"); Console.WriteLine(vectorB.ToString("#0.00\t", formatProvider)); Console.WriteLine(); @@ -97,7 +97,7 @@ namespace Examples.LinearAlgebraExamples Console.WriteLine(); // 3. Solve linear equations using SVD decomposition - matrixA.Svd(true).Solve(vectorB, resultX); + matrixA.Svd().Solve(vectorB, resultX); Console.WriteLine(@"3. Solution using SVD decomposition"); Console.WriteLine(resultX.ToString("#0.00\t", formatProvider)); Console.WriteLine(); @@ -109,7 +109,7 @@ namespace Examples.LinearAlgebraExamples Console.WriteLine(); // 5. Verify result. Multiply coefficient matrix "A" by result vector "x" - var reconstructVecorB = matrixA * resultX; + var reconstructVecorB = matrixA*resultX; Console.WriteLine(@"5. Multiply coefficient matrix 'A' by result vector 'x'"); Console.WriteLine(reconstructVecorB.ToString("#0.00\t", formatProvider)); Console.WriteLine(); @@ -135,7 +135,7 @@ namespace Examples.LinearAlgebraExamples Console.WriteLine(); // 8. Verify result. Multiply new coefficient matrix "A" by result vector "x" - reconstructVecorB = newMatrixA * resultX; + reconstructVecorB = newMatrixA*resultX; Console.WriteLine(@"8. Multiply new coefficient matrix 'A' by result vector 'x'"); Console.WriteLine(reconstructVecorB.ToString("#0.00\t", formatProvider)); Console.WriteLine(); diff --git a/src/Examples/LinearAlgebra/Factorization/Svd.cs b/src/Examples/LinearAlgebra/Factorization/Svd.cs index dd8e65f7..bb856732 100644 --- a/src/Examples/LinearAlgebra/Factorization/Svd.cs +++ b/src/Examples/LinearAlgebra/Factorization/Svd.cs @@ -26,7 +26,6 @@ using System; using System.Globalization; -using MathNet.Numerics.LinearAlgebra; using MathNet.Numerics.LinearAlgebra.Double; namespace Examples.LinearAlgebra.FactorizationExamples @@ -73,17 +72,17 @@ namespace Examples.LinearAlgebra.FactorizationExamples public void Run() { // Format matrix output to console - var formatProvider = (CultureInfo)CultureInfo.InvariantCulture.Clone(); + var formatProvider = (CultureInfo) CultureInfo.InvariantCulture.Clone(); formatProvider.TextInfo.ListSeparator = " "; // Create square matrix - var matrix = DenseMatrix.OfArray(new[,] { { 4.0, 1.0 }, { 3.0, 2.0 } }); + var matrix = DenseMatrix.OfArray(new[,] {{4.0, 1.0}, {3.0, 2.0}}); Console.WriteLine(@"Initial square matrix"); Console.WriteLine(matrix.ToString("#0.00\t", formatProvider)); Console.WriteLine(); // Perform full SVD decomposition - var svd = matrix.Svd(true); + var svd = matrix.Svd(); Console.WriteLine(@"Perform full SVD decomposition"); // 1. Left singular vectors @@ -107,7 +106,7 @@ namespace Examples.LinearAlgebra.FactorizationExamples Console.WriteLine(); // 5. Multiply U matrix by its transpose - var identinty = svd.U * svd.U.Transpose(); + var identinty = svd.U*svd.U.Transpose(); Console.WriteLine(@"5. Multiply U matrix by its transpose"); Console.WriteLine(identinty.ToString("#0.00\t", formatProvider)); Console.WriteLine(); @@ -119,7 +118,7 @@ namespace Examples.LinearAlgebra.FactorizationExamples Console.WriteLine(); // 7. Reconstruct initial matrix: A = U*Σ*VT - var reconstruct = svd.U * svd.W * svd.VT; + var reconstruct = svd.U*svd.W*svd.VT; Console.WriteLine(@"7. Reconstruct initial matrix: A = U*S*VT"); Console.WriteLine(reconstruct.ToString("#0.00\t", formatProvider)); Console.WriteLine(); diff --git a/src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs b/src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs index c1e591b4..e1305b4f 100644 --- a/src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs +++ b/src/Numerics/LinearAlgebra/Complex/DenseMatrix.cs @@ -1029,7 +1029,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex return DenseGramSchmidt.Create(this); } - public override Svd Svd(bool computeVectors) + public override Svd Svd(bool computeVectors = true) { return DenseSvd.Create(this, computeVectors); } diff --git a/src/Numerics/LinearAlgebra/Complex/Matrix.cs b/src/Numerics/LinearAlgebra/Complex/Matrix.cs index 01ac95ad..cd29db07 100644 --- a/src/Numerics/LinearAlgebra/Complex/Matrix.cs +++ b/src/Numerics/LinearAlgebra/Complex/Matrix.cs @@ -478,7 +478,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex return UserGramSchmidt.Create(this); } - public override Svd Svd(bool computeVectors) + public override Svd Svd(bool computeVectors = true) { return UserSvd.Create(this, computeVectors); } diff --git a/src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs b/src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs index 1ec044b3..5811a2c6 100644 --- a/src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs +++ b/src/Numerics/LinearAlgebra/Complex32/DenseMatrix.cs @@ -1024,7 +1024,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32 return DenseGramSchmidt.Create(this); } - public override Svd Svd(bool computeVectors) + public override Svd Svd(bool computeVectors = true) { return DenseSvd.Create(this, computeVectors); } diff --git a/src/Numerics/LinearAlgebra/Complex32/Matrix.cs b/src/Numerics/LinearAlgebra/Complex32/Matrix.cs index 2f39afcb..1dd2ab2b 100644 --- a/src/Numerics/LinearAlgebra/Complex32/Matrix.cs +++ b/src/Numerics/LinearAlgebra/Complex32/Matrix.cs @@ -473,7 +473,7 @@ namespace MathNet.Numerics.LinearAlgebra.Complex32 return UserGramSchmidt.Create(this); } - public override Svd Svd(bool computeVectors) + public override Svd Svd(bool computeVectors = true) { return UserSvd.Create(this, computeVectors); } diff --git a/src/Numerics/LinearAlgebra/Double/DenseMatrix.cs b/src/Numerics/LinearAlgebra/Double/DenseMatrix.cs index 85bfa7e5..d5c51408 100644 --- a/src/Numerics/LinearAlgebra/Double/DenseMatrix.cs +++ b/src/Numerics/LinearAlgebra/Double/DenseMatrix.cs @@ -1055,7 +1055,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double return DenseGramSchmidt.Create(this); } - public override Svd Svd(bool computeVectors) + public override Svd Svd(bool computeVectors = true) { return DenseSvd.Create(this, computeVectors); } diff --git a/src/Numerics/LinearAlgebra/Double/Matrix.cs b/src/Numerics/LinearAlgebra/Double/Matrix.cs index bb0b4fdc..210b8ada 100644 --- a/src/Numerics/LinearAlgebra/Double/Matrix.cs +++ b/src/Numerics/LinearAlgebra/Double/Matrix.cs @@ -479,7 +479,7 @@ namespace MathNet.Numerics.LinearAlgebra.Double return UserGramSchmidt.Create(this); } - public override Svd Svd(bool computeVectors) + public override Svd Svd(bool computeVectors = true) { return UserSvd.Create(this, computeVectors); } diff --git a/src/Numerics/LinearAlgebra/Matrix.Solve.cs b/src/Numerics/LinearAlgebra/Matrix.Solve.cs index 8ed75110..3154276b 100644 --- a/src/Numerics/LinearAlgebra/Matrix.Solve.cs +++ b/src/Numerics/LinearAlgebra/Matrix.Solve.cs @@ -72,7 +72,7 @@ namespace MathNet.Numerics.LinearAlgebra /// /// Compute the singular U and VT vectors or not. /// The SVD decomposition object. - public abstract Svd Svd(bool computeVectors); + public abstract Svd Svd(bool computeVectors = true); /// /// Computes the EVD decomposition for a matrix. @@ -214,24 +214,55 @@ namespace MathNet.Numerics.LinearAlgebra return iterator.Status; } + + /// + /// Solves the matrix equation Ax = b, where A is the coefficient matrix (this matrix), b is the solution vector and x is the unknown vector. + /// + /// The solution vector b. + /// The result vector x. + /// The iterative solver to use. + /// Criteria to control when to stop iterating. + /// The preconditioner to use for approximations. public IterationStatus TrySolveIterative(Vector input, Vector result, IIterativeSolver solver, IPreconditioner preconditioner, params IIterationStopCriterium[] stopCriteria) { var iterator = new Iterator(stopCriteria.Length == 0 ? Builder.IterativeSolverStopCriteria() : stopCriteria); return TrySolveIterative(input, result, solver, iterator, preconditioner); } + /// + /// Solves the matrix equation AX = B, where A is the coefficient matrix (this matrix), B is the solution matrix and X is the unknown matrix. + /// + /// The solution matrix B. + /// The result matrix X + /// The iterative solver to use. + /// Criteria to control when to stop iterating. + /// The preconditioner to use for approximations. public IterationStatus TrySolveIterative(Matrix input, Matrix result, IIterativeSolver solver, IPreconditioner preconditioner, params IIterationStopCriterium[] stopCriteria) { var iterator = new Iterator(stopCriteria.Length == 0 ? Builder.IterativeSolverStopCriteria() : stopCriteria); return TrySolveIterative(input, result, solver, iterator, preconditioner); } + /// + /// Solves the matrix equation Ax = b, where A is the coefficient matrix (this matrix), b is the solution vector and x is the unknown vector. + /// + /// The solution vector b. + /// The result vector x. + /// The iterative solver to use. + /// Criteria to control when to stop iterating. public IterationStatus TrySolveIterative(Vector input, Vector result, IIterativeSolver solver, params IIterationStopCriterium[] stopCriteria) { var iterator = new Iterator(stopCriteria.Length == 0 ? Builder.IterativeSolverStopCriteria() : stopCriteria); return TrySolveIterative(input, result, solver, iterator); } + /// + /// Solves the matrix equation AX = B, where A is the coefficient matrix (this matrix), B is the solution matrix and X is the unknown matrix. + /// + /// The solution matrix B. + /// The result matrix X + /// The iterative solver to use. + /// Criteria to control when to stop iterating. public IterationStatus TrySolveIterative(Matrix input, Matrix result, IIterativeSolver solver, params IIterationStopCriterium[] stopCriteria) { var iterator = new Iterator(stopCriteria.Length == 0 ? Builder.IterativeSolverStopCriteria() : stopCriteria); @@ -272,6 +303,14 @@ namespace MathNet.Numerics.LinearAlgebra return result; } + /// + /// Solves the matrix equation Ax = b, where A is the coefficient matrix (this matrix), b is the solution vector and x is the unknown vector. + /// + /// The solution vector b. + /// The iterative solver to use. + /// Criteria to control when to stop iterating. + /// The preconditioner to use for approximations. + /// The result vector x. public Vector SolveIterative(Vector input, IIterativeSolver solver, IPreconditioner preconditioner, params IIterationStopCriterium[] stopCriteria) { var result = Builder.DenseVector(RowCount); @@ -279,6 +318,14 @@ namespace MathNet.Numerics.LinearAlgebra return result; } + /// + /// Solves the matrix equation AX = B, where A is the coefficient matrix (this matrix), B is the solution matrix and X is the unknown matrix. + /// + /// The solution matrix B. + /// The iterative solver to use. + /// Criteria to control when to stop iterating. + /// The preconditioner to use for approximations. + /// The result matrix X. public Matrix SolveIterative(Matrix input, IIterativeSolver solver, IPreconditioner preconditioner, params IIterationStopCriterium[] stopCriteria) { var result = Builder.DenseMatrix(input.RowCount, input.ColumnCount); @@ -286,6 +333,13 @@ namespace MathNet.Numerics.LinearAlgebra return result; } + /// + /// Solves the matrix equation Ax = b, where A is the coefficient matrix (this matrix), b is the solution vector and x is the unknown vector. + /// + /// The solution vector b. + /// The iterative solver to use. + /// Criteria to control when to stop iterating. + /// The result vector x. public Vector SolveIterative(Vector input, IIterativeSolver solver, params IIterationStopCriterium[] stopCriteria) { var result = Builder.DenseVector(RowCount); @@ -293,6 +347,13 @@ namespace MathNet.Numerics.LinearAlgebra return result; } + /// + /// Solves the matrix equation AX = B, where A is the coefficient matrix (this matrix), B is the solution matrix and X is the unknown matrix. + /// + /// The solution matrix B. + /// The iterative solver to use. + /// Criteria to control when to stop iterating. + /// The result matrix X. public Matrix SolveIterative(Matrix input, IIterativeSolver solver, params IIterationStopCriterium[] stopCriteria) { var result = Builder.DenseMatrix(input.RowCount, input.ColumnCount); diff --git a/src/Numerics/LinearAlgebra/Single/DenseMatrix.cs b/src/Numerics/LinearAlgebra/Single/DenseMatrix.cs index 6d9ae7dd..995b3ce5 100644 --- a/src/Numerics/LinearAlgebra/Single/DenseMatrix.cs +++ b/src/Numerics/LinearAlgebra/Single/DenseMatrix.cs @@ -1055,7 +1055,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single return DenseGramSchmidt.Create(this); } - public override Svd Svd(bool computeVectors) + public override Svd Svd(bool computeVectors = true) { return DenseSvd.Create(this, computeVectors); } diff --git a/src/Numerics/LinearAlgebra/Single/Matrix.cs b/src/Numerics/LinearAlgebra/Single/Matrix.cs index cce9f85d..2b081a82 100644 --- a/src/Numerics/LinearAlgebra/Single/Matrix.cs +++ b/src/Numerics/LinearAlgebra/Single/Matrix.cs @@ -479,7 +479,7 @@ namespace MathNet.Numerics.LinearAlgebra.Single return UserGramSchmidt.Create(this); } - public override Svd Svd(bool computeVectors) + public override Svd Svd(bool computeVectors = true) { return UserSvd.Create(this, computeVectors); } diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Factorization/SvdTests.cs b/src/UnitTests/LinearAlgebraTests/Complex/Factorization/SvdTests.cs index 1405c1fc..afb87d8c 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex/Factorization/SvdTests.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex/Factorization/SvdTests.cs @@ -25,7 +25,6 @@ // using System; -using MathNet.Numerics.LinearAlgebra; using MathNet.Numerics.LinearAlgebra.Complex; using NUnit.Framework; @@ -48,7 +47,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization public void CanFactorizeIdentity(int order) { var matrixI = DenseMatrix.Identity(order); - var factorSvd = matrixI.Svd(true); + var factorSvd = matrixI.Svd(); var u = factorSvd.U; var vt = factorSvd.VT; var w = factorSvd.W; @@ -85,7 +84,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization public void CanFactorizeRandomMatrix(int row, int column) { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var u = factorSvd.U; var vt = factorSvd.VT; var w = factorSvd.W; @@ -103,7 +102,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization Assert.AreEqual(column, w.ColumnCount); // Make sure the U*W*VT is the original matrix. - var matrix = u * w * vt; + var matrix = u*w*vt; for (var i = 0; i < matrix.RowCount; i++) { for (var j = 0; j < matrix.ColumnCount; j++) @@ -124,7 +123,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization public void CanCheckRankOfNonSquare(int row, int column) { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var mn = Math.Min(row, column); Assert.AreEqual(factorSvd.Rank, mn); @@ -143,7 +142,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization public void CanCheckRankSquare(int order) { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); if (factorSvd.Determinant != 0) { @@ -175,7 +174,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization matrixA[i + 1, i] = 1; } - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); Assert.AreEqual(factorSvd.Determinant, Complex.Zero); Assert.AreEqual(factorSvd.Rank, order - 1); @@ -222,14 +221,14 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var vectorb = MatrixLoader.GenerateRandomDenseVector(row); var resultx = factorSvd.Solve(vectorb); Assert.AreEqual(matrixA.ColumnCount, resultx.Count); - var matrixBReconstruct = matrixA * resultx; + var matrixBReconstruct = matrixA*resultx; // Check the reconstruction. for (var i = 0; i < vectorb.Count; i++) @@ -262,7 +261,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixX = factorSvd.Solve(matrixB); @@ -273,7 +272,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization // The solution X has the same number of columns as B Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount); - var matrixBReconstruct = matrixA * matrixX; + var matrixBReconstruct = matrixA*matrixX; // Check the reconstruction. for (var i = 0; i < matrixB.RowCount; i++) @@ -309,13 +308,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var vectorb = MatrixLoader.GenerateRandomDenseVector(row); var vectorbCopy = vectorb.Clone(); var resultx = new DenseVector(column); factorSvd.Solve(vectorb, resultx); - var matrixBReconstruct = matrixA * resultx; + var matrixBReconstruct = matrixA*resultx; // Check the reconstruction. for (var i = 0; i < vectorb.Count; i++) @@ -354,7 +353,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixBCopy = matrixB.Clone(); @@ -368,7 +367,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization // The solution X has the same number of columns as B Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount); - var matrixBReconstruct = matrixA * matrixX; + var matrixBReconstruct = matrixA*matrixX; // Check the reconstruction. for (var i = 0; i < matrixB.RowCount; i++) diff --git a/src/UnitTests/LinearAlgebraTests/Complex/Factorization/UserSvdTests.cs b/src/UnitTests/LinearAlgebraTests/Complex/Factorization/UserSvdTests.cs index 29635d10..5b5943a1 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex/Factorization/UserSvdTests.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex/Factorization/UserSvdTests.cs @@ -25,7 +25,6 @@ // using System; -using MathNet.Numerics.LinearAlgebra; using NUnit.Framework; namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization @@ -47,7 +46,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization public void CanFactorizeIdentity(int order) { var matrixI = UserDefinedMatrix.Identity(order); - var factorSvd = matrixI.Svd(true); + var factorSvd = matrixI.Svd(); var u = factorSvd.U; var vt = factorSvd.VT; var w = factorSvd.W; @@ -84,7 +83,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization public void CanFactorizeRandomMatrix(int row, int column) { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var u = factorSvd.U; var vt = factorSvd.VT; var w = factorSvd.W; @@ -102,7 +101,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization Assert.AreEqual(column, w.ColumnCount); // Make sure the U*W*VT is the original matrix. - var matrix = u * w * vt; + var matrix = u*w*vt; for (var i = 0; i < matrix.RowCount; i++) { for (var j = 0; j < matrix.ColumnCount; j++) @@ -123,7 +122,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization public void CanCheckRankOfNonSquare(int row, int column) { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var mn = Math.Min(row, column); Assert.AreEqual(factorSvd.Rank, mn); @@ -142,7 +141,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization public void CanCheckRankSquare(int order) { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(order, order); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); if (factorSvd.Determinant != 0) { @@ -174,7 +173,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization matrixA[i + 1, i] = 1; } - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); Assert.AreEqual(factorSvd.Determinant, Complex.Zero); Assert.AreEqual(factorSvd.Rank, order - 1); @@ -221,14 +220,14 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var vectorb = MatrixLoader.GenerateRandomUserDefinedVector(row); var resultx = factorSvd.Solve(vectorb); Assert.AreEqual(matrixA.ColumnCount, resultx.Count); - var matrixBReconstruct = matrixA * resultx; + var matrixBReconstruct = matrixA*resultx; // Check the reconstruction. for (var i = 0; i < vectorb.Count; i++) @@ -261,7 +260,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var matrixB = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixX = factorSvd.Solve(matrixB); @@ -272,7 +271,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization // The solution X has the same number of columns as B Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount); - var matrixBReconstruct = matrixA * matrixX; + var matrixBReconstruct = matrixA*matrixX; // Check the reconstruction. for (var i = 0; i < matrixB.RowCount; i++) @@ -308,13 +307,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var vectorb = MatrixLoader.GenerateRandomUserDefinedVector(row); var vectorbCopy = vectorb.Clone(); var resultx = new UserDefinedVector(column); factorSvd.Solve(vectorb, resultx); - var matrixBReconstruct = matrixA * resultx; + var matrixBReconstruct = matrixA*resultx; // Check the reconstruction. for (var i = 0; i < vectorb.Count; i++) @@ -353,7 +352,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var matrixB = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixBCopy = matrixB.Clone(); @@ -367,7 +366,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Factorization // The solution X has the same number of columns as B Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount); - var matrixBReconstruct = matrixA * matrixX; + var matrixBReconstruct = matrixA*matrixX; // Check the reconstruction. for (var i = 0; i < matrixB.RowCount; i++) diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Factorization/SvdTests.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Factorization/SvdTests.cs index 114a39dc..b9a22b4b 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex32/Factorization/SvdTests.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex32/Factorization/SvdTests.cs @@ -25,7 +25,6 @@ // using System; -using MathNet.Numerics.LinearAlgebra; using MathNet.Numerics.LinearAlgebra.Complex32; using NUnit.Framework; @@ -48,7 +47,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization public void CanFactorizeIdentity(int order) { var matrixI = DenseMatrix.Identity(order); - var factorSvd = matrixI.Svd(true); + var factorSvd = matrixI.Svd(); var u = factorSvd.U; var vt = factorSvd.VT; var w = factorSvd.W; @@ -85,7 +84,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization public void CanFactorizeRandomMatrix(int row, int column) { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var u = factorSvd.U; var vt = factorSvd.VT; var w = factorSvd.W; @@ -103,7 +102,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization Assert.AreEqual(column, w.ColumnCount); // Make sure the U*W*VT is the original matrix. - var matrix = u * w * vt; + var matrix = u*w*vt; for (var i = 0; i < matrix.RowCount; i++) { for (var j = 0; j < matrix.ColumnCount; j++) @@ -125,7 +124,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization public void CanCheckRankOfNonSquare(int row, int column) { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var mn = Math.Min(row, column); Assert.AreEqual(factorSvd.Rank, mn); @@ -144,7 +143,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization public void CanCheckRankSquare(int order) { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); if (factorSvd.Determinant != 0) { @@ -176,7 +175,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization matrixA[i + 1, i] = 1; } - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); Assert.AreEqual(factorSvd.Determinant, Complex32.Zero); Assert.AreEqual(factorSvd.Rank, order - 1); @@ -223,14 +222,14 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var vectorb = MatrixLoader.GenerateRandomDenseVector(row); var resultx = factorSvd.Solve(vectorb); Assert.AreEqual(matrixA.ColumnCount, resultx.Count); - var matrixBReconstruct = matrixA * resultx; + var matrixBReconstruct = matrixA*resultx; // Check the reconstruction. for (var i = 0; i < vectorb.Count; i++) @@ -264,7 +263,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixX = factorSvd.Solve(matrixB); @@ -275,7 +274,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization // The solution X has the same number of columns as B Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount); - var matrixBReconstruct = matrixA * matrixX; + var matrixBReconstruct = matrixA*matrixX; // Check the reconstruction. for (var i = 0; i < matrixB.RowCount; i++) @@ -312,13 +311,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var vectorb = MatrixLoader.GenerateRandomDenseVector(row); var vectorbCopy = vectorb.Clone(); var resultx = new DenseVector(column); factorSvd.Solve(vectorb, resultx); - var matrixBReconstruct = matrixA * resultx; + var matrixBReconstruct = matrixA*resultx; // Check the reconstruction. for (var i = 0; i < vectorb.Count; i++) @@ -358,7 +357,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixBCopy = matrixB.Clone(); @@ -372,7 +371,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization // The solution X has the same number of columns as B Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount); - var matrixBReconstruct = matrixA * matrixX; + var matrixBReconstruct = matrixA*matrixX; // Check the reconstruction. for (var i = 0; i < matrixB.RowCount; i++) diff --git a/src/UnitTests/LinearAlgebraTests/Complex32/Factorization/UserSvdTests.cs b/src/UnitTests/LinearAlgebraTests/Complex32/Factorization/UserSvdTests.cs index 2206b465..95f99498 100644 --- a/src/UnitTests/LinearAlgebraTests/Complex32/Factorization/UserSvdTests.cs +++ b/src/UnitTests/LinearAlgebraTests/Complex32/Factorization/UserSvdTests.cs @@ -25,7 +25,6 @@ // using System; -using MathNet.Numerics.LinearAlgebra; using NUnit.Framework; namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization @@ -47,7 +46,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization public void CanFactorizeIdentity(int order) { var matrixI = UserDefinedMatrix.Identity(order); - var factorSvd = matrixI.Svd(true); + var factorSvd = matrixI.Svd(); var u = factorSvd.U; var vt = factorSvd.VT; var w = factorSvd.W; @@ -84,7 +83,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization public void CanFactorizeRandomMatrix(int row, int column) { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var u = factorSvd.U; var vt = factorSvd.VT; var w = factorSvd.W; @@ -102,7 +101,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization Assert.AreEqual(column, w.ColumnCount); // Make sure the U*W*VT is the original matrix. - var matrix = u * w * vt; + var matrix = u*w*vt; for (var i = 0; i < matrix.RowCount; i++) { for (var j = 0; j < matrix.ColumnCount; j++) @@ -124,7 +123,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization public void CanCheckRankOfNonSquare(int row, int column) { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var mn = Math.Min(row, column); Assert.AreEqual(factorSvd.Rank, mn); @@ -143,7 +142,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization public void CanCheckRankSquare(int order) { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(order, order); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); if (factorSvd.Determinant != 0) { @@ -175,7 +174,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization matrixA[i + 1, i] = 1; } - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); Assert.AreEqual(factorSvd.Determinant, Complex32.Zero); Assert.AreEqual(factorSvd.Rank, order - 1); @@ -222,14 +221,14 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var vectorb = MatrixLoader.GenerateRandomUserDefinedVector(row); var resultx = factorSvd.Solve(vectorb); Assert.AreEqual(matrixA.ColumnCount, resultx.Count); - var matrixBReconstruct = matrixA * resultx; + var matrixBReconstruct = matrixA*resultx; // Check the reconstruction. for (var i = 0; i < vectorb.Count; i++) @@ -263,7 +262,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var matrixB = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixX = factorSvd.Solve(matrixB); @@ -274,7 +273,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization // The solution X has the same number of columns as B Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount); - var matrixBReconstruct = matrixA * matrixX; + var matrixBReconstruct = matrixA*matrixX; // Check the reconstruction. for (var i = 0; i < matrixB.RowCount; i++) @@ -311,13 +310,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var vectorb = MatrixLoader.GenerateRandomUserDefinedVector(row); var vectorbCopy = vectorb.Clone(); var resultx = new UserDefinedVector(column); factorSvd.Solve(vectorb, resultx); - var matrixBReconstruct = matrixA * resultx; + var matrixBReconstruct = matrixA*resultx; // Check the reconstruction. for (var i = 0; i < vectorb.Count; i++) @@ -357,7 +356,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var matrixB = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixBCopy = matrixB.Clone(); @@ -371,7 +370,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Factorization // The solution X has the same number of columns as B Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount); - var matrixBReconstruct = matrixA * matrixX; + var matrixBReconstruct = matrixA*matrixX; // Check the reconstruction. for (var i = 0; i < matrixB.RowCount; i++) diff --git a/src/UnitTests/LinearAlgebraTests/Double/Factorization/SvdTests.cs b/src/UnitTests/LinearAlgebraTests/Double/Factorization/SvdTests.cs index ea52f329..5da7d912 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/Factorization/SvdTests.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/Factorization/SvdTests.cs @@ -25,7 +25,6 @@ // using System; -using MathNet.Numerics.LinearAlgebra; using MathNet.Numerics.LinearAlgebra.Double; using NUnit.Framework; @@ -46,7 +45,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization public void CanFactorizeIdentity(int order) { var matrixI = DenseMatrix.Identity(order); - var factorSvd = matrixI.Svd(true); + var factorSvd = matrixI.Svd(); var u = factorSvd.U; var vt = factorSvd.VT; var w = factorSvd.W; @@ -83,7 +82,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization public void CanFactorizeRandomMatrix(int row, int column) { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var u = factorSvd.U; var vt = factorSvd.VT; var w = factorSvd.W; @@ -101,7 +100,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization Assert.AreEqual(column, w.ColumnCount); // Make sure the U*W*VT is the original matrix. - var matrix = u * w * vt; + var matrix = u*w*vt; for (var i = 0; i < matrix.RowCount; i++) { for (var j = 0; j < matrix.ColumnCount; j++) @@ -122,7 +121,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization public void CanCheckRankOfNonSquare(int row, int column) { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var mn = Math.Min(row, column); Assert.AreEqual(factorSvd.Rank, mn); @@ -141,7 +140,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization public void CanCheckRankSquare(int order) { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); if (factorSvd.Determinant != 0) { @@ -173,7 +172,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization matrixA[i + 1, i] = 1; } - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); Assert.AreEqual(factorSvd.Determinant, 0); Assert.AreEqual(factorSvd.Rank, order - 1); @@ -220,14 +219,14 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var vectorb = MatrixLoader.GenerateRandomDenseVector(row); var resultx = factorSvd.Solve(vectorb); Assert.AreEqual(matrixA.ColumnCount, resultx.Count); - var matrixBReconstruct = matrixA * resultx; + var matrixBReconstruct = matrixA*resultx; // Check the reconstruction. for (var i = 0; i < vectorb.Count; i++) @@ -260,7 +259,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixX = factorSvd.Solve(matrixB); @@ -271,7 +270,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization // The solution X has the same number of columns as B Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount); - var matrixBReconstruct = matrixA * matrixX; + var matrixBReconstruct = matrixA*matrixX; // Check the reconstruction. for (var i = 0; i < matrixB.RowCount; i++) @@ -307,13 +306,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var vectorb = MatrixLoader.GenerateRandomDenseVector(row); var vectorbCopy = vectorb.Clone(); var resultx = new DenseVector(column); factorSvd.Solve(vectorb, resultx); - var matrixBReconstruct = matrixA * resultx; + var matrixBReconstruct = matrixA*resultx; // Check the reconstruction. for (var i = 0; i < vectorb.Count; i++) @@ -352,7 +351,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixBCopy = matrixB.Clone(); @@ -366,7 +365,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization // The solution X has the same number of columns as B Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount); - var matrixBReconstruct = matrixA * matrixX; + var matrixBReconstruct = matrixA*matrixX; // Check the reconstruction. for (var i = 0; i < matrixB.RowCount; i++) diff --git a/src/UnitTests/LinearAlgebraTests/Double/Factorization/UserSvdTests.cs b/src/UnitTests/LinearAlgebraTests/Double/Factorization/UserSvdTests.cs index 7f8b7adc..1c02a9a7 100644 --- a/src/UnitTests/LinearAlgebraTests/Double/Factorization/UserSvdTests.cs +++ b/src/UnitTests/LinearAlgebraTests/Double/Factorization/UserSvdTests.cs @@ -25,7 +25,6 @@ // using System; -using MathNet.Numerics.LinearAlgebra; using NUnit.Framework; namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization @@ -45,7 +44,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization public void CanFactorizeIdentity(int order) { var matrixI = UserDefinedMatrix.Identity(order); - var factorSvd = matrixI.Svd(true); + var factorSvd = matrixI.Svd(); var u = factorSvd.U; var vt = factorSvd.VT; var w = factorSvd.W; @@ -82,7 +81,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization public void CanFactorizeRandomMatrix(int row, int column) { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var u = factorSvd.U; var vt = factorSvd.VT; var w = factorSvd.W; @@ -100,7 +99,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization Assert.AreEqual(column, w.ColumnCount); // Make sure the U*W*VT is the original matrix. - var matrix = u * w * vt; + var matrix = u*w*vt; for (var i = 0; i < matrix.RowCount; i++) { for (var j = 0; j < matrix.ColumnCount; j++) @@ -121,7 +120,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization public void CanCheckRankOfNonSquare(int row, int column) { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var mn = Math.Min(row, column); Assert.AreEqual(factorSvd.Rank, mn); @@ -140,7 +139,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization public void CanCheckRankSquare(int order) { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(order, order); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); if (factorSvd.Determinant != 0) { @@ -172,7 +171,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization matrixA[i + 1, i] = 1; } - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); Assert.AreEqual(factorSvd.Determinant, 0); Assert.AreEqual(factorSvd.Rank, order - 1); @@ -219,14 +218,14 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var vectorb = MatrixLoader.GenerateRandomUserDefinedVector(row); var resultx = factorSvd.Solve(vectorb); Assert.AreEqual(matrixA.ColumnCount, resultx.Count); - var matrixBReconstruct = matrixA * resultx; + var matrixBReconstruct = matrixA*resultx; // Check the reconstruction. for (var i = 0; i < vectorb.Count; i++) @@ -259,7 +258,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var matrixB = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixX = factorSvd.Solve(matrixB); @@ -270,7 +269,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization // The solution X has the same number of columns as B Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount); - var matrixBReconstruct = matrixA * matrixX; + var matrixBReconstruct = matrixA*matrixX; // Check the reconstruction. for (var i = 0; i < matrixB.RowCount; i++) @@ -306,13 +305,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var vectorb = MatrixLoader.GenerateRandomUserDefinedVector(row); var vectorbCopy = vectorb.Clone(); var resultx = new UserDefinedVector(column); factorSvd.Solve(vectorb, resultx); - var matrixBReconstruct = matrixA * resultx; + var matrixBReconstruct = matrixA*resultx; // Check the reconstruction. for (var i = 0; i < vectorb.Count; i++) @@ -351,7 +350,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var matrixB = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixBCopy = matrixB.Clone(); @@ -365,7 +364,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Factorization // The solution X has the same number of columns as B Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount); - var matrixBReconstruct = matrixA * matrixX; + var matrixBReconstruct = matrixA*matrixX; // Check the reconstruction. for (var i = 0; i < matrixB.RowCount; i++) diff --git a/src/UnitTests/LinearAlgebraTests/Single/Factorization/SvdTests.cs b/src/UnitTests/LinearAlgebraTests/Single/Factorization/SvdTests.cs index 2d32f7d0..12d74b45 100644 --- a/src/UnitTests/LinearAlgebraTests/Single/Factorization/SvdTests.cs +++ b/src/UnitTests/LinearAlgebraTests/Single/Factorization/SvdTests.cs @@ -25,7 +25,6 @@ // using System; -using MathNet.Numerics.LinearAlgebra; using MathNet.Numerics.LinearAlgebra.Single; using NUnit.Framework; @@ -46,7 +45,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization public void CanFactorizeIdentity(int order) { var matrixI = DenseMatrix.Identity(order); - var factorSvd = matrixI.Svd(true); + var factorSvd = matrixI.Svd(); var u = factorSvd.U; var vt = factorSvd.VT; var w = factorSvd.W; @@ -83,7 +82,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization public void CanFactorizeRandomMatrix(int row, int column) { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var u = factorSvd.U; var vt = factorSvd.VT; var w = factorSvd.W; @@ -101,7 +100,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization Assert.AreEqual(column, w.ColumnCount); // Make sure the U*W*VT is the original matrix. - var matrix = u * w * vt; + var matrix = u*w*vt; for (var i = 0; i < matrix.RowCount; i++) { for (var j = 0; j < matrix.ColumnCount; j++) @@ -122,7 +121,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization public void CanCheckRankOfNonSquare(int row, int column) { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var mn = Math.Min(row, column); Assert.AreEqual(factorSvd.Rank, mn); @@ -141,7 +140,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization public void CanCheckRankSquare(int order) { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); if (factorSvd.Determinant != 0) { @@ -173,7 +172,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization matrixA[i + 1, i] = 1; } - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); Assert.AreEqual(factorSvd.Determinant, 0); Assert.AreEqual(factorSvd.Rank, order - 1); @@ -220,14 +219,14 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var vectorb = MatrixLoader.GenerateRandomDenseVector(row); var resultx = factorSvd.Solve(vectorb); Assert.AreEqual(matrixA.ColumnCount, resultx.Count); - var matrixBReconstruct = matrixA * resultx; + var matrixBReconstruct = matrixA*resultx; // Check the reconstruction. for (var i = 0; i < vectorb.Count; i++) @@ -260,7 +259,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixX = factorSvd.Solve(matrixB); @@ -271,7 +270,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization // The solution X has the same number of columns as B Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount); - var matrixBReconstruct = matrixA * matrixX; + var matrixBReconstruct = matrixA*matrixX; // Check the reconstruction. for (var i = 0; i < matrixB.RowCount; i++) @@ -307,13 +306,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var vectorb = MatrixLoader.GenerateRandomDenseVector(row); var vectorbCopy = vectorb.Clone(); var resultx = new DenseVector(column); factorSvd.Solve(vectorb, resultx); - var matrixBReconstruct = matrixA * resultx; + var matrixBReconstruct = matrixA*resultx; // Check the reconstruction. for (var i = 0; i < vectorb.Count; i++) @@ -352,7 +351,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization { var matrixA = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(row, column); var matrixBCopy = matrixB.Clone(); @@ -366,7 +365,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization // The solution X has the same number of columns as B Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount); - var matrixBReconstruct = matrixA * matrixX; + var matrixBReconstruct = matrixA*matrixX; // Check the reconstruction. for (var i = 0; i < matrixB.RowCount; i++) diff --git a/src/UnitTests/LinearAlgebraTests/Single/Factorization/UserSvdTests.cs b/src/UnitTests/LinearAlgebraTests/Single/Factorization/UserSvdTests.cs index 3eb3dba9..f89e576f 100644 --- a/src/UnitTests/LinearAlgebraTests/Single/Factorization/UserSvdTests.cs +++ b/src/UnitTests/LinearAlgebraTests/Single/Factorization/UserSvdTests.cs @@ -25,7 +25,6 @@ // using System; -using MathNet.Numerics.LinearAlgebra; using NUnit.Framework; namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization @@ -45,7 +44,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization public void CanFactorizeIdentity(int order) { var matrixI = UserDefinedMatrix.Identity(order); - var factorSvd = matrixI.Svd(true); + var factorSvd = matrixI.Svd(); var u = factorSvd.U; var vt = factorSvd.VT; var w = factorSvd.W; @@ -82,7 +81,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization public void CanFactorizeRandomMatrix(int row, int column) { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var u = factorSvd.U; var vt = factorSvd.VT; var w = factorSvd.W; @@ -100,7 +99,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization Assert.AreEqual(column, w.ColumnCount); // Make sure the U*W*VT is the original matrix. - var matrix = u * w * vt; + var matrix = u*w*vt; for (var i = 0; i < matrix.RowCount; i++) { for (var j = 0; j < matrix.ColumnCount; j++) @@ -121,7 +120,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization public void CanCheckRankOfNonSquare(int row, int column) { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var mn = Math.Min(row, column); Assert.AreEqual(factorSvd.Rank, mn); @@ -140,7 +139,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization public void CanCheckRankSquare(int order) { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(order, order); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); if (factorSvd.Determinant != 0) { @@ -172,7 +171,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization matrixA[i + 1, i] = 1; } - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); Assert.AreEqual(factorSvd.Determinant, 0); Assert.AreEqual(factorSvd.Rank, order - 1); @@ -219,14 +218,14 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var vectorb = MatrixLoader.GenerateRandomUserDefinedVector(row); var resultx = factorSvd.Solve(vectorb); Assert.AreEqual(matrixA.ColumnCount, resultx.Count); - var matrixBReconstruct = matrixA * resultx; + var matrixBReconstruct = matrixA*resultx; // Check the reconstruction. for (var i = 0; i < vectorb.Count; i++) @@ -259,7 +258,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var matrixB = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixX = factorSvd.Solve(matrixB); @@ -270,7 +269,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization // The solution X has the same number of columns as B Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount); - var matrixBReconstruct = matrixA * matrixX; + var matrixBReconstruct = matrixA*matrixX; // Check the reconstruction. for (var i = 0; i < matrixB.RowCount; i++) @@ -306,13 +305,13 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var vectorb = MatrixLoader.GenerateRandomUserDefinedVector(row); var vectorbCopy = vectorb.Clone(); var resultx = new UserDefinedVector(column); factorSvd.Solve(vectorb, resultx); - var matrixBReconstruct = matrixA * resultx; + var matrixBReconstruct = matrixA*resultx; // Check the reconstruction. for (var i = 0; i < vectorb.Count; i++) @@ -351,7 +350,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization { var matrixA = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixACopy = matrixA.Clone(); - var factorSvd = matrixA.Svd(true); + var factorSvd = matrixA.Svd(); var matrixB = MatrixLoader.GenerateRandomUserDefinedMatrix(row, column); var matrixBCopy = matrixB.Clone(); @@ -365,7 +364,7 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Factorization // The solution X has the same number of columns as B Assert.AreEqual(matrixB.ColumnCount, matrixX.ColumnCount); - var matrixBReconstruct = matrixA * matrixX; + var matrixBReconstruct = matrixA*matrixX; // Check the reconstruction. for (var i = 0; i < matrixB.RowCount; i++)