Множення матриці на число

Множення матриці на число – операція результатом якої є матриця такої ж розмірності, як і вхідна, кожен елемент результуючої матриці є добутком відповідного елемента вхідної матриці на задане число.

Опис алгоритму

Множенням матриці 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();
    }
}

Дивіться також: