Как добавить поворот, чтобы найти обратный - PullRequest
0 голосов
/ 31 октября 2018

Код, который я создал, должен вычислять обратное значение для данной матрицы, я заставил его работать с массивом из 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)
...