Умножение матрицы на число – операция результатом которой является матрица такой же размерности, что и исходная, каждый элемент результирующей матрицы является произведением соответствующего элемента исходной матрицы на заданное число.
Описание алгоритма
Произведением матрицы M на число k называется матрица R = k · M того же размера, полученная из исходной умножением на заданное число всех ее элементов: Ri,j = k · Mi,j
Реализация алгоритма
using System;
// класс с методами расширения
static class MatrixExt
{
// метод расширения для получения количества строк матрицы
public static int RowsCount(this double[,] matrix)
{
return matrix.GetUpperBound(0) + 1;
}
// метод расширения для получения количества столбцов матрицы
public static int ColumnsCount(this double[,] matrix)
{
return matrix.GetUpperBound(1) + 1;
}
// метод для печати матрицы в консоль
public static void PrintMatrix(this double[,] matrix)
{
for (var i = 0; i < matrix.RowsCount(); i++)
{
for (var j = 0; j < matrix.ColumnsCount(); j++)
{
Console.Write(matrix[i, j].ToString().PadLeft(4));
}
Console.WriteLine();
}
}
}
class Program
{
// метод для получения матрицы из консоли
static double[,] GetMatrixFromConsole(string name)
{
Console.Write("Количество строк матрицы {0}: ", name);
var n = int.Parse(Console.ReadLine());
Console.Write("Количество столбцов матрицы {0}: ", name);
var m = int.Parse(Console.ReadLine());
var matrix = new double[n, m];
for (var i = 0; i < n; i++)
{
for (var j = 0; j < m; j++)
{
Console.Write("{0}[{1},{2}] = ", name, i, j);
matrix[i, j] = double.Parse(Console.ReadLine());
}
}
return matrix;
}
// метод для умножения матрицы на число
static double[,] ScalarMatrixMultiplication(double[,] inputMartix, double k)
{
var resultMatrix = new double[inputMartix.RowsCount(), inputMartix.ColumnsCount()];
for (var i = 0; i < inputMartix.RowsCount(); i++)
{
for (var j = 0; j < inputMartix.ColumnsCount(); j++)
{
resultMatrix[i, j] = inputMartix[i, j] * k;
}
}
return resultMatrix;
}
static void Main(string[] args)
{
Console.WriteLine("Программа для умножения матрицы на число");
var m = GetMatrixFromConsole("M");
Console.Write("k = ");
var k = Convert.ToDouble(Console.ReadLine());
Console.WriteLine("Матрица M:");
m.PrintMatrix();
Console.WriteLine("k = {0}", k);
var result = ScalarMatrixMultiplication(m, k);
Console.WriteLine("Произведение матрицы M на число k:");
result.PrintMatrix();
Console.ReadLine();
}
}