0

我想用 PARI/GP 反转幂级数:
如果$y=a[1]*x+a[2]*x^2+...+O(x^N)$由给定数组编码,例如a=vector(N-1),我希望 PARI 产生向量 b 使得$x=b[1]*y+b[2]*y^2+...+O(y^N)$.
这可以使用贝尔多项式来完成。帕里手册有

Bell(k,n=-1)=
{
my(var(i)=eval(Str("X",i)));
my(x,v,dv);
v=vector(k,i,if(i==1,’E,var(i-1)));
dv=vector(k,i,if(i==1,’X*var(1)*’E,var(i)));
x=diffop(’E,v,dv,k)/’E;
if(n<0,subst(x,’X,1),polcoeff(x,n,’X))
}

生产例如

gp > Bell(3)
%3 = X1^3 + 3*X2*X1 + X3

但我不知道如何使用这些,即在 Pari 的后续公式中将值归因X1, X2, ...于(事实上,我几乎不明白上述公式是如何工作的!)eval()subst()对于知道的人来说这应该是微不足道的......请帮助!

4

1 回答 1

1

PARI 具有执行幂级数反转的内置功能,因此无需进入肯定非常次优且复杂的低级实现。

示例使用:

serreverse( x / (1 + x)^2 + O(x^20))

第二个示例(基于问题中给出的链接中的示例)

serreverse(atan(x + O(x^20)))
tan(x + O(x^20))

如果您的系列在向量中v,您将首先将其转换为幂系列,然后调用serreverse. 例如:

serreverse(Ser(v))

要稍后转换回向量,请使用该Vec函数。当从幂级数转换为向量时,PARI 将去除任何前导零,这可能很烦人。为了防止这种情况发生,您通常会给出第二个参数,-n即幂级数中的项数-(n+1)n

于 2020-02-13T16:06:18.373 回答