Вложенные списки. Операции над матрицами
Операции над матрицами в математике
Одну матрицу можно умножать на другую только тогда, когда:
Ответ: количество столбцов в первой матрице совпадает с количеством строк во второй матрице
Результат умножения матрицы размера Am×n на матрицу размером Bn×k – матрица C с размером:
Ответ: Cm×k
Напишите программу для вычисления суммы двух матриц. На вход программе подаются два натуральных числа n и m — количество строк и столбцов в матрицах, затем элементы первой матрицы, затем пустая строка, далее следуют элементы второй матрицы.
n, m = [int(i) for i in input().split()] l = [[0] * m for _ in range(n)] l_1 = [[int(i) for i in input().split()] for _ in range(n)] s = input() l_2 = [[int(i) for i in input().split()] for _ in range(n)] for i in range(n): for j in range(m): l[i][j] = l_1[i][j] + l_2[i][j] for x in l: print(*x)
Напишите программу, которая перемножает две матрицы. На вход программе подаются два натуральных числа n и m — количество строк и столбцов в первой матрице, затем элементы первой матрицы, затем пустая строка. Далее следуют числа m и k — количество строк и столбцов второй матрицы затем элементы второй матрицы.
n, m = [int(i) for i in input().split()] l = [[0] * n for _ in range(n)] l_1 = [[int(i) for i in input().split()] for _ in range(n)] s = input() m, k = [int(i) for i in input().split()] l_2 = [[int(i) for i in input().split()] for _ in range(m)] for i in range(n): for j in range(k): r = 0 for y in range(m): r += l_1[i][y] * l_2[y][j] l[i][j] = r for x in l: print(*x)
Напишите программу, которая возводит квадратную матрицу в m-ую степень. На вход программе подаётся натуральное число n — количество строк и столбцов в матрице, затем элементы матрицы, затем натуральное число m.
def square_mx_mult(l_1, l_2, size): l = [[0] * size for _ in range(size)] for i in range(size): for j in range(size): for k in range(size): l[i][j] += l_1[i][k] * l_2[k][j] return l n = int(input()) ll = [[int(i) for i in input().split()] for _ in range(n)] m = int(input()) p_l = ll.copy() for _ in range(m - 1): p_l = square_mx_mult(ll, p_l, n) for x in p_l: print(*x)