Пример #1
0
        public void SolveSlauTest1()
        {
            // arrange
            double[,] matrix = new double[3, 3] {
                { 4, 2, 2 },
                { 2, 4, 2 },
                { 2, 2, 4 }
            };
            double[] vector1 = new double[3] {
                4, 4, 4
            };

            Matrix m1 = _matrixFactory.CreateMatrix(matrix);
            Vector v1 = _vectorFactory.CreateVector(vector1);

            // act
            ISlauSolver solver = _slauSolverFactory.CreateSlauSolver();
            Vector      result = solver.SolveSlau(m1, v1);


            // assert
            double[] vector2 = new double[3] {
                0.5, 0.5, 0.5
            };
            Vector expected = _vectorFactory.CreateVector(vector2);

            Assert.IsTrue(expected.AreEqual(result));
        }
        private void Initialize(Matrix leftMatrix, Vector resultVector)
        {
            Size = leftMatrix.RowsCount;
            mas  = leftMatrix;
            func = resultVector;
            Xk   = _vectorFactory.CreateVector(Size);
            Rk   = _vectorFactory.CreateVector(Size);

            for (int i = 0; i < Size; i++)
            {
                Xk[i] = 0.2;
            }
        }
Пример #3
0
        /// <summary>
        /// Конвертирует всю матрицу в один большой вектор.
        /// </summary>
        /// <returns>Возвращает всю матрицу как один большой вектор.</returns>
        public Vector ConvertToVector()
        {
            int    k      = 0;
            Vector result = _vectorFactory.CreateVector(RowsCount * ColumnsCount);

            for (int i = 0; i < RowsCount; i++)
            {
                for (int j = 0; j < ColumnsCount; j++)
                {
                    result[k++] = this[i, j];
                }
            }

            return(result);
        }
Пример #4
0
        public Vector Add(Vector a)
        {
            if (Size != a.Size)
            {
                throw new SizesDismatchException($"Error in addition two vectors: their sizes must match." +
                                                 $"Size of left vector: {Size}, size of right vector: {a.Size}.");
            }

            //Vector result = (Vector) Activator.CreateInstance(this.GetType(), Size);
            Vector result = _vectorFactory.CreateVector(Size);

            for (int i = 0; i < Size; i++)
            {
                result[i] = this[i] + a[i];
            }

            return(result);
        }
Пример #5
0
        public void ConvertToVectorTest()
        {
            // arrange
            double[,] matrix = new double[3, 3] {
                { 1, 2, 3 },
                { 4, 5, 6 },
                { 7, 8, 9 }
            };
            Matrix m1 = _matrixFactory.CreateMatrix(matrix);

            // act
            Vector result = m1.ConvertToVector();

            // assert
            double[] vector = new double[9] {
                1, 2, 3, 4, 5, 6, 7, 8, 9
            };
            Vector expected = _vectorFactory.CreateVector(vector);

            Assert.IsTrue(expected.AreEqual(result));
        }
Пример #6
0
        public void SizeTest()
        {
            // arrange
            Vector v1 = _vectorFactory.CreateVector(new List <double> {
                1, 2, 3
            });

            // act
            int result = v1.Size;

            // assert
            int expected = 3;

            Assert.AreEqual(expected, result);
        }