Я хочу инвертировать степенной ряд с помощью 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)$
.
Это можно сделать с использованием полиномов Белла. В справочнике Pari есть
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
Но я понятия не имею, как их использовать, т.е. приписывать значения X1, X2, ...
в последующей формуле в Pari (на самом деле, я с трудом понимаю, как eval()
и subst()
работают в приведенной выше формуле!). Это должно быть тривиально для тех, кто знает... Помогите, пожалуйста!