Pari-gp中提取任意变量个数表达式常数项的内置函数查询
回答
目前Pari/GP没有原生的单参数内置函数可以直接返回任意输入(常数、一元/多元多项式、级数)的常数项,不过你可以用一行代码实现该功能,无需嵌套调用polcoef,也不需要自行编写递归逻辑:
Const(expr) = substvec(expr, variables(expr), vector(#variables(expr), i, 0));
测试效果与你预期完全一致:
Const(1+x+y+z) %1 = 1 Const(Pi+x^2+p) %2 = Pi Const(1+z+z^2) %3 = 1 Const(1+y+z) %4 = 1
实现原理:
variables(expr)会自动提取表达式中包含的所有变量,按Pari/GP默认变量排序返回列表substvec支持批量将变量列表中的元素对应替换为指定值,此处我们将所有变量统一替换为0,剩余的结果就是常数项- 如果输入本身为常数,
variables(expr)会返回空列表,substvec不会执行任何替换操作,直接返回原输入值,完全匹配你的需求
如果你使用的是2.15及以上版本的Pari/GP,还可以用更简洁的写法,高版本subst已支持批量传入变量列表和统一替换值:
Const(expr) = subst(expr, variables(expr), 0);
内容的提问来源于stack exchange,提问作者Richard Diagram
相关产品推荐
相关产品推荐

