예제 #1
0
        public void MakeEchelonMatrixVectorTest()
        {
            //Arrange
            _matrixFileReader = new StubIMyMatrixFileReader
            {
                ReadIntMatrix = () => new[, ]
                {
                    { -1, 2, 1 },
                    { 1, -3, -2 },
                    { 3, -1, -1 }
                }
            };

            int[] vector = new[]
            {
                -1, -1, 4
            };
            var matrix = new MyMatrix <int>(_matrixFileReader);

            int[] expectedResult = { -1, -2, -9 };

            //Act
            var result = matrix.MakeRowEchelonMatrix(vector);

            //Assert
            CollectionAssert.AreEqual(expectedResult, result);
        }
예제 #2
0
        public void GaussWithFullChoiceTest()
        {
            //Arrange
            _matrixFileReader = new StubIMyMatrixFileReader
            {
                ReadDoubleMatrix = () => new[, ]
                {
                    { 4d, -2d, 4d, -2d },
                    { 3d, 1d, 4d, 2d },
                    { 2d, 4d, 2d, 1d },
                    { 2d, -2d, 4d, 2d }
                }
            };

            double[] vector = new[]
            {
                8d, 7d, 10d, 2d
            };
            var matrix = new MyMatrix <double>(_matrixFileReader);

            double[] expectedResult = { -1d, 2d, 3d, -2d };

            //Act
            var result = matrix.GaussWithFullChoice(vector);

            //Assert
            for (var j = 0; j < result.Length; j++)
            {
                Assert.AreEqual(result[j], expectedResult[j], 1e15);
            }
        }
예제 #3
0
        public void SwapColumnTest()
        {
            //Arrange
            _matrixFileReader = new StubIMyMatrixFileReader
            {
                ReadDoubleMatrix = () => new[, ]
                {
                    { 0.3, 0.6, 0.6, 0.1 },
                    { 0.4, 0.4, 0.2, 0.6 },
                    { 0.3, 0.2, 0.3, 0.2 }
                }
            };
            int[] vector = new[]
            {
                3, 8, 3
            };
            const int numberOfFirstColumn  = 0;
            const int numberOfSecondColumn = 2;
            var       matrix = new MyMatrix <double>(_matrixFileReader);

            //Act
            matrix.SwapColumns(numberOfFirstColumn, numberOfSecondColumn, vector);

            //Assert
            CollectionAssert.AreEqual(new[, ]
            {
                { 0.6, 0.6, 0.3, 0.1 },
                { 0.2, 0.4, 0.4, 0.6 },
                { 0.3, 0.2, 0.3, 0.2 }
            }, matrix.Matrix);
        }
예제 #4
0
        public void MakeEchelonMatrixMatrixTest()
        {
            //Arrange
            _matrixFileReader = new StubIMyMatrixFileReader
            {
                ReadIntMatrix = () => new[, ]
                {
                    { -1, 2, 1 },
                    { 1, -3, -2 },
                    { 3, -1, -1 }
                }
            };

            int[] vector = new[]
            {
                -1, -1, 4
            };
            var matrix = new MyMatrix <int>(_matrixFileReader);

            //Act
            matrix.MakeRowEchelonMatrix(vector);

            //Assert
            CollectionAssert.AreEqual(new[, ]
            {
                { -1, 2, 1 },
                { 0, -1, -1 },
                { 0, 0, -3 }
            }, matrix.Matrix);
        }
예제 #5
0
        public void SwapRowsTest()
        {
            //Arrange
            _matrixFileReader = new StubIMyMatrixFileReader
            {
                ReadDoubleMatrix = () => new[, ]
                {
                    { 0.3, 0.6, 0.6, 0.1 },
                    { 0.4, 0.4, 0.2, 0.6 },
                    { 0.3, 0.2, 0.3, 0.2 }
                }
            };
            var matrixValues = _matrixFileReader.ReadDoubleMatrix();
            var vector       = new[]
            {
                0.3, 0.8, 0.4
            };
            const int numberOfFirstRow  = 0;
            const int numberOfSecondRow = 2;
            var       matrix            = new MyMatrix <double>(matrixValues);

            //Act
            matrix.SwapRows(numberOfFirstRow, numberOfSecondRow, vector);

            //Assert
            CollectionAssert.AreEqual(new[, ]
            {
                { 0.3, 0.2, 0.3, 0.2 },
                { 0.4, 0.4, 0.2, 0.6 },
                { 0.3, 0.6, 0.6, 0.1 }
            }, matrix.Matrix);
        }
예제 #6
0
 public MyMatrix(IMyMatrixFileReader matrixReader)
 {
     if (typeof(T) == typeof(int))
     {
         Matrix        = (dynamic)matrixReader.ReadIntMatrix().Clone();
         DefaultMatrix = (dynamic)matrixReader.ReadIntMatrix().Clone();
     }
     else if (typeof(T) == typeof(double))
     {
         Matrix        = (dynamic)matrixReader.ReadDoubleMatrix().Clone();
         DefaultMatrix = (dynamic)matrixReader.ReadDoubleMatrix().Clone();
     }
 }
