Поскольку мы знаем, что мы можем вычислить обратную матрицу с помощью numpy следующим образом.
matrix1 = np.matrix([[8,2,5],[7,3,1],[4,9,6]])
inverse_matrix1 = matrix1.I
result = np.matmul(matrix1, inverse_matrix1)
Результат следующий, и нам легко проверить точность, просто выполнив np.matmul.
matrix([[ 0.03585657, 0.1314741 , -0.05179283],
[-0.15139442, 0.11155378, 0.10756972],
[ 0.20318725, -0.25498008, 0.03984064]])
Проверенный результат выглядит следующим образом.
matrix([[ 1.00000000e+00, 0.00000000e+00, 2.77555756e-17],
[ 0.00000000e+00, 1.00000000e+00, 3.46944695e-17],
[-2.22044605e-16, 0.00000000e+00, 1.00000000e+00]])
Однако этот случай очень мал. На практике, хотя мы должны избегать вычисления обратной матрицы для большой матрицы, иногда нам приходится это делать. Я нашел эту матрицу. Я не могу предоставить мне относительно точную обратную матрицу, когда матрица относительно большая. Пример показан ниже. Я хочу вычислить обратную матрицу гауссовой матрицы ядра, форма которой (300, 300).
point = np.reshape(np.linspace(-5.0, 5.0, 300), (300, 1))
kernel_matrix_np = np.exp(-(point - np.transpose(point))**2 / (2 * 2**2))
Я не уверен, как я могу вычислить такую матрицу. Большое вам спасибо!