你是对的,NumPy inv 函数需要数字输入。有关 SymPy Matrix 对象的 basic methods 的 SymPy 文档说“要找到矩阵的逆矩阵,只需将其提升到 -1 次方即可。”
所以...
from sympy import *
import numpy as np
import scipy.linalg
A = np.array([[1,2,3],[2,2,3],[3,4,5]])
B = np.array([[1,0,3],[8,2,3],[3,9,5]])
alpha = symbols('a')
K = A - alpha*B
M = Matrix(K)
print("M:")
print(repr(M))
print()
print("inv(M):")
print(repr(M**-1))
输出:
M:
Matrix([
[ 1 - a, 2, 3 - 3*a],
[2 - 8*a, 2 - 2*a, 3 - 3*a],
[3 - 3*a, 4 - 9*a, 5 - 5*a]])
inv(M):
Matrix([
[ (17*a - 2)/(181*a**2 - 33*a + 2), -(27*a - 2)/(181*a**2 - 33*a + 2), 6*a/(181*a**2 - 33*a + 2)],
[ (31*a - 1)/(181*a**2 - 33*a + 2), (4*a - 4)/(181*a**2 - 33*a + 2), -(21*a - 3)/(181*a**2 - 33*a + 2)],
[-(66*a**2 - 38*a + 2)/(181*a**3 - 214*a**2 + 35*a - 2), (9*a + 2)/(181*a**2 - 33*a + 2), -(2*a**2 + 12*a - 2)/(181*a**3 - 214*a**2 + 35*a - 2)]])
正如@OscarBenjamin 在评论中指出的那样,您还可以使用inv 方法,即M.inv()。