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)); }
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)); }
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); }
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); }
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); }
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); }
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); }