Browse Source

LA: leverage lighter params syntax in iterator creation

optimization-1
Christoph Ruegg 13 years ago
parent
commit
4b002209b5
  1. 2
      src/Examples/LinearAlgebra/IterativeSolvers/BiCgStabSolver.cs
  2. 2
      src/Examples/LinearAlgebra/IterativeSolvers/CompositeSolverExample.cs
  3. 2
      src/Examples/LinearAlgebra/IterativeSolvers/GpBiCgSolver.cs
  4. 2
      src/Examples/LinearAlgebra/IterativeSolvers/MlkBiCgStabSolver.cs
  5. 2
      src/Examples/LinearAlgebra/IterativeSolvers/TFQMRSolver.cs
  6. 55
      src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/BiCgStabTest.cs
  7. 55
      src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/GpBiCgTest.cs
  8. 56
      src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/MlkBiCgStabTest.cs
  9. 56
      src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/TFQMRTest.cs
  10. 57
      src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/BiCgStabTest.cs
  11. 46
      src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/GpBiCgTest.cs
  12. 56
      src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/MlkBiCgStabTest.cs
  13. 56
      src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/TFQMRTest.cs
  14. 57
      src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/BiCgStabTest.cs
  15. 55
      src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/GpBiCgTest.cs
  16. 56
      src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/MlkBiCgStabTest.cs
  17. 56
      src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/TFQMRTest.cs
  18. 57
      src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/BiCgStabTest.cs
  19. 55
      src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/GpBiCgTest.cs
  20. 56
      src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/MlkBiCgStabTest.cs
  21. 56
      src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/TFQMRTest.cs

2
src/Examples/LinearAlgebra/IterativeSolvers/BiCgStabSolver.cs

@ -105,7 +105,7 @@ namespace Examples.LinearAlgebra.IterativeSolversExamples
var residualStopCriterium = new ResidualStopCriterium(1e-10); var residualStopCriterium = new ResidualStopCriterium(1e-10);
// Create monitor with defined stop criteriums // Create monitor with defined stop criteriums
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] { iterationCountStopCriterium, residualStopCriterium }); var monitor = new Iterator<double>(iterationCountStopCriterium, residualStopCriterium);
// Create Bi-Conjugate Gradient Stabilized solver // Create Bi-Conjugate Gradient Stabilized solver
var solver = new BiCgStab(); var solver = new BiCgStab();

2
src/Examples/LinearAlgebra/IterativeSolvers/CompositeSolverExample.cs

@ -104,7 +104,7 @@ namespace Examples.LinearAlgebra.IterativeSolversExamples
var residualStopCriterium = new ResidualStopCriterium(1e-10); var residualStopCriterium = new ResidualStopCriterium(1e-10);
// Create monitor with defined stop criteriums // Create monitor with defined stop criteriums
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] { iterationCountStopCriterium, residualStopCriterium }); var monitor = new Iterator<double>(iterationCountStopCriterium, residualStopCriterium);
// Load all suitable solvers from current assembly. Below in this example, there is user-defined solver // Load all suitable solvers from current assembly. Below in this example, there is user-defined solver
// "class UserBiCgStab : IIterativeSolverSetup<double>" which uses regular BiCgStab solver. But user may create any other solver // "class UserBiCgStab : IIterativeSolverSetup<double>" which uses regular BiCgStab solver. But user may create any other solver

2
src/Examples/LinearAlgebra/IterativeSolvers/GpBiCgSolver.cs

@ -103,7 +103,7 @@ namespace Examples.LinearAlgebra.IterativeSolversExamples
var residualStopCriterium = new ResidualStopCriterium(1e-10); var residualStopCriterium = new ResidualStopCriterium(1e-10);
// Create monitor with defined stop criteriums // Create monitor with defined stop criteriums
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] { iterationCountStopCriterium, residualStopCriterium }); var monitor = new Iterator<double>(iterationCountStopCriterium, residualStopCriterium);
// Create Generalized Product Bi-Conjugate Gradient solver // Create Generalized Product Bi-Conjugate Gradient solver
var solver = new GpBiCg(); var solver = new GpBiCg();

2
src/Examples/LinearAlgebra/IterativeSolvers/MlkBiCgStabSolver.cs