예제 #7
0
 public void SetUp()
 {
     _matrixFileReader = new StubIMyMatrixFileReader
     {
         ReadIntMatrix = () => new[, ]
         {
             { 1, 1, 1 },
             { 2, 2, 2 },
             { 3, 3, 3 }
         },
         ReadDoubleMatrix = () => new[, ]
         {
             { 4d, -2d, 4d, -2d },
             { 3d, 1d, 4d, 2d },
             { 2d, 4d, 2d, 1d },
             { 2d, -2d, 4d, 2d }
         }
     };
 }
예제 #8
0
        public void GreatestDoubleNumberInMatrixColumnTest()
        {
            //Arrange
            _matrixFileReader = new StubIMyMatrixFileReader
            {
                ReadDoubleMatrix = () => new[, ]
                {
                    { 1.0, 1.5, 1.2 },
                    { 2.0, 5.3, 2.2 },
                    { 3.1, 3.1, 41.23 }
                }
            };
            const int expectedRowNumber = 2;

            //Act
            var result = new MyMatrix <double>(_matrixFileReader).FindRowAndColumnWithMaxElementInMatrix(0).column;

            //Assert
            Assert.AreEqual(expectedRowNumber, result);
        }
예제 #9
0
        public void GreatestDoubleNumberInRowTest()
        {
            //Arrange
            _matrixFileReader = new StubIMyMatrixFileReader
            {
                ReadDoubleMatrix = () => new[, ]
                {
                    { 1.0, 1.5, 1.2 },
                    { 2.0, 5.3, 2.2 },
                    { 3.1, 3.1, 41.23 }
                }
            };
            const int expectedColumnNumber = 2;

            //Act
            var result = new MyMatrix <double>(_matrixFileReader).FindRowWithMaxNumberInColumnUnderDiagonal(2);

            //Assert
            Assert.AreEqual(expectedColumnNumber, result);
        }
예제 #10
0
        public void GreatestIntNumberInRowIntTest()
        {
            //Arrange
            _matrixFileReader = new StubIMyMatrixFileReader
            {
                ReadIntMatrix = () => new[, ]
                {
                    { 1, 1, 1 },
                    { 2, 5, 2 },
                    { 3, 3, 4 }
                }
            };
            const int expectedRowNumber = 2;

            //Act
            var result = new MyMatrix <int>(_matrixFileReader).FindRowWithMaxNumberInColumnUnderDiagonal(0);

            //Assert
            Assert.AreEqual(expectedRowNumber, result);
        }
예제 #11
0
        public void GreatestIntNumberInMatrixColumnTest()
        {
            //Arrange
            _matrixFileReader = new StubIMyMatrixFileReader
            {
                ReadIntMatrix = () => new[, ]
                {
                    { 1, 1, 1 },
                    { 2, 5, 2 },
                    { 3, 3, 4 }
                }
            };
            const int expectedRowNumber = 1;

            //Act

            var result = new MyMatrix <int>(_matrixFileReader).FindRowAndColumnWithMaxElementInMatrix(0).column;

            //Assert
            Assert.AreEqual(expectedRowNumber, result);
        }
예제 #12
0
        public void CountXVectorTest()
        {
            //Arrange
            _matrixFileReader = new StubIMyMatrixFileReader
            {
                ReadIntMatrix = () => new[, ]
                {
                    { -1, 2, 1 },
                    { 0, -1, -1 },
                    { 0, 0, -3 }
                }
            };
            int[] a = { -1, -2, -9 };

            int[] expectedXVector = { 2, -1, 3 };

            //Act
            var result = new MyMatrix <int>(_matrixFileReader).CountXVector(a);

            //Assert
            CollectionAssert.AreEqual(expectedXVector, result);
        }
예제 #13
0
        public void Subtract_IntValues_ShouldReturnProperMatrix()
        {
            //Arrange
            _matrixFileReader = new StubIMyMatrixFileReader
            {
                ReadIntMatrix = () => new[, ]
                {
                    { 1, 1, 1 },
                    { 2, 5, 2 },
                    { 3, 3, 4 }
                }
            };
            var a = new MyMatrix <int>(_matrixFileReader);

            _matrixFileReader = new StubIMyMatrixFileReader
            {
                ReadIntMatrix = () => new[, ]
                {
                    { 1, 1, 1 },
                    { 3, 1, 0 },
                    { 5, 4, 3 }
                }
            };
            var b = new MyMatrix <int>(_matrixFileReader);

            //Act
            var result = a - b;

            //Assert
            CollectionAssert.AreEqual(result.Matrix, new[, ]
            {
                { 0, 0, 0 },
                { -1, 4, 2 },
                { -2, -1, 1 }
            });
        }