コード例 #1
0
ファイル: Matrix.cs プロジェクト: softdevops-11/Mik
        public Vector MultiplyByVector(Vector vector)
        {
            if (vector.GetSize() != GetColumnsCount())
            {
                throw new ArgumentException("Умножение невозможно, размерность вектора не равна количеству столбцов матрицы, сейчас равна: "
                                            + vector.GetSize() + ", а количество столбцов матрицы равно: " + GetColumnsCount(), nameof(vector));
            }

            Vector result = new Vector(GetRowsCount());

            for (int i = 0; i < GetRowsCount(); i++)
            {
                result.SetElement(i, Vector.GetScalarMultiplication(rows[i], vector));
            }

            return(result);
        }
コード例 #2
0
        //Задание вектора по индексу
        public void SetRow(int index, Vector vector)
        {
            if (index <= 0 || index >= rows.Length)
            {
                throw new IndexOutOfRangeException("Index beyound vector boundary or vector length <= 0");
            }

            if (vector.GetSize() != GetColumnsCount())
            {
                throw new ArgumentException("Vector must be equal to the length of the string in the matrix");
            }
            rows[index] = new Vector(vector);
        }
コード例 #3
0
        public void SetRow(int index, Vector userVector)
        {
            if (index < 0 || index >= GetRowsAmount())
            {
                throw new IndexOutOfRangeException("Вектора-строки с таким индексом нет");
            }

            if (userVector.GetSize() != GetColumnsAmount())
            {
                throw new ArgumentOutOfRangeException("Размер вектора-строки должен совпадать с размером матрицы");
            }

            vectorsArray[index] = new Vector(userVector);
        }
コード例 #4
0
        public void SetRow(int index, Vector vector)
        {
            if (index < 0 || index >= GetRowsCount())
            {
                throw new IndexOutOfRangeException("Нет строки под таким индексом");
            }

            if (vector.GetSize() != GetColumnsCount())
            {
                throw new ArgumentException("размерность вектора должна совпадать с размерностью векторов в матрице");
            }

            rows[index] = new Vector(vector);
        }
コード例 #5
0
        public Vector MatrixOnVectorMultiplication(Vector vector)
        {
            if (GetColumnsCount() != vector.GetSize())
            {
                throw new ArgumentException("Vector must be <= columns count", nameof(vector));
            }

            double[] value = new double[GetRowsCount()];
            for (int i = 0; i < GetRowsCount(); i++)
            {
                value[i] = Vector.ScalarMultiplication(vector, Rows[i]);
            }
            return(new Vector(value));
        }
コード例 #6
0
        public void SetRow(int index, Vector vector)
        {
            if ((index < 0) || (index >= GetRowsCount()))
            {
                throw new IndexOutOfRangeException("Index must be >= 0 and <= rows count");
            }

            if (GetColumnsCount() != vector.GetSize())
            {
                throw new ArgumentException("Vector size must be <= columns count", nameof(vector));
            }

            Rows[index] = new Vector(vector);
        }
コード例 #7
0
        public Vector MultiplicationByColumnVector(Vector userVector)
        {
            if (GetColumnsAmount() != userVector.GetSize())
            {
                throw new ArgumentOutOfRangeException("Число сталбцов в матрице должно совпадать с числом строк в вектор-столбце");
            }

            double[] arrayVector = new double[GetRowsAmount()];
            for (int i = 0; i < GetRowsAmount(); i++)
            {
                arrayVector[i] = Vector.GetScalarMultiplication(GetRow(i), userVector);
            }

            return(new Vector(arrayVector));
        }
コード例 #8
0
        //Умножение матрицы на вектор
        public Vector GetMultiplied(Vector vector)
        {
            if (vector.GetSize() != GetColumnsCount())
            {
                throw new ArgumentException("Multiplied by vector can't calculated");
            }

            Vector row = new Vector(GetRowsCount());

            for (int i = 0; i < GetRowsCount(); ++i)
            {
                double result = Vector.GetVectorMultipliedByAnotherVector(rows[i], vector);
                row.SetComponent(i, result);
            }
            return(row);
        }
コード例 #9
0
        public Vector MultiplyByVector(Vector vector)
        {
            if (GetColumnsCount() != vector.GetSize())
            {
                throw new ArgumentException("Количество столбцов матрицы должно совпадать с количеством компонентов вектора!");
            }

            double[] resultComponents = new double[GetRowsCount()];

            for (int i = 0; i < GetRowsCount(); i++)
            {
                resultComponents[i] = Vector.GetScalarMultiplication(rows[i], vector);
            }

            return(new Vector(resultComponents));
        }