public Vector GetColumn(int columnNumber) { Vector column = new Vector(RowsNumber); for (int i = 0; i < RowsNumber; i++) { column.SetComponent(i, rows[i].GetComponent(columnNumber)); } return(column); }
//Умножение матрицы на вектор 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); }
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 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); }