在数学中,你可以将f(f(f(x)))写为f ^ 3(x)。我已经浏览了千里马手册,但无法找到一种方法来表达这种权力。
答案 0 :(得分:3)
Maxima没有内置的运算符。但我认为你可以自己定义一个可行的解决方案。也许这适合你:
(%i1) infix ("o^") $
(%i2) matchdeclare (ff, symbolp, xx, all) $
(%i3) tellsimp ((ff o^ 0)(xx), xx) $
(%i4) tellsimp ((ff o^ 1)(xx), ff(xx)) $
(%i5) matchdeclare (nn, lambda ([e], integerp(e) and e > 1)) $
(%i6) tellsimp ((ff o^ nn)(xx), (ff o^ (nn - 1))(ff (xx))) $
我已经为“o ^”定义了简化规则,因为我希望它只在它出现在函数调用表达式中时应用(例如(f o^ 3)(x)
,而不仅仅是f o^ 3
),第二个参数是一个文字的非负整数。
你必须在“o ^”和下面的标记之间写一个空格,否则解析器就会混淆。
以下是一些例子:
(%i7) (h o^ 0)(u);
(%o7) u
(%i8) (h o^ 1)(u);
(%o8) h(u)
(%i9) (h o^ 2)(u);
(%o9) h(h(u))
(%i10) (h o^ 3)(u);
(%o10) h(h(h(u)))
(%i11) (h o^ n)(u);
(%o11) h o^ n(u)
(%i12) %, n=2;
(%o12) h(h(u))
(%i13) h o^ 3;
(%o13) h o^ 3
(%i14) %(z);
(%o14) h(h(h(z)))
(%i15) (h o^ -1)(u);
(%o15) h o^ (- 1)(u)
请注意,在与规则不匹配的情况下,表达式不会简化。这使得开放的大门可以定义处理这些情况的附加规则,而无需更改已经有效的内容。
未简化表达式(例如%o11)的显示不明确;这是一个错误。