Python 以矩阵为输入的函数的求值

Python 以矩阵为输入的函数的求值,python,sympy,Python,Sympy,我想用symphy生成一个多项式,但理想情况下,我想编写尽可能通用的代码: from sympy import * sx, sa0, sa1, sa2 = symbols('x sa0 sa1 sa2') sa = MatrixSymbol('a',3,1) polynomial = sum([sa[i,0]*sx**i/factorial(i) for i in range(sa.shape[0])]) 以下表达式明确给出了多项式,但代码并不像我希望的那样一般: poly2 = sx*

我想用symphy生成一个多项式,但理想情况下,我想编写尽可能通用的代码:

from sympy import *

sx, sa0, sa1, sa2 = symbols('x sa0 sa1 sa2')

sa = MatrixSymbol('a',3,1)

polynomial = sum([sa[i,0]*sx**i/factorial(i) for i in range(sa.shape[0])])
以下表达式明确给出了多项式,但代码并不像我希望的那样一般:

poly2 = sx**2*sa2/2 + sx*sa1 + sa0
在该表达式中,sa0、sa1、sa2分别替换sa[0,0]、sa[1,0]和sa[2,0]

我的问题是,我可以计算poly2,但不能计算“多项式”:

>>> print(poly2.evalf(subs={sx: 10, sa0: 1, sa1: 1, sa2: 1}))
>>> 61.0000000000000
>>> print(polynomial.evalf(subs={sx: 10, sa[0,0]: 1, sa[1,0]: 1, sa[2,0]: 1}))
>>> 0.5*x**2*a[2, 0] + x*a[1, 0] + a[0, 0]
>>> print(polynomial.evalf(subs={sx: 10, sa: [[1, 1, 1]]}))
>>> 0.5*x**2*a[2, 0] + x*a[1, 0] + a[0, 0]
如何在函数中插入MatrixSymbol对象sa的值?

尝试使用xreplace而不是evalf。理想情况下,SUB也可以工作,但看起来有一个bug