МУНИЦИПАЛЬНОЕ АВТОНОМНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ДОПОЛНИТЕЛЬНОГО ОБРАЗОВАНИЯ
«ЦЕНТР ДЕТСКОГО ТЕХНИЧЕСКОГО ТВОРЧЕСТВА»
Методическая разработка
«Матрицы на языке Python»
к дополнительной общеобразовательной
общеразвивающей программе
технической направленности
«Программирование на Python»
Возраст детей: 10-17 лет
Автор: Костычев Вадим Александрович
г. Заречный Пензенской области
2023 г.
В ходе изучения программирования на основе языка Python большую роль играет разработка проектов. Они позволяют отработать как навыки программирования, вспомнить работу различных функций, команд, развить навыки построения алгоритмов.
Целью данной разработки является повышение интереса учащихся к техническому творчеству посредством работы над проектом на языке Python.
Данная методическая разработка используется как обучающий пример для работы по дополнительной общеобразовательной общеразвивающей программе технической направленности «Лаборатория робототехники». С их помощью учащиеся смогут применить теоретические знания на практике, построив сложные алгоритмы для решения различных задач.
В данной методической разработке будет рассмотрены решения математических задач на матрицы.
Задача 1. Сложение матриц
Даны две матрицы размером n x m. Найдите их сумму.
matrix1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
matrix2 = [[9, 8, 7], [6, 5, 4], [3, 2, 1]]
Выходные данные:
[[10, 10, 10], [10, 10, 10], [10, 10, 10]]
Листинг программы:
matrix1 = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
matrix2 = [[9, 8, 7], [6, 5, 4], [3, 2, 1]]
result = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
for i in range(len(matrix1)):
for j in range(len(matrix1[0])):
result[i][j] = matrix1[i][j] + matrix2[i][j]
print(result)
Задача 2. Умножение матриц
Даны две матрицы размером m x n и n x p. Найдите их произведение.
matrix1 = [[1, 2], [3, 4], [5, 6]]
matrix2 = [[7, 8, 9], [10, 11, 12]]
Выходные данные:
[[27, 30, 33], [61, 68, 75], [95, 106, 117]]
Листинг программы:
matrix1 = [[1, 2], [3, 4], [5, 6]]
matrix2 = [[7, 8, 9], [10, 11, 12]]
result = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
for i in range(len(matrix1)):
for j in range(len(matrix2[0])):
for k in range(len(matrix2)):
result[i][j] += matrix1[i][k] * matrix2[k][j]
print(result)
Задача 3. Нахождение определителя матрицы
Дана квадратная матрица размером n x n. Найдите ее определитель.
matrix = [[1, 2, 3], [4, 9, 6], [7, 8, 9]]
Выходные данные:
-48
Листинг программы:
def determinant(matrix):
n = len(matrix)
if n == 1:
return matrix[0][0]
elif n == 2:
return matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0]
else:
det = 0
sign = 1
for j in range(n):
sub_matrix = []
for i in range(1, n):
sub_row = []
for k in range(n):
if k != j:
sub_row.append(matrix[i][k])
sub_matrix.append(sub_row)
det += sign * matrix[0][j] * determinant(sub_matrix)
sign *= -1
return det
matrix = [[1, 2, 3], [4, 9, 6], [7, 8, 9]]
print(determinant(matrix))
Задача 4. Нахождение обратной матрицы
Дана квадратная матрица размером n x n. Найдите ее обратную матрицу.
matrix = [[1, 2], [3, 4]]
Выходные данные:
[[-2.0, 1.0], [1.5, -0.5]]
Листинг программы:
def inverse(matrix):
determinant = matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0]
if determinant == 0:
return "Матрица вырожденная, обратной матрицы не существует"
inverse_matrix = [[0, 0], [0, 0]]
inverse_matrix[0][0] = matrix[1][1] / determinant
inverse_matrix[0][1] = -matrix[0][1] / determinant
inverse_matrix[1][0] = -matrix[1][0] / determinant
inverse_matrix[1][1] = matrix[0][0] / determinant
return inverse_matrix
matrix = [[1, 2], [3, 4]]
print(inverse(matrix))
Задача 5. Симметрия
Проверить, является ли матрица симметричной относительно главной диагонали.
matrix = [[1, 2, 3],
[2, 4, 5],
[3, 5, 6]]
Выходные данные:
True
Листинг программы:
matrix = [[1, 2, 3],
[2, 4, 5],
[3, 5, 6]]
symmetric = True
for i in range(len(matrix)):
for j in range(i, len(matrix[0])):
if matrix[i][j] != matrix[j][i]:
symmetric = False
break
print(symmetric)