假设我有一个多变量的超长多项式。太长时间无法在屏幕上显示或打印出来,因此收集http://www.maplesoft.com/support/help/Maple/view.aspx?path=collect不太可能有所帮助。我想告诉maple只显示包含特定变量的术语到一个选择功率。我相信必须有一个简单的方法来做到这一点。不,我没有广泛地研究过这个问题。如果它已经在线存在,请随时提供答案的链接。
感谢的......
答案 0 :(得分:1)
假设您要查看多项式poly
的所有项x^2
。然后执行select(has, poly, x^2);
答案 1 :(得分:1)
如果你关心速度 - 也许是因为你需要对其他权力,可能是其他变量进行类似的查询 - 那么考虑使用coeff
命令。例如,对于多项式f
,可以使用命令
x^2*coeff(f,x,2);
对于大约1000000个项的三变量密集多项式,如下例所示,coeff
命令在Maple 16和17中比has
命令方法快几百倍,如下所示。 / p>
restart:
f:=expand(randpoly(x,degree=100,dense)
*randpoly(y,degree=100,dense)
*randpoly(z,degree=100,dense)):
nops(f); # number of terms
990000
sol1:=CodeTools:-Usage( select(has,f,x^2) ):
memory used=105.36MiB, alloc change=58.22MiB, cpu time=842.00ms, real time=843.00ms
sol2:=CodeTools:-Usage( x^2*coeff(f,x,2) ):
memory used=156.84KiB, alloc change=0 bytes, cpu time=0ns, real time=4.00ms
expand(sol1-sol2);
0
# Check that the timing difference was not just due to the order in which
# the two approaches were done, by a simple repeat.
CodeTools:-Usage( select(has,f,x^2) ):
memory used=105.30MiB, alloc change=23.11MiB, cpu time=733.00ms, real time=691.00ms
CodeTools:-Usage( x^2*coeff(f,x,2) ):
memory used=156.81KiB, alloc change=0 bytes, cpu time=0ns, real time=3.00ms
这一切都是在Windows 7上的Maple 17 64bit中完成的,并且在Maple 16中的时序非常相似。这与Maple 15及更早版本形成鲜明对比,其中coeff
方法比那个慢约3倍has
方法。这些改进涉及在处理Maple 16和17中的多项式结构方面所做的主要工作。见here和here。