繁体   English   中英

使用矩阵作为输入来评估SymPy中的函数

[英]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

在这个表达式中sa0sa1sa2取代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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM