我已经跟踪了这段代码:http://www.yorku.ca/marko/ComPhys/NoncomProduct/NoncomProduct.html。但是,我怀疑它很古老。它显然是从2005年开始的。它需要一支使用definemore的军队才能工作,并且需要这段代码:
Ut:=subs((A+B)^2=(A+B)&*(A+B),(A+B)^3=(A+B)&*(A+B)&*(A+B),(A+B)^4=(A+B)&*(A+B)&*(A+B)&*(A+B),Ut);
让非通勤运营商正确评估。显然,随着你走向更高阶,这会变得更糟。我相信应该有一些适用于任意顺序的东西,尽管可能不是这个代码所写的枫树版本。
所以,问题是:我目前正在使用枫树13.在枫树13或枫树的最新版本中有更好的方法吗?这可能是投资新版本的一个很好的理由。
感谢..
编辑:感谢您的回复@acer;我对此并不是那么明确,但是如果有更好的方法在枫的最新版本中实现这个算法,请说明。我可能真的会投资一个新版本..谢谢!
答案 0 :(得分:1)
我没有看过那些definemore
定义,但就最初的权力替换而言,你甚至可以在Maple 13中尝试类似这些中的任何一种(而不是那种硬编码的替换序列)
subsindets( Ut, `^`, z->`if`(type(op(2,z),posint) and op(1,z)=A+B,
foldr(`&*`,seq(op(1,z),i=1..op(2,z))),
z) );
subsindets( Ut, `^`, z->`if`(type(op(2,z),posint) and op(1,z)<>h,
foldr(`&*`,seq(op(1,z),i=1..op(2,z))),
z) );