在 Pari-gp 中获取表达式的常量部分
Getting the constant portion of an expression in Pari-gp
这可能是一个非常愚蠢的问题——但我似乎无法在 pari-gp 文献中找到相关的解释。我在库中寻找一个函数,它接受多项式、级数或常数,并吐出常数部分(在常数的情况下,它只会吐出输入)。
我一直在使用的工具是 polcoef(Expression,0)
,但这不适用于多个变量——我们必须再次调用该函数。
例如,
polcoef(1+z+z^2,0)
%2 = 1
polcoef(1+y+z,0)
%3 = z + 1
polcoef(polcoef(1+y+z,0),0)
%4 = 1
是否有内置函数可以对任意数量的变量执行此操作?这样,我就不必重复 polcoef
函数。这将大大清理我的代码;而且我知道我可以自己构建一个递归函数,但我想知道是否有内置的东西可以做到这一点。
非常感谢任何帮助、评论、编辑和澄清的请求。
此致。
编辑:
忘了补充,我想要的输出是,
Const(1+x+y+z)
1
Const(Pi+x^2+p)
Pi
您可以使用内置的 substvec
函数一次替换多个变量。例如:
substvec(1+y+z, ['y,'z], [0,0])
%1 = 1
您甚至可以轻松地实现一个快捷函数,而不是创建适当长度的零列表:
Const(poly: t_POL) = {
my(vars = variables(poly));
substvec(poly, vars, vector(#vars))
};
Const(1+x+y+z)
%1 = 1
Const(Pi+x^2+p)
%2 = Pi
这可能是一个非常愚蠢的问题——但我似乎无法在 pari-gp 文献中找到相关的解释。我在库中寻找一个函数,它接受多项式、级数或常数,并吐出常数部分(在常数的情况下,它只会吐出输入)。
我一直在使用的工具是 polcoef(Expression,0)
,但这不适用于多个变量——我们必须再次调用该函数。
例如,
polcoef(1+z+z^2,0)
%2 = 1
polcoef(1+y+z,0)
%3 = z + 1
polcoef(polcoef(1+y+z,0),0)
%4 = 1
是否有内置函数可以对任意数量的变量执行此操作?这样,我就不必重复 polcoef
函数。这将大大清理我的代码;而且我知道我可以自己构建一个递归函数,但我想知道是否有内置的东西可以做到这一点。
非常感谢任何帮助、评论、编辑和澄清的请求。
此致。
编辑:
忘了补充,我想要的输出是,
Const(1+x+y+z)
1
Const(Pi+x^2+p)
Pi
您可以使用内置的 substvec
函数一次替换多个变量。例如:
substvec(1+y+z, ['y,'z], [0,0])
%1 = 1
您甚至可以轻松地实现一个快捷函数,而不是创建适当长度的零列表:
Const(poly: t_POL) = {
my(vars = variables(poly));
substvec(poly, vars, vector(#vars))
};
Const(1+x+y+z)
%1 = 1
Const(Pi+x^2+p)
%2 = Pi