@ -104,7 +104,7 @@ namespace Examples.LinearAlgebra.IterativeSolversExamples
var residualStopCriterium = new ResidualStopCriterium(1e-10); var residualStopCriterium = new ResidualStopCriterium(1e-10);
// Create monitor with defined stop criteriums // Create monitor with defined stop criteriums
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] { iterationCountStopCriterium, residualStopCriterium }); var monitor = new Iterator<double>(iterationCountStopCriterium, residualStopCriterium);
// Create Multiple-Lanczos Bi-Conjugate Gradient Stabilized solver // Create Multiple-Lanczos Bi-Conjugate Gradient Stabilized solver
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();

2
src/Examples/LinearAlgebra/IterativeSolvers/TFQMRSolver.cs

@ -104,7 +104,7 @@ namespace Examples.LinearAlgebra.IterativeSolversExamples
var residualStopCriterium = new ResidualStopCriterium(1e-10); var residualStopCriterium = new ResidualStopCriterium(1e-10);
// Create monitor with defined stop criteriums // Create monitor with defined stop criteriums
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] { iterationCountStopCriterium, residualStopCriterium }); var monitor = new Iterator<double>(iterationCountStopCriterium, residualStopCriterium);
// Create Transpose Free Quasi-Minimal Residual solver // Create Transpose Free Quasi-Minimal Residual solver
var solver = new TFQMR(); var solver = new TFQMR();

55
src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/BiCgStabTest.cs

@ -94,13 +94,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var y = DenseVector.Create(matrix.RowCount, i => Complex.One); var y = DenseVector.Create(matrix.RowCount, i => Complex.One);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(
{ new IterationCountStopCriterium<Complex>(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new BiCgStab(); var solver = new BiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -139,13 +138,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var y = DenseVector.Create(matrix.RowCount, i => Complex.One); var y = DenseVector.Create(matrix.RowCount, i => Complex.One);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(new IterationCountStopCriterium<Complex>(MaximumIterations),
{ new ResidualStopCriterium(ConvergenceBoundary),
new IterationCountStopCriterium<Complex>(MaximumIterations), new DivergenceStopCriterium(),
new ResidualStopCriterium(ConvergenceBoundary), new FailureStopCriterium());
new DivergenceStopCriterium(),
new FailureStopCriterium()
});
var solver = new BiCgStab(); var solver = new BiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -217,13 +214,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var y = DenseVector.Create(matrix.RowCount, i => Complex.One); var y = DenseVector.Create(matrix.RowCount, i => Complex.One);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(new IterationCountStopCriterium<Complex>(MaximumIterations),
{ new ResidualStopCriterium(ConvergenceBoundary),
new IterationCountStopCriterium<Complex>(MaximumIterations), new DivergenceStopCriterium(),
new ResidualStopCriterium(ConvergenceBoundary), new FailureStopCriterium());
new DivergenceStopCriterium(),
new FailureStopCriterium()
});
var solver = new BiCgStab(); var solver = new BiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -258,11 +253,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var vectorb = MatrixLoader.GenerateRandomDenseVector(order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(
{ new IterationCountStopCriterium<Complex>(1000),
new IterationCountStopCriterium<Complex>(1000), new ResidualStopCriterium(1e-10));
new ResidualStopCriterium(1e-10),
});
var solver = new BiCgStab(); var solver = new BiCgStab();
var resultx = matrixA.SolveIterative(vectorb, solver, monitor); var resultx = matrixA.SolveIterative(vectorb, solver, monitor);
@ -290,11 +284,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(
{ new IterationCountStopCriterium<Complex>(1000),
new IterationCountStopCriterium<Complex>(1000), new ResidualStopCriterium(1e-10));
new ResidualStopCriterium(1e-10),
});
var solver = new BiCgStab(); var solver = new BiCgStab();
var matrixX = matrixA.SolveIterative(matrixB, solver, monitor); var matrixX = matrixA.SolveIterative(matrixB, solver, monitor);

55
src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/GpBiCgTest.cs

