public void AlgorithmDiag() { _matrix = new double[3, 3] { { 2, 0, 0 }, { 0, 2, 0 }, { 1, 0, 2 } }; IVector resultActual = new Vector(new double[] { 1, 1, 1 }); DenseMatrix denseMatrix = DenseMatrixGen.DiagonalMatrix(3);// new DenseMatrix(_matrix); Vector x0 = new Vector(new double[] { 0, 0, 0 }); IVector b = denseMatrix.Multiply(resultActual); var result = loggingSolver.Solve(denseMatrix, x0, b); foreach (var elem in result) { _testOutputHelper.WriteLine(elem.ToString()); } for (int i = 0; i < resultActual.Size; i++) { Assert.Equal(result[i], resultActual[i], 8); } }
public void SingularMatrix() { IVector resultActual = new Vector(new double[] { 1, 1, 1 }); DenseMatrix denseMatrix = DenseMatrixGen.SingularMatrix(3); Vector x0 = new Vector(new double[] { 0, 0, 0 }); IVector b = denseMatrix.Multiply(resultActual); var result = loggingSolver.Solve(denseMatrix, x0, b); foreach (var elem in result) { _testOutputHelper.WriteLine(elem.ToString()); } Assert.NotEmpty(result); }
public void FactorizeDiagMatrix(FactorizersEnum factorizers) { //_matrix = new double[3, 3] { { 3, 0, 2 }, // симметричная // { 0, 5, 0 }, // { 2, 0, 3 } }; IVector resultActual = new Vector(new double[] { 1, 1, 1, 1, 1 }); DenseMatrix denseMatrix = DenseMatrixGen.DiagonalMatrix(5);// new DenseMatrix(_matrix); Vector x0 = new Vector(new double[] { 0, 0, 0, 0, 0 }); IVector b = denseMatrix.Multiply(resultActual); var result = loggingSolver.Solve(denseMatrix, x0, b, Factorizer: FactorizersFactory.SpawnFactorization(factorizers, denseMatrix.ConvertToCoordinationalMatrix())); for (int i = 0; i < 5; i++) { _testOutputHelper.WriteLine( denseMatrix[i, 0].ToString() + " " + denseMatrix[i, 1].ToString() + " " + denseMatrix[i, 2].ToString() + " " + denseMatrix[i, 3].ToString() + " " + denseMatrix[i, 4].ToString()); } _testOutputHelper.WriteLine(""); foreach (var elem in result) { _testOutputHelper.WriteLine(elem.ToString()); } for (int i = 0; i < resultActual.Size; i++) { Assert.Equal(result[i], resultActual[i], 8); } }