泰勒扩展了运营商产品

时间:2014-01-10 18:40:52

标签: maple

我已经跟踪了这段代码: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;我对此并不是那么明确,但是如果有更好的方法在枫的最新版本中实现这个算法,请说明。我可能真的会投资一个新版本..谢谢!

1 个答案:

答案 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) );