Maxima:函数的翻译运算符

时间:2017-10-04 10:39:14

标签: function maxima

我想定义一个翻译算子L,它从函数q输出所有x的q(x-1),即相同的函数但向左移一。我这样定义了:

(%i0) L(q) := q(x-1);

但是,如果我应用运算符两次

(%i1) L(L(q));

输出

(%o1) q(x-1)(x-1)

而不是

(%o1) q(x-2)

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

L必须返回一个函数才能使这种嵌套工作。

也许,一个简单的替换足以完成任务:

L(f) := subst(x=x-1,f)$
L(sin(x));     L(L(sin(x)));
  sin(x - 1)
  sin(x - 2)

带有lambda的宏也可以工作:

L(q) ::= buildq([q], lambda([x], q(x-1)));

所以,例如,f(x):= x + 1, g(x) := sin(%pi*(x-1)/4)

f(1);    L(f)(1);    L(L(f))(1);
2
1
0
g(1);    L(g)(1);    L(L(g))(1);
0
-1/sqrt(2)
-1