예제 #1
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));
        }
예제 #2
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));
        }
예제 #3
0
파일: Matrix.cs 프로젝트: ug114/JGilyazova
        public Vector MultiplyByVector(Vector vector)
        {
            if (ColumnsNumber != vector.Length)
            {
                throw new ArgumentException("Количество столбцов матрицы должно быть равно размерности вектора.");
            }

            Vector outputVector = new Vector(RowsNumber);

            for (int i = 0; i < RowsNumber; i++)
            {
                double sum = Vector.GetScalarMultiplication(rows[i], vector);
                outputVector.SetComponent(i, sum);
            }

            return(outputVector);
        }
예제 #4
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);
        }
예제 #5
0
파일: Matrix.cs 프로젝트: ug114/JGilyazova
        public static Matrix GetMultiplication(Matrix matrix1, Matrix matrix2)
        {
            if (matrix1.ColumnsNumber != matrix2.RowsNumber)
            {
                throw new ArgumentException("Количество столбцов первой матрицы должно быть равно количеству строк второй матрицы.");
            }

            Matrix outputMatrix = new Matrix(matrix1.RowsNumber, matrix2.ColumnsNumber);

            for (int i = 0; i < matrix1.RowsNumber; i++)
            {
                for (int j = 0; j < matrix2.ColumnsNumber; j++)
                {
                    double sum = Vector.GetScalarMultiplication(matrix1.rows[i], matrix2.GetColumn(j));
                    outputMatrix.rows[i].SetComponent(j, sum);
                }
            }

            return(outputMatrix);
        }
예제 #6
0
        public static Matrix GetMultiplication(Matrix firstMatrix, Matrix secondMatrix)
        {
            if (firstMatrix.GetColumnsAmount() != secondMatrix.GetRowsAmount())
            {
                throw new ArgumentOutOfRangeException("Первая матрица должна иметь столько же столбцов сколько строк во второй");
            }

            Matrix result = new Matrix(firstMatrix.GetRowsAmount(), secondMatrix.GetColumnsAmount());

            for (int i = 0; i < firstMatrix.GetRowsAmount(); i++)
            {
                double[] arrayVector = new double[secondMatrix.GetColumnsAmount()];
                for (int j = 0; j < secondMatrix.GetColumnsAmount(); j++)
                {
                    arrayVector[j] = Vector.GetScalarMultiplication(firstMatrix.GetRow(i), secondMatrix.GetColumn(j));;
                }
                result.vectorsArray[i] = new Vector(arrayVector);
            }

            return(result);
        }
예제 #7
0
        public static Matrix Multiply(Matrix matrix1, Matrix matrix2)
        {
            if (matrix1.GetColumnsCount() != matrix2.GetRowsCount())
            {
                throw new ArgumentException("Количество столбцов первой матрицы должно совпадать с количеством строк второй матрицы!");
            }

            Matrix newMatrix = new Matrix(matrix1.GetRowsCount(), matrix2.GetColumnsCount());

            for (int i = 0; i < matrix1.GetRowsCount(); i++)
            {
                Vector vector = new Vector(matrix2.GetColumnsCount());
                for (int j = 0; j < matrix2.GetColumnsCount(); j++)
                {
                    vector.SetComponent(j, Vector.GetScalarMultiplication(matrix1.rows[i], matrix2.GetColumn(j)));
                }
                newMatrix.rows[i] = new Vector(vector);
            }

            return(newMatrix);
        }