如何只显示选择扩展枫的功率

时间:2014-01-07 19:45:46

标签: maple

假设我有一个多变量的超长多项式。太长时间无法在屏幕上显示或打印出来,因此收集http://www.maplesoft.com/support/help/Maple/view.aspx?path=collect不太可能有所帮助。我想告诉maple只显示包含特定变量的术语到一个选择功率。我相信必须有一个简单的方法来做到这一点。不,我没有广泛地研究过这个问题。如果它已经在线存在,请随时提供答案的链接。

感谢的......

2 个答案:

答案 0 :(得分:1)

假设您要查看多项式poly的所有项x^2。然后执行select(has, poly, x^2);

答案 1 :(得分:1)

如果你关心速度 - 也许是因为你需要对其他权力,可能是其他变量进行类似的查询 - 那么考虑使用coeff命令。例如,对于多项式f,可以使用命令

获得具有x ^ 2的项
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中的多项式结构方面所做的主要工作。见herehere