我需要在一个相当长的,令人讨厌的展开式中找到一个项的系数。我有一个多项式,比如f(x) = (x+x^2)/2
,然后是一个递归定义的函数:g_k(x,y) = y*f(g_{k-1}(x,y))
和{
我想知道,比方说,g∗10(x,y)中x^2y^4的系数
我把它编码成
import sympy
x, y = sympy.symbols('x y')
def f(x):
return (x+x**2)/2
def g(x,y,k):
if k==0:
return y*x
else:
return y*f(g(x,y,k-1))
fxn = g(x,y,2)
fxn.expand().coeff(x**2).coeff(y**4)
> 1/4
到目前为止还不错。在
但现在我想找到一个系数k=10。现在fxn = g(x,y,10)
和{
有没有其他方法可以通过sympy得到这个系数,或者我可以做些什么来加速它?在
我假设你只对给定的系数感兴趣,而不是整个多项式
g(x,y,10)
。因此,您可以重新定义函数g
,以便在递归的每个步骤中去掉更高的阶数。这将大大加快计算速度。在工作原理如下:首先,顺序
O(y**5), O(x**3)
(及更高)的所有内容都将被分组,然后丢弃。请记住,你丢失了很多信息!在也可以看一下这里:Sympy: Drop higher order terms in polynomial
相关问题 更多 >
编程相关推荐