@ -94,13 +94,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(
{ new IterationCountStopCriterium<Complex>(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new GpBiCg(); var solver = new GpBiCg();
// Solve equation Ax = y // Solve equation Ax = y
@ -139,13 +138,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(
{ new IterationCountStopCriterium<Complex>(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new GpBiCg(); var solver = new GpBiCg();
@ -218,13 +215,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(
{ new IterationCountStopCriterium<Complex>(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new GpBiCg(); var solver = new GpBiCg();
@ -260,11 +255,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var vectorb = MatrixLoader.GenerateRandomDenseVector(order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(
{ new IterationCountStopCriterium<Complex>(1000),
new IterationCountStopCriterium<Complex>(1000), new ResidualStopCriterium(1e-10));
new ResidualStopCriterium(1e-10),
});
var solver = new GpBiCg(); var solver = new GpBiCg();
var resultx = matrixA.SolveIterative(vectorb, solver, monitor); var resultx = matrixA.SolveIterative(vectorb, solver, monitor);
@ -292,11 +286,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(
{ new IterationCountStopCriterium<Complex>(1000),
new IterationCountStopCriterium<Complex>(1000), new ResidualStopCriterium(1e-10));
new ResidualStopCriterium(1e-10),
});
var solver = new GpBiCg(); var solver = new GpBiCg();
var matrixX = matrixA.SolveIterative(matrixB, solver, monitor); var matrixX = matrixA.SolveIterative(matrixB, solver, monitor);

56
src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/MlkBiCgStabTest.cs

@ -94,13 +94,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(
{ new IterationCountStopCriterium<Complex>(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
@ -140,13 +138,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(
{ new IterationCountStopCriterium<Complex>(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -218,13 +215,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(
{ new IterationCountStopCriterium<Complex>(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -259,11 +255,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var vectorb = MatrixLoader.GenerateRandomDenseVector(order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(
{ new IterationCountStopCriterium<Complex>(1000),
new IterationCountStopCriterium<Complex>(1000), new ResidualStopCriterium(1e-10));
new ResidualStopCriterium(1e-10),
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
var resultx = matrixA.SolveIterative(vectorb, solver, monitor); var resultx = matrixA.SolveIterative(vectorb, solver, monitor);
@ -291,11 +286,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(
{ new IterationCountStopCriterium<Complex>(1000),
new IterationCountStopCriterium<Complex>(1000), new ResidualStopCriterium(1e-10));
new ResidualStopCriterium(1e-10),
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
var matrixX = matrixA.SolveIterative(matrixB, solver, monitor); var matrixX = matrixA.SolveIterative(matrixB, solver, monitor);

56
src/UnitTests/LinearAlgebraTests/Complex/Solvers/Iterative/TFQMRTest.cs

@ -94,13 +94,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(
{ new IterationCountStopCriterium<Complex>(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new TFQMR(); var solver = new TFQMR();
@ -140,13 +138,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(
{ new IterationCountStopCriterium<Complex>(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new TFQMR(); var solver = new TFQMR();
// Solve equation Ax = y // Solve equation Ax = y
@ -218,13 +215,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(
{ new IterationCountStopCriterium<Complex>(MaximumIterations),
new IterationCountStopCriterium<Complex>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new TFQMR(); var solver = new TFQMR();
// Solve equation Ax = y // Solve equation Ax = y
@ -259,11 +255,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var vectorb = MatrixLoader.GenerateRandomDenseVector(order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(
{ new IterationCountStopCriterium<Complex>(1000),
new IterationCountStopCriterium<Complex>(1000), new ResidualStopCriterium(1e-10));
new ResidualStopCriterium(1e-10),
});
var solver = new TFQMR(); var solver = new TFQMR();
var resultx = matrixA.SolveIterative(vectorb, solver, monitor); var resultx = matrixA.SolveIterative(vectorb, solver, monitor);
@ -291,11 +286,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex.Solvers.Iterativ
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator<Complex>(new IIterationStopCriterium<Complex>[] var monitor = new Iterator<Complex>(
{ new IterationCountStopCriterium<Complex>(1000),
new IterationCountStopCriterium<Complex>(1000), new ResidualStopCriterium(1e-10));
new ResidualStopCriterium(1e-10),
});
var solver = new TFQMR(); var solver = new TFQMR();
var matrixX = matrixA.SolveIterative(matrixB, solver, monitor); var matrixX = matrixA.SolveIterative(matrixB, solver, monitor);

57
src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/BiCgStabTest.cs

@ -94,13 +94,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var y = DenseVector.Create(matrix.RowCount, i => Complex32.One); var y = DenseVector.Create(matrix.RowCount, i => Complex32.One);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex32>(new IIterationStopCriterium<Complex32>[] var monitor = new Iterator<Complex32>(
{ new IterationCountStopCriterium<Complex32>(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new BiCgStab(); var solver = new BiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -139,13 +138,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var y = DenseVector.Create(matrix.RowCount, i => Complex32.One); var y = DenseVector.Create(matrix.RowCount, i => Complex32.One);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex32>(new IIterationStopCriterium<Complex32>[] var monitor = new Iterator<Complex32>(
{ new IterationCountStopCriterium<Complex32>(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new BiCgStab(); var solver = new BiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -217,13 +215,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var y = DenseVector.Create(matrix.RowCount, i => Complex32.One); var y = DenseVector.Create(matrix.RowCount, i => Complex32.One);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex32>(new IIterationStopCriterium<Complex32>[] var monitor = new Iterator<Complex32>(
{ new IterationCountStopCriterium<Complex32>(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new BiCgStab(); var solver = new BiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -262,11 +259,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var vectorb = MatrixLoader.GenerateRandomDenseVector(order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator<Complex32>(new IIterationStopCriterium<Complex32>[] var monitor = new Iterator<Complex32>(
{ new IterationCountStopCriterium<Complex32>(1000),
new IterationCountStopCriterium<Complex32>(1000), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)));
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new BiCgStab(); var solver = new BiCgStab();
var resultx = matrixA.SolveIterative(vectorb, solver, monitor); var resultx = matrixA.SolveIterative(vectorb, solver, monitor);
@ -305,11 +301,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator<Complex32>(new IIterationStopCriterium<Complex32>[] var monitor = new Iterator<Complex32>(
{ new IterationCountStopCriterium<Complex32>(1000),
new IterationCountStopCriterium<Complex32>(1000), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)));
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new BiCgStab(); var solver = new BiCgStab();
var matrixX = matrixA.SolveIterative(matrixB, solver, monitor); var matrixX = matrixA.SolveIterative(matrixB, solver, monitor);

46
src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/GpBiCgTest.cs

@ -94,13 +94,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex32>(new IIterationStopCriterium<Complex32>[] var monitor = new Iterator<Complex32>(
{ new IterationCountStopCriterium<Complex32>(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new GpBiCg(); var solver = new GpBiCg();
// Solve equation Ax = y // Solve equation Ax = y
@ -139,13 +138,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex32>(new IIterationStopCriterium<Complex32>[] var monitor = new Iterator<Complex32>(
{ new IterationCountStopCriterium<Complex32>(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new GpBiCg(); var solver = new GpBiCg();
@ -218,13 +215,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex32>(new IIterationStopCriterium<Complex32>[] var monitor = new Iterator<Complex32>(
{ new IterationCountStopCriterium<Complex32>(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new GpBiCg(); var solver = new GpBiCg();
@ -260,11 +255,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var vectorb = MatrixLoader.GenerateRandomDenseVector(order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator<Complex32>(new IIterationStopCriterium<Complex32>[] var monitor = new Iterator<Complex32>(
{ new IterationCountStopCriterium<Complex32>(1000),
new IterationCountStopCriterium<Complex32>(1000), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)));
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)),
});
var solver = new GpBiCg(); var solver = new GpBiCg();
var resultx = matrixA.SolveIterative(vectorb, solver, monitor); var resultx = matrixA.SolveIterative(vectorb, solver, monitor);

56
src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/MlkBiCgStabTest.cs

@ -94,13 +94,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex32>(new IIterationStopCriterium<Complex32>[] var monitor = new Iterator<Complex32>(
{ new IterationCountStopCriterium<Complex32>(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
@ -140,13 +138,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex32>(new IIterationStopCriterium<Complex32>[] var monitor = new Iterator<Complex32>(
{ new IterationCountStopCriterium<Complex32>(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -218,13 +215,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex32>(new IIterationStopCriterium<Complex32>[] var monitor = new Iterator<Complex32>(
{ new IterationCountStopCriterium<Complex32>(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -259,11 +255,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var vectorb = MatrixLoader.GenerateRandomDenseVector(order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator<Complex32>(new IIterationStopCriterium<Complex32>[] var monitor = new Iterator<Complex32>(
{ new IterationCountStopCriterium<Complex32>(1000),
new IterationCountStopCriterium<Complex32>(1000), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)));
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
var resultx = matrixA.SolveIterative(vectorb, solver, monitor); var resultx = matrixA.SolveIterative(vectorb, solver, monitor);
@ -302,11 +297,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator<Complex32>(new IIterationStopCriterium<Complex32>[] var monitor = new Iterator<Complex32>(
{ new IterationCountStopCriterium<Complex32>(1000),
new IterationCountStopCriterium<Complex32>(1000), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)));
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
var matrixX = matrixA.SolveIterative(matrixB, solver, monitor); var matrixX = matrixA.SolveIterative(matrixB, solver, monitor);

56
src/UnitTests/LinearAlgebraTests/Complex32/Solvers/Iterative/TFQMRTest.cs

@ -94,13 +94,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex32>(new IIterationStopCriterium<Complex32>[] var monitor = new Iterator<Complex32>(
{ new IterationCountStopCriterium<Complex32>(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new TFQMR(); var solver = new TFQMR();
@ -140,13 +138,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex32>(new IIterationStopCriterium<Complex32>[] var monitor = new Iterator<Complex32>(
{ new IterationCountStopCriterium<Complex32>(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new TFQMR(); var solver = new TFQMR();
// Solve equation Ax = y // Solve equation Ax = y
@ -218,13 +215,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<Complex32>(new IIterationStopCriterium<Complex32>[] var monitor = new Iterator<Complex32>(
{ new IterationCountStopCriterium<Complex32>(MaximumIterations),
new IterationCountStopCriterium<Complex32>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new TFQMR(); var solver = new TFQMR();
// Solve equation Ax = y // Solve equation Ax = y
@ -259,11 +255,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var vectorb = MatrixLoader.GenerateRandomDenseVector(order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator<Complex32>(new IIterationStopCriterium<Complex32>[] var monitor = new Iterator<Complex32>(
{ new IterationCountStopCriterium<Complex32>(1000),
new IterationCountStopCriterium<Complex32>(1000), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)));
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new TFQMR(); var solver = new TFQMR();
var resultx = matrixA.SolveIterative(vectorb, solver, monitor); var resultx = matrixA.SolveIterative(vectorb, solver, monitor);
@ -302,11 +297,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Complex32.Solvers.Iterat
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator<Complex32>(new IIterationStopCriterium<Complex32>[] var monitor = new Iterator<Complex32>(
{ new IterationCountStopCriterium<Complex32>(1000),
new IterationCountStopCriterium<Complex32>(1000), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)));
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new TFQMR(); var solver = new TFQMR();
var matrixX = matrixA.SolveIterative(matrixB, solver, monitor); var matrixX = matrixA.SolveIterative(matrixB, solver, monitor);

57
src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/BiCgStabTest.cs

@ -92,13 +92,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new BiCgStab(); var solver = new BiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -137,13 +136,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new BiCgStab(); var solver = new BiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -215,13 +213,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new BiCgStab(); var solver = new BiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -260,11 +257,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var vectorb = MatrixLoader.GenerateRandomDenseVector(order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(1000),
new IterationCountStopCriterium<double>(1000), new ResidualStopCriterium(1e-10));
new ResidualStopCriterium(1e-10),
});
var solver = new BiCgStab(); var solver = new BiCgStab();
var resultx = matrixA.SolveIterative(vectorb, solver, monitor); var resultx = matrixA.SolveIterative(vectorb, solver, monitor);
@ -291,11 +287,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(1000),
new IterationCountStopCriterium<double>(1000), new ResidualStopCriterium(1e-10));
new ResidualStopCriterium(1e-10)
});
var solver = new BiCgStab(); var solver = new BiCgStab();
var matrixX = matrixA.SolveIterative(matrixB, solver, monitor); var matrixX = matrixA.SolveIterative(matrixB, solver, monitor);

55
src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/GpBiCgTest.cs

@ -92,13 +92,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new GpBiCg(); var solver = new GpBiCg();
// Solve equation Ax = y // Solve equation Ax = y
@ -137,13 +136,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new GpBiCg(); var solver = new GpBiCg();
@ -216,13 +213,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new GpBiCg(); var solver = new GpBiCg();
@ -262,11 +257,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var vectorb = MatrixLoader.GenerateRandomDenseVector(order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(1000),
new IterationCountStopCriterium<double>(1000), new ResidualStopCriterium(1e-10));
new ResidualStopCriterium(1e-10),
});
var solver = new GpBiCg(); var solver = new GpBiCg();
var resultx = matrixA.SolveIterative(vectorb, solver, monitor); var resultx = matrixA.SolveIterative(vectorb, solver, monitor);
@ -293,11 +287,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(1000),
new IterationCountStopCriterium<double>(1000), new ResidualStopCriterium(1e-10));
new ResidualStopCriterium(1e-10)
});
var solver = new GpBiCg(); var solver = new GpBiCg();
var matrixX = matrixA.SolveIterative(matrixB, solver, monitor); var matrixX = matrixA.SolveIterative(matrixB, solver, monitor);

56
src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/MlkBiCgStabTest.cs

@ -92,13 +92,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
@ -138,13 +136,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -216,13 +213,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -261,11 +257,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var vectorb = MatrixLoader.GenerateRandomDenseVector(order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(1000),
new IterationCountStopCriterium<double>(1000), new ResidualStopCriterium(1e-10));
new ResidualStopCriterium(1e-10),
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
var resultx = matrixA.SolveIterative(vectorb, solver, monitor); var resultx = matrixA.SolveIterative(vectorb, solver, monitor);
@ -292,11 +287,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(1000),
new IterationCountStopCriterium<double>(1000), new ResidualStopCriterium(1e-10));
new ResidualStopCriterium(1e-10)
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
var matrixX = matrixA.SolveIterative(matrixB, solver, monitor); var matrixX = matrixA.SolveIterative(matrixB, solver, monitor);

56
src/UnitTests/LinearAlgebraTests/Double/Solvers/Iterative/TFQMRTest.cs

@ -92,13 +92,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new TFQMR(); var solver = new TFQMR();
@ -138,13 +136,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new TFQMR(); var solver = new TFQMR();
// Solve equation Ax = y // Solve equation Ax = y
@ -216,13 +213,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(MaximumIterations),
new IterationCountStopCriterium<double>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new TFQMR(); var solver = new TFQMR();
// Solve equation Ax = y // Solve equation Ax = y
@ -257,11 +253,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var vectorb = MatrixLoader.GenerateRandomDenseVector(order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(1000),
new IterationCountStopCriterium<double>(1000), new ResidualStopCriterium(1e-10));
new ResidualStopCriterium(1e-10),
});
var solver = new TFQMR(); var solver = new TFQMR();
var resultx = matrixA.SolveIterative(vectorb, solver, monitor); var resultx = matrixA.SolveIterative(vectorb, solver, monitor);
@ -288,11 +283,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Double.Solvers.Iterative
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator<double>(new IIterationStopCriterium<double>[] var monitor = new Iterator<double>(
{ new IterationCountStopCriterium<double>(1000),
new IterationCountStopCriterium<double>(1000), new ResidualStopCriterium(1e-10));
new ResidualStopCriterium(1e-10)
});
var solver = new TFQMR(); var solver = new TFQMR();
var matrixX = matrixA.SolveIterative(matrixB, solver, monitor); var matrixX = matrixA.SolveIterative(matrixB, solver, monitor);

57
src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/BiCgStabTest.cs

@ -92,13 +92,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new BiCgStab(); var solver = new BiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -137,13 +136,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new BiCgStab(); var solver = new BiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -215,13 +213,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new BiCgStab(); var solver = new BiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -258,11 +255,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var vectorb = MatrixLoader.GenerateRandomDenseVector(order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)));
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new BiCgStab(); var solver = new BiCgStab();
var resultx = matrixA.SolveIterative(vectorb, solver, monitor); var resultx = matrixA.SolveIterative(vectorb, solver, monitor);
@ -299,11 +295,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)));
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new BiCgStab(); var solver = new BiCgStab();
var matrixX = matrixA.SolveIterative(matrixB, solver, monitor); var matrixX = matrixA.SolveIterative(matrixB, solver, monitor);

55
src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/GpBiCgTest.cs

@ -92,13 +92,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new GpBiCg(); var solver = new GpBiCg();
// Solve equation Ax = y // Solve equation Ax = y
@ -137,13 +136,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new GpBiCg(); var solver = new GpBiCg();
@ -216,13 +213,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new GpBiCg(); var solver = new GpBiCg();
@ -260,11 +255,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var vectorb = MatrixLoader.GenerateRandomDenseVector(order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)));
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new GpBiCg(); var solver = new GpBiCg();
var resultx = matrixA.SolveIterative(vectorb, solver, monitor); var resultx = matrixA.SolveIterative(vectorb, solver, monitor);
@ -301,11 +295,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)));
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new GpBiCg(); var solver = new GpBiCg();
var matrixX = matrixA.SolveIterative(matrixB, solver, monitor); var matrixX = matrixA.SolveIterative(matrixB, solver, monitor);

56
src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/MlkBiCgStabTest.cs

@ -93,13 +93,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
@ -139,13 +137,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -221,13 +218,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
for (var iteration = 0; iteration <= 3; iteration++) for (var iteration = 0; iteration <= 3; iteration++)
{ {
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
// Solve equation Ax = y // Solve equation Ax = y
@ -277,11 +273,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var vectorb = MatrixLoader.GenerateRandomDenseVector(order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)));
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
var resultx = matrixA.SolveIterative(vectorb, solver, monitor); var resultx = matrixA.SolveIterative(vectorb, solver, monitor);
@ -320,11 +315,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)));
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new MlkBiCgStab(); var solver = new MlkBiCgStab();
var matrixX = matrixA.SolveIterative(matrixB, solver, monitor); var matrixX = matrixA.SolveIterative(matrixB, solver, monitor);

56
src/UnitTests/LinearAlgebraTests/Single/Solvers/Iterative/TFQMRTest.cs

@ -92,13 +92,11 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new TFQMR(); var solver = new TFQMR();
@ -138,13 +136,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new TFQMR(); var solver = new TFQMR();
// Solve equation Ax = y // Solve equation Ax = y
@ -216,13 +213,12 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var y = DenseVector.Create(matrix.RowCount, i => 1); var y = DenseVector.Create(matrix.RowCount, i => 1);
// Create an iteration monitor which will keep track of iterative convergence // Create an iteration monitor which will keep track of iterative convergence
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium(ConvergenceBoundary),
new ResidualStopCriterium(ConvergenceBoundary), new DivergenceStopCriterium(),
new DivergenceStopCriterium(), new FailureStopCriterium());
new FailureStopCriterium()
});
var solver = new TFQMR(); var solver = new TFQMR();
// Solve equation Ax = y // Solve equation Ax = y
@ -259,11 +255,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var vectorb = MatrixLoader.GenerateRandomDenseVector(order); var vectorb = MatrixLoader.GenerateRandomDenseVector(order);
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)));
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new TFQMR(); var solver = new TFQMR();
var resultx = matrixA.SolveIterative(vectorb, solver, monitor); var resultx = matrixA.SolveIterative(vectorb, solver, monitor);
@ -300,11 +295,10 @@ namespace MathNet.Numerics.UnitTests.LinearAlgebraTests.Single.Solvers.Iterative
var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixA = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order); var matrixB = MatrixLoader.GenerateRandomDenseMatrix(order, order);
var monitor = new Iterator<float>(new IIterationStopCriterium<float>[] var monitor = new Iterator<float>(
{ new IterationCountStopCriterium<float>(MaximumIterations),
new IterationCountStopCriterium<float>(MaximumIterations), new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration)));
new ResidualStopCriterium((float) Math.Pow(1.0/10.0, iteration))
});
var solver = new TFQMR(); var solver = new TFQMR();
var matrixX = matrixA.SolveIterative(matrixB, solver, monitor); var matrixX = matrixA.SolveIterative(matrixB, solver, monitor);

Loading…
Cancel
Save