假设我们要计算行列式的4*4矩阵(比方说A
).如果A是numerical matrix,那么它是
import numpy as np
A = np.array([[6,5,10,1],[7,10,7,6],[9,8,12,2],[4,9,11,3]])
np.linalg.det(A)
# 279.9999999999999
这样我们就可以很容易地得到上面的结果.为方便起见,我们采用另一种方法来获得相同的结果,如下所示
import numpy as np
a = '''
6 5 10 1
7 10 7 6
9 8 12 2
4 9 11 3
'''
A = np.matrix(a).reshape(4,4)
np.linalg.det(A)
# 279.9999999999999
即,首先将字符串矩阵转换为np.matrix,然后计算其行列式.
接下来,我们假设4*4
矩阵A是symbolic matrix,例如,A具有一些元素符号W.r.tx
.然后我们可以求助于sympy
一揽子计划,它写道
import sympy as sy
x = sy.symbols('x')
A = sy.Matrix((
[1, x, x ** 2, 0],
[0, 1, x, x ** 2],
[x ** 2, 0, 1, x],
[x, x ** 2, 0, 1]
))
sy.det(A)
## x**8 + x**4 + 1
现在我的问题是,我们如何将文本符号(字符串)矩阵转换为行列式的渐近矩阵,就像numerical case中的那样?我试过了
import numpy as np
import sympy as sy
x = sy.symbols('x')
a = '''
1 x x**2 0
0 1 x x**2
x**2 0 1 x
x x**2 0 1
'''
# A = sy.Matrix(np.matrix(a).reshape(4,4)) #Error!!!
# A = sy.Matrix(sy.MatrixSymbol(a,4,4)) #Unexpected!!!
# sy.det(A)
而且A = sy.Matrix(np.matrix(a).reshape(4,4))
和A = sy.Matrix(sy.MatrixSymbol(a,4,4))
都不起作用!我怎么才能补救这个问题呢?