微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python中的矩阵行列式符号

如何解决python中的矩阵行列式符号

大家好,我想在python中计算以下矩阵的行列式“符号化”

x,y,z,a,b,c = symbols('x,c')
arr3 = np.array(([1-a,6,8-x],[2-b,10,12-y],[6-c,3,15-z]))
linalg.det(arr3)

但我收到此错误

ValueError                                Traceback (most recent call last)
<ipython-input-34-fa7fd6eebff6> in <module>
----> 1 linalg.det(arr3)

~\anaconda3\lib\site-packages\scipy\linalg\basic.py in det(a,overwrite_a,check_finite)
   1030 
   1031     """
-> 1032     a1 = _asarray_validated(a,check_finite=check_finite)
   1033     if len(a1.shape) != 2 or a1.shape[0] != a1.shape[1]:
   1034         raise ValueError('expected square matrix')

~\anaconda3\lib\site-packages\scipy\_lib\_util.py in _asarray_validated(a,check_finite,sparse_ok,objects_ok,mask_ok,as_inexact)
    264     if not objects_ok:
    265         if a.dtype is np.dtype('O'):
--> 266             raise ValueError('object arrays are not supported')
    267     if as_inexact:
    268         if not np.issubdtype(a.dtype,np.inexact):

ValueError: object arrays are not supported

我是新手,你能告诉我我是怎么做错的吗?我能改正吗?

解决方法

您不能使用 numpy 数组进行 sympy 的符号计算。而是使用 sympy Matrix:

import sympy as sp
x,y,z,a,b,c = sp.symbols('x,c')
arr3 = sp.Matrix(([1-a,6,8-x],[2-b,10,12-y],[6-c,3,15-z]))
print(sp.det(arr3))

收益

-3*a*y + 10*a*z - 114*a + 3*b*x - 6*b*z + 66*b - 10*c*x + 6*c*y + 8*c + 54*x - 33*y + 2*z - 66

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。