입력

2014-07-23 2 views
0
내가 SymPy에서 다항식을 만들고 싶어

같은 매트릭스 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])]) 

다음 식을 다항식을 명시 적으로 제공하지만, 이 표현 sa0, sa1에서

poly2 = sx**2*sa2/2 + sx*sa1 + sa0 

, sa2sa[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의 값을 삽입 할 수 있습니까?

답변

0

evalf 대신 xreplace을 사용해보세요. 이상적으로 subs도 작동하지만 버그가있는 것 같습니다.