调用函数n次的Maxima语法

时间:2015-12-06 17:21:50

标签: maxima

在数学中,你可以将f(f(f(x)))写为f ^ 3(x)。我已经浏览了千里马手册,但无法找到一种方法来表达这种权力。

1 个答案:

答案 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)的显示不明确;这是一个错误。