[英]Evaluating a function in SymPy with a matrix as input
我想在SymPy中创建一个多项式,但理想情况下,我想编写尽可能通用的代码:
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
。 理想情况下, subs
也可以工作,但看起来好像有个错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.