Код, который я создал, должен вычислять обратное значение для данной матрицы, я заставил его работать с массивом из 2 строк и 2 столбцов, но когда я делаю матрицу из 3 строк и 3 столбцов, она возвращает ошибку. Мне нужно добавить поворот, чтобы исправить это, но я не уверен, как это сделать. Мой код ниже:
import numpy as np
def myInverse(A):
#input: A = a sqaure matrix
#output: C = the inverse of A
nr,nc = A.shape # set the shape of the matrix
B = np.concatenate ((A,np.eye(nr)), axis=1) # adds the identity matrix of number of rows A to the orginal so Gauss Elimination is possible
nr,nc = B.shape # redifine nr,nc in terms of matrix B
for r in range (nr): # iterates through all rows of matrix
scale = B[r][r]
for c in range (nc):
B[r][c] = B[r][c]/scale
for rr in range (nr):
if rr != r:
scale = B[rr][r]
for c in range (r,nc):
B[rr][c] = B[rr][c] - scale*B[r][c]
C = B[:,nr:nc]
return C
A = np.array([[2.0,1,-1],[2,1,-2],[1,-1,1]])
iA = myInverse(A)
print(iA)