Определить, является ли произведение матриц перестановочным - C#
Формулировка задачи:
Заданы две матрицы А(3, 3) и В(3, 3). Написать программу проверки - является ли произведение этих матриц перестановочным, т.е. проверить равенство AB = ВА. Помогите пожалуйста.
Решение задачи: «Определить, является ли произведение матриц перестановочным»
textual
Листинг программы
using System;
namespace ConsoleApplication3
{
class Program
{
static double[,] MatrixMultiplication(double[,] firstMatrix, double[,] secondMatrix)
{
if (firstMatrix.GetLength(1) != secondMatrix.GetLength(0))
throw new Exception();
double[,] result = new double[firstMatrix.GetLength(0), secondMatrix.GetLength(1)];
for (int i = 0; i < firstMatrix.GetLength(0); i++)
for (int j = 0; j < secondMatrix.GetLength(1); j++)
for (int k = 0; k < secondMatrix.GetLength(0); k++)
result[i, j] += firstMatrix[i, k] * secondMatrix[k, j];
return result;
}
static bool CheckEqual(double[,] firstMatrix, double[,] secondMatrix)
{
for (int i = 0; i < firstMatrix.GetLength(0); i++)
for (int j = 0; j < secondMatrix.GetLength(1); j++)
if (firstMatrix[i, j] != secondMatrix[i, j])
return false;
return true;
}
static void Main(string[] args)
{
double[,] firstMatrix = new double[3, 3] { { 1, 1, 1 }, { 2, 2, 2 }, { 1, 1, 1 } };
double[,] secondMatrix = new double[3, 3] { { 1, 1, 1 }, { 2, 2, 2 }, { 1, 1, 1 } };
try
{
if (CheckEqual(MatrixMultiplication(firstMatrix, secondMatrix), MatrixMultiplication(secondMatrix, firstMatrix)))
Console.WriteLine("AB = BA");
else
Console.WriteLine("AB != BA");
}
catch(Exception)
{
Console.WriteLine("Матрицы не могут быть умноженными.");
}
Console.ReadKey();
}
}
}