В чем проблема не работает возведение в степень и ввод матрицы в ручную
import random as rn global len_ax, len_ay, len_bx, len_by, nr_matrix # Функция генерит матрицы def rn_matrix(len_x, len_y): # 0 # x -> ось x, y -> ось y matrix = [[0 for i in range(len_x)] for j in range(len_y)] for i in range(0,len_y): for j in range(0,len_x): # matrix[i][j] = rn.randint(0, 10) return matrix # умножает на число def multiply_matrix(matrix, len_x, len_y, n): # создаю матрицу new_matrix = [[0 for i in range(len_x)] for j in range(len_y)] for i in range(0,len_y): for j in range(0,len_x): # Умнажаю число из матрицы на число new_matrix[i][j] = matrix[i][j]*n return new_matrix # транспорирование def transporirovanie(matrix, len_x, len_y): # создаю матрицу new_matrix = [[0 for i in range(len_y)] for j in range(len_x)] for i in range(0,len_x): for j in range(0,len_y): # переварачиваю матрицу new_matrix[i][j] = matrix[j][i] return new_matrix def multiply_2matrix(matrix_a, matrix_b, len_x, len_y): # создаю матрицу new_matrix = [[0 for i in range(len_y)] for j in range(len_x)] i,j=0, 0 new_matrix[i][j] = matrix_a[i][j]*matrix_b[i][j] + matrix_a[i+1][j]*matrix_b[i][j+1] + matrix_a[i+2][j]*matrix_b[i][j+2] new_matrix[i+1][j] = matrix_a[i][j]*matrix_b[i+1][j] + matrix_a[i+1][j]*matrix_b[i+1][j+1] + matrix_a[i+2][j]*matrix_b[i+1][j+2] new_matrix[i+2][j] = matrix_a[i][j]*matrix_b[i+1][j] + matrix_a[i+1][j]*matrix_b[i+1][j+1] + matrix_a[i+2][j]*matrix_b[i+1][j+2] new_matrix[i][j+1] = matrix_a[i][j+1]*matrix_b[i][j] + matrix_a[i+1][j+1]*matrix_b[i][j+1] + matrix_a[i+2][j+1]*matrix_b[i][j+2] new_matrix[i+1][j+1] = matrix_a[i][j+1]*matrix_b[i+1][j] + matrix_a[i+1][j+1]*matrix_b[i+1][j+1] + matrix_a[i+2][j+1]*matrix_b[i+1][j+2] new_matrix[i+2][j+1] = matrix_a[i][j+1]*matrix_b[i+1][j] + matrix_a[i+1][j+1]*matrix_b[i+1][j+1] + matrix_a[i+2][j+1]*matrix_b[i+1][j+2] new_matrix[i][j+2] = matrix_a[i][j+2]*matrix_b[i][j] + matrix_a[i+1][j+2]*matrix_b[i][j+1] + matrix_a[i+2][j+2]*matrix_b[i][j+2] new_matrix[i+1][j+2] = matrix_a[i][j+2]*matrix_b[i+1][j] + matrix_a[i+1][j+2]*matrix_b[i+1][j+1] + matrix_a[i+2][j+2]*matrix_b[i+1][j+2] new_matrix[i+2][j+2] = matrix_a[i][j+2]*matrix_b[i+1][j] + matrix_a[i+1][j+2]*matrix_b[i+1][j+1] + matrix_a[i+2][j+2]*matrix_b[i+1][j+2] return new_matrix def main(): print("Введите желаемое действие над матрицами: ") print("0 -> генерирование матриц, 1 -> сложение матриц, 2 -> умножение на число ") print("3 -> умножение матриц, 4 -> транспонирование, 5 -> возведение матрицы в степень") print("6 -> ввести матрицы в ручную, 9 -> выход") action = input("--> ") if(action == "1" or action == "3"): nr_matrix = 2 len_ax = int(input("Введите размеры матрицы 1 (x): ")) len_ay = int(input("Введите размеры матрицы 1 (y): ")) len_bx = int(input("Введите размеры матрицы 2 (x): ")) len_by = int(input("Введите размеры матрицы 2 (y): ")) print("0 -> генерирование матриц, 6 -> ввести матрицы в ручную") action = input("--> ") if(action == "0"): ''' Генерация матриц ''' matrix_a = rn_matrix(len_ax, len_ay) matrix_b = rn_matrix(len_bx, len_by) print("Matrix A: ") print(matrix_a) print("Matrix B: ") print(matrix_b) elif(action == "6"): ''' Генерация матриц delai sam''' matrix_a = [[0 for i in range(len_ax)] for j in range(len_ay)] matrix_b = [[0 for i in range(len_bx)] for j in range(len_by)] for i in range(0,len_ay): for j in range(0,len_ax): # Умнажаю число из матрицы на число print("Введите число в матрицу 1 matrix_a[", i, "][",j,"]", end="") matrix_a[i][j] = int(input()) for i in range(0,len_by): for j in range(0,len_bx): # Умнажаю число из матрицы на число print("Введите число в матрицу 2 matrix_b[", i, "][",j,"]", end="") matrix_b[i][j] = int(input()) if(action == "2" or action == "4" or action == "5"): nr_matrix = 1 len_ax = int(input("Введите размеры матрицы 1 (x): ")) len_ay = int(input("Введите размеры матрицы 1 (y): ")) print("0 -> генерирование матриц, 6 -> ввести матрицы в ручную") action = input("--> ") if(action == "0"): ''' Генерация матриц ''' matrix_a = rn_matrix(len_ax, len_ay) print("Matrix A: ") print(matrix_a) while(action != "9"): if(action == "9"): break if(action == "1"): ''' Сложение матриц ''' if(len_ax == len_bx and len_ay == len_by): matrix_c = [[0]*len_ax]*len_ay print("Matrix C") for i in range(0,len_ay): for j in range(0,len_ax): matrix_c[i][j] = matrix_a[i][j] + matrix_b[i][j] print (matrix_c[i][j], end=" ") print() else: print ("Матрицы разных величин!") elif(action == "2"): nr = 3; if(nr_matrix == 2): print("Matrix A: ", multiply_matrix(matrix_a, len_ax, len_ay, n)) print("Matrix B: ", multiply_matrix(matrix_b, len_bx, len_by, n)) elif(nr_matrix == 1): n = int(input("Введите число для умножения матриц: ")) print("Matrix A: ", multiply_matrix(matrix_a, len_ax, len_ay, n)) elif(action == "3"): ''' Умножение матриц ''' if(len_ax == len_bx and len_ay == len_by): matrix_c = multiply_2matrix(matrix_a, matrix_b, len_ax, len_ay) print("Matrix C", matrix_c) else: print ("Матрицы разных величин!") elif(action == "4"): ''' Транспорирование ''' if(nr_matrix == 2): print("Matrix A: ", transporirovanie(matrix_a, len_ax, len_ay)) print("Matrix B: ", transporirovanie(matrix_b, len_bx, len_by)) elif(nr_matrix == 1): print("Matrix A: ", transporirovanie(matrix_a, len_ax, len_ay)) action = input("--> ") if __name__=='__main__': main()
1 ответ
import random as rn
global len_ax, len_ay, len_bx, len_by, nr_matrix
# Функция генерит матрицы
def rn_matrix(len_x, len_y):
# 0
# x -> ось x, y -> ось y
matrix = [[0 for i in range(len_x)] for j in range(len_y)]
for i in range(0,len_y):
for j in range(0,len_x):
#
matrix[i][j] = rn.randint(0, 10)
return matrix
# умножает на число
def multiply_matrix(matrix, len_x, len_y, n):
# создаю матрицу
new_matrix = [[0 for i in range(len_x)] for j in range(len_y)]
for i in range(0,len_y):
for j in range(0,len_x):
# Умнажаю число из матрицы на число
new_matrix[i][j] = matrix[i][j]*n
return new_matrix
# транспорирование
def transporirovanie(matrix, len_x, len_y):
# создаю матрицу
new_matrix = [[0 for i in range(len_y)] for j in range(len_x)]
for i in range(0,len_x):
for j in range(0,len_y):
# переварачиваю матрицу
new_matrix[i][j] = matrix[j][i]
return new_matrix
def multiply_2matrix(matrix_a, matrix_b, len_x, len_y):
# создаю матрицу
new_matrix = [[0 for i in range(len_y)] for j in range(len_x)]
i,j=0, 0
new_matrix[i][j] = matrix_a[i][j]*matrix_b[i][j] + matrix_a[i+1][j]*matrix_b[i][j+1] + matrix_a[i+2][j]*matrix_b[i][j+2]
new_matrix[i+1][j] = matrix_a[i][j]*matrix_b[i+1][j] + matrix_a[i+1][j]*matrix_b[i+1][j+1] + matrix_a[i+2][j]*matrix_b[i+1][j+2]
new_matrix[i+2][j] = matrix_a[i][j]*matrix_b[i+1][j] + matrix_a[i+1][j]*matrix_b[i+1][j+1] + matrix_a[i+2][j]*matrix_b[i+1][j+2]
new_matrix[i][j+1] = matrix_a[i][j+1]*matrix_b[i][j] + matrix_a[i+1][j+1]*matrix_b[i][j+1] + matrix_a[i+2][j+1]*matrix_b[i][j+2]
new_matrix[i+1][j+1] = matrix_a[i][j+1]*matrix_b[i+1][j] + matrix_a[i+1][j+1]*matrix_b[i+1][j+1] + matrix_a[i+2][j+1]*matrix_b[i+1][j+2]
new_matrix[i+2][j+1] = matrix_a[i][j+1]*matrix_b[i+1][j] + matrix_a[i+1][j+1]*matrix_b[i+1][j+1] + matrix_a[i+2][j+1]*matrix_b[i+1][j+2]
new_matrix[i][j+2] = matrix_a[i][j+2]*matrix_b[i][j] + matrix_a[i+1][j+2]*matrix_b[i][j+1] + matrix_a[i+2][j+2]*matrix_b[i][j+2]
new_matrix[i+1][j+2] = matrix_a[i][j+2]*matrix_b[i+1][j] + matrix_a[i+1][j+2]*matrix_b[i+1][j+1] + matrix_a[i+2][j+2]*matrix_b[i+1][j+2]
new_matrix[i+2][j+2] = matrix_a[i][j+2]*matrix_b[i+1][j] + matrix_a[i+1][j+2]*matrix_b[i+1][j+1] + matrix_a[i+2][j+2]*matrix_b[i+1][j+2]
return new_matrix
def main():
print("Введите желаемое действие над матрицами: ")
print("0 -> генерирование матриц, 1 -> сложение матриц, 2 -> умножение на число ")
print("3 -> умножение матриц, 4 -> транспонирование, 5 -> возведение матрицы в степень")
print("6 -> ввести матрицы в ручную, 9 -> выход")
action = input("--> ")
if(action == "1" or action == "3"):
nr_matrix = 2
len_ax = int(input("Введите размеры матрицы 1 (x): "))
len_ay = int(input("Введите размеры матрицы 1 (y): "))
len_bx = int(input("Введите размеры матрицы 2 (x): "))
len_by = int(input("Введите размеры матрицы 2 (y): "))
print("0 -> генерирование матриц, 6 -> ввести матрицы в ручную")
action = input("--> ")
if(action == "0"):
''' Генерация матриц '''
matrix_a = rn_matrix(len_ax, len_ay)
matrix_b = rn_matrix(len_bx, len_by)
print("Matrix A: ")
print(matrix_a)
print("Matrix B: ")
print(matrix_b)
elif(action == "6"):
''' Генерация матриц delai sam'''
matrix_a = [[0 for i in range(len_ax)] for j in range(len_ay)]
matrix_b = [[0 for i in range(len_bx)] for j in range(len_by)]
for i in range(0,len_ay):
for j in range(0,len_ax):
# Умнажаю число из матрицы на число
print("Введите число в матрицу 1 matrix_a[", i, "][",j,"]", end="")
matrix_a[i][j] = int(input())
for i in range(0,len_by):
for j in range(0,len_bx):
# Умнажаю число из матрицы на число
print("Введите число в матрицу 2 matrix_b[", i, "][",j,"]", end="")
matrix_b[i][j] = int(input())
if(action == "2" or action == "4" or action == "5"):
nr_matrix = 1
len_ax = int(input("Введите размеры матрицы 1 (x): "))
len_ay = int(input("Введите размеры матрицы 1 (y): "))
print("0 -> генерирование матриц, 6 -> ввести матрицы в ручную")
action = input("--> ")
if(action == "0"):
''' Генерация матриц '''
matrix_a = rn_matrix(len_ax, len_ay)
print("Matrix A: ")
print(matrix_a)
while(action != "9"):
if(action == "9"):
break
if(action == "1"):
''' Сложение матриц '''
if(len_ax == len_bx and len_ay == len_by):
matrix_c = [[0]*len_ax]*len_ay
print("Matrix C")
for i in range(0,len_ay):
for j in range(0,len_ax):
matrix_c[i][j] = matrix_a[i][j] + matrix_b[i][j]
print (matrix_c[i][j], end=" ")
print()
else:
print ("Матрицы разных величин!")
elif(action == "2"):
nr = 3;
if(nr_matrix == 2):
print("Matrix A: ", multiply_matrix(matrix_a, len_ax, len_ay, n))
print("Matrix B: ", multiply_matrix(matrix_b, len_bx, len_by, n))
elif(nr_matrix == 1):
n = int(input("Введите число для умножения матриц: "))
print("Matrix A: ", multiply_matrix(matrix_a, len_ax, len_ay, n))
elif(action == "3"):
''' Умножение матриц '''
if(len_ax == len_bx and len_ay == len_by):
matrix_c = multiply_2matrix(matrix_a, matrix_b, len_ax, len_ay)
print("Matrix C", matrix_c)
else:
print ("Матрицы разных величин!")
elif(action == "4"):
''' Транспорирование '''
if(nr_matrix == 2):
print("Matrix A: ", transporirovanie(matrix_a, len_ax, len_ay))
print("Matrix B: ", transporirovanie(matrix_b, len_bx, len_by))
elif(nr_matrix == 1):
print("Matrix A: ", transporirovanie(matrix_a, len_ax, len_ay))
action = input("--> ")
if __name__=='__main__':
main()