Python 辛空间中的多元级数展开

Python 辛空间中的多元级数展开,python,sympy,Python,Sympy,有人知道sympy中是否有一个内置函数来获得形式的多元级数展开式吗 f(x,y) = a + b*x + c*y + d*x**2 + e*x*y + f*y**2 + ... i、 e.在所有变量中按升序排列 提前感谢。简短的回答是,目前(Symphy build 0.7.5),Symphy中没有处理多元级数展开的内置函数 似乎只在一个变量中支持多元函数的级数展开。您可以在函数文档中的评估系列的文档字符串中看到这一点。如果这对您很重要,您可以评论或加入 因此,明确地说,这是可行的: In [

有人知道sympy中是否有一个内置函数来获得形式的多元级数展开式吗

f(x,y) = a + b*x + c*y + d*x**2 + e*x*y + f*y**2 + ...
i、 e.在所有变量中按升序排列


提前感谢。

简短的回答是,目前(Symphy build 0.7.5),Symphy中没有处理多元级数展开的内置函数

似乎只在一个变量中支持多元函数的级数展开。您可以在
函数
文档中的
评估系列
的文档字符串中看到这一点。如果这对您很重要,您可以评论或加入

因此,明确地说,这是可行的:

In [1]: import sympy as sp
In [2]: x, y = sp.symbols('x,y')
In [3]: g = sp.exp(-x*y)
In [4]: g
Out[4]: exp(-x*y)
In [5]: g.series(x, 0)
Out[5]: 1 - x*y + x**2*y**2/2 - x**3*y**3/6 + x**4*y**4/24 - x**5*y**5/120 + O(x**6)
In [6]: g.series(y, 0)
Out[6]: 1 - x*y + x**2*y**2/2 - x**3*y**3/6 + x**4*y**4/24 - x**5*y**5/120 + O(y**6)
但以下任何一项都没有您想要的功能:

In [7]: g.series((x, y), (0, 0))
Out[7]: exp(-x*y)

In [8]: g.series((x, 0), (y, 0))
Out[8]: exp(-x*y)

In [9]: g.series(x, 0, y, 0)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-21-20c1ab732928> in <module>()
----> 1 g.series(x, 0, y, 0)

/usr/lib/python2.7/dist-packages/sympy/core/expr.pyc in series(self, x, x0, n, dir, logx)
   2401                 return self
   2402 
-> 2403         if len(dir) != 1 or dir not in '+-':
   2404             raise ValueError("Dir must be '+' or '-'")
   2405 

TypeError: object of type 'int' has no len()

In [10]: g.series(x, y, 0, 0)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-22-32b57736cd3d> in <module>()
----> 1 g.series(x, y, 0, 0)

/usr/lib/python2.7/dist-packages/sympy/core/expr.pyc in series(self, x, x0, n, dir, logx)
   2401                 return self
   2402 
-> 2403         if len(dir) != 1 or dir not in '+-':
   2404             raise ValueError("Dir must be '+' or '-'")
   2405 

TypeError: object of type 'int' has no len()
[7]中的
:g系列((x,y)、(0,0))
Out[7]:exp(-x*y)
[8]中的g系列((x,0),(y,0))
Out[8]:exp(-x*y)
[9]中的g系列(x,0,y,0)
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
---->1克系列(x,0,y,0)
/usr/lib/python2.7/dist-packages/sympy/core/expr.pyc串联(self、x、x0、n、dir、logx)
2401返回自我
2402
->2403如果len(dir)!=1或目录不在“+-”中:
2404 raise VALUERROR(“目录必须为“+”或“-”)
2405
TypeError:类型为“int”的对象没有len()
[10]中的g系列(x,y,0,0)
---------------------------------------------------------------------------
TypeError回溯(最近一次调用上次)
在()
---->1个g系列(x、y、0、0)
/usr/lib/python2.7/dist-packages/sympy/core/expr.pyc串联(self、x、x0、n、dir、logx)
2401返回自我
2402
->2403如果len(dir)!=1或目录不在“+-”中:
2404 raise VALUERROR(“目录必须为“+”或“-”)
2405
TypeError:类型为“int”的对象没有len()

可能已经太晚了,但我会这么做。 它并不完全是一个内置函数,但它确实起到了作用。 其思想是引入一个使用替换的临时变量(eps),并在其上展开序列。 以下是一个例子:

import sympy
x, y , eps = sympy.symbols('x y eps')
f = sympy.exp(x-y)
f.subs(x,x*eps).subs(y,y*eps).series(eps).removeO().subs(eps,1)
请注意,使用此技术可以在x和y中进行“非对称”展开。 例如:
f.subs(x,x*eps).subs(y,y*eps**2)
..

你从什么开始(多项式,其他(解析)函数)?你期望什么样的产出?(多项式,单项式列表,不同的东西?)嗨,Piotr,我对任何多元函数的幂级数展开感兴趣,作为“级数”的多元变量:我想继续举一个例子:类似(exp(x)*exp(y))。级数()给出1+x+y+x2/2+x*y+y2/2+。。。