// Java программа для умножения двух квадратов // матрицы.
importjava.io.*;
classGFG {
staticintN = 4;
// Эта функция умножает mat1 [] []
// и mat2 [] [], и сохраняет результат
// в res [] []
staticvoidmultiply(intmat1[][],
intmat2[][], intres[][])
{
inti, j, k;
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
{
res[i][j] = 0;
for(k = 0; k < N; k++)
res[i][j] += mat1[i][k]
* mat2[k][j];
}
}
}
// Код драйвера
publicstaticvoidmain (String[] args)
{
intmat1[][] = { {1, 1, 1, 1},
{2, 2, 2, 2},
{3, 3, 3, 3},
{4, 4, 4, 4}};
intmat2[][] = { {1, 1, 1, 1},
{2, 2, 2, 2},
{3, 3, 3, 3},
{4, 4, 4, 4}};
// Для сохранения результата
intres[][] = newint[N][N] ;
inti, j;
multiply(mat1, mat2, res);
System.out.println("Result matrix"
+ " is ");
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
System.out.print( res[i][j]
+ " ");
System.out.println();
}
}
}
// Этот код предоставлен anuj_67.
Python 3
# 4x4 умножение матриц с использованием Python3 # Определение функции
defmatrix_multiplication(M,N):
# Список для сохранения результата умножения матриц
R =[[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]]
fori inrange(0, 4):
forj inrange(0, 4):
fork inrange(0, 4):
R[i][j] +=M[i][k] *N[k][j]
fori inrange(0,4):
forj inrange(0,4):
# если мы используем print (), по умолчанию курсор перемещается на следующую строку каждый раз,
# Теперь мы можем явно определить конечный символ или последовательность передачи
# второй параметр as end = "<символ или строка>"
#syntax: print (<переменная или значение для печати>, end = "<заканчивается на>")
# Здесь пробел ("") используется для печати пробела после печати
# каждый элемент R
print(R[i][j],end=" ")
print("\n",end="")
# Первая матрица. М это список
M =[[1, 1, 1, 1],
[2, 2, 2, 2],
[3, 3, 3, 3],
[4, 4, 4, 4]]
# Вторая матрица. N это список
N =[[1, 1, 1, 1],
[2, 2, 2, 2],
[3, 3, 3, 3],
[4, 4, 4, 4]]
# Вызов функции matrix_multiplication matrix_multiplication(M,N)
# Этот код предоставлен Santanu
C #
// C # программа для умножения двух квадратов // матрицы.
usingSystem;
classGFG {
staticintN = 4;
// Эта функция умножает mat1 [] []
// и mat2 [] [], и сохраняет результат
// в res [] []
staticvoidmultiply(int[,] mat1,
int[,]mat2, int[,]res)
{
inti, j, k;
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
{
res[i,j] = 0;
for(k = 0; k < N; k++)
res[i,j] += mat1[i,k]
* mat2[k,j];
}
}
}
// Код драйвера
publicstaticvoidMain ()
{
int[,]mat1 = { {1, 1, 1, 1},
{2, 2, 2, 2},
{3, 3, 3, 3},
{4, 4, 4, 4}};
int[,]mat2 = { {1, 1, 1, 1},
{2, 2, 2, 2},
{3, 3, 3, 3},
{4, 4, 4, 4}};
// Для сохранения результата
int[,]res = newint[N,N] ;
inti, j;
multiply(mat1, mat2, res);
Console.WriteLine("Result matrix"
+ " is ");
for(i = 0; i < N; i++)
{
for(j = 0; j < N; j++)
Console.Write( res[i,j]
+ " ");
Console.WriteLine();
}
}
}
// Этот код предоставлен anuj_67.
PHP
<?php // PHP программа для умножения двух // квадратные матрицы.
// Эта функция умножает mat1 [] [] и // mat2 [] [] и сохраняет результат в res [] []
functionmultiply(&$mat1, &$mat2, &$res)
{
$N= 4;
for($i= 0; $i< $N; $i++)
{
for($j= 0; $j< $N; $j++)
{
$res[$i][$j] = 0;
for($k= 0; $k< $N; $k++)
$res[$i][$j] += $mat1[$i][$k] *
$mat2[$k][$j];
}
}
}
// Код драйвера
$mat1= array(array(1, 1, 1, 1),
array(2, 2, 2, 2),
array(3, 3, 3, 3),
array(4, 4, 4, 4));
$mat2= array(array(1, 1, 1, 1),
array(2, 2, 2, 2),
array(3, 3, 3, 3),
array(4, 4, 4, 4));
multiply($mat1, $mat2, $res);
$N= 4;
echo("Result matrix is \n");
for($i= 0; $i< $N; $i++)
{
for($j= 0; $j< $N; $j++)
{
echo($res[$i][$j]);
echo(" ");
}
echo("\n");
}
// Этот код добавлен // от Shivi_Aggarwal ?>
Выход:
Result matrix is
10 10 10 10
20 20 20 20
30 30 30 30
40 40 40 40
Умножение прямоугольных матриц: Мы используем указатели в C для умножения на матрицы. Пожалуйста, обратитесь к следующему сообщению в качестве предварительного условия кода.
// C ++ программа для умножения двух // прямоугольные матрицы #include<bits/stdc++.h>
usingnamespacestd;
// Умножаем две матрицы mat1 [] [] // и mat2 [] [] и выводит результат. // (m1) x (m2) и (n1) x (n2) // размеры заданных матриц.
voidmultiply(intm1, intm2, intmat1[][2],
intn1, intn2, intmat2[][2])
{
intx, i, j;
intres[m1][n2];
for(i = 0; i < m1; i++)
{
for(j = 0; j < n2; j++)
{
res[i][j] = 0;
for(x = 0; x < m2; x++)
{
*(*(res + i) + j) += *(*(mat1 + i) + x) *
*(*(mat2 + x) + j);
}
}
}
for(i = 0; i < m1; i++)
{
for(j = 0; j < n2; j++)
{
cout << *(*(res + i) + j) << " ";
}
cout << "\n";
}
}
// Код драйвера
intmain()
{
intmat1[][2] = { { 2, 4 }, { 3, 4 } };
intmat2[][2] = { { 1, 2 }, { 1, 3 } };
intm1 = 2, m2 = 2, n1 = 2, n2 = 2;
multiply(m1, m2, mat1, n1, n2, mat2);
return0;
}
// Этот код добавлен // Аканкша Рай (Abby_akku)
С
// C программа для умножения двух прямоугольных матриц #include<stdio.h>
// Умножаем две матрицы mat1 [] [] и mat2 [] [] // и выводит результат. // (m1) x (m2) и (n1) x (n2) являются размерами // заданных матриц.
voidmultiply(intm1, intm2, intmat1[][m2],
intn1, intn2, intmat2[][n2])
{
intx, i, j;
intres[m1][n2];
for(i = 0; i < m1; i++)
{
for(j = 0; j < n2; j++)
{
res[i][j] = 0;
for(x = 0; x < m2; x++)
{
*(*(res + i) + j) += *(*(mat1 + i) + x) *
*(*(mat2 + x) + j);
}
}
}
for(i = 0; i < m1; i++)
{
for(j = 0; j < n2; j++)
{
printf("%d ", *(*(res + i) + j));
}
printf("\n");
}
}
// Код драйвера
intmain()
{
intmat1[][2] = { { 2, 4 }, { 3, 4 } };
intmat2[][2] = { { 1, 2 }, { 1, 3 } };
intm1 = 2, m2 = 2, n1 = 2, n2 = 2;
multiply(m1, m2, mat1, n1, n2, mat2);
return0;
}
PHP
<?php // PHP программа для умножения двух // прямоугольные матрицы
// Умножаем две матрицы mat1 [] [] // и mat2 [] [] и выводит результат. // (m1) x (m2) и (n1) x (n2) // размеры заданных матриц.
functionmultiply($m1, $m2, $mat1,
$n1, $n2, $mat2)
{
for($i= 0; $i< $m1; $i++)
{
for($j= 0; $j< $n2; $j++)
{
$res[$i][$j] = 0;
for($x= 0; $x< $m2; $x++)
{
$res[$i][$j] += $mat1[$i][$x] *
$mat2[$x][$j];
}
}
}
for($i= 0; $i< $m1; $i++)
{
for($j= 0; $j< $n2; $j++)
{
echo$res[$i][$j] . " ";
}
echo"\n";
}
}
// Код драйвера
$mat1= array( array( 2, 4 ), array( 3, 4 ));
$mat2= array( array( 1, 2 ), array( 1, 3 ));
$m1= 2;
$m2= 2;
$n1= 2;
$n2= 2;
multiply($m1, $m2, $mat1, $n1, $n2, $mat2);
// Этот код предоставлен rathbhupendra ?>
Выход:
6 16
7 18
Временная сложность вышеуказанной программы составляет O (n 3 ). Его можно оптимизировать с помощью умножения матриц Штрассена
Эта статья предоставлена Адитьей Ранджаном . Если вы как GeeksforGeeks и хотели бы внести свой вклад, вы также можете написать статью с помощью contribute.geeksforgeeks.org или по почте статьи contribute@geeksforgeeks.org. Смотрите свою статью, появляющуюся на главной странице GeeksforGeeks, и помогите другим вундеркиндам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме