替代变量?

时间:2016-11-16 12:57:39

标签: maxima

我试图用L替换

f(x) := c * (x + L);
c: L;
f(x), L: Lα;

我期待输出:

Lα * (x + Lα)
而是我得到了

L * (x + Lα)

也许我应该define f(x)代替?

kill(all);

define(
  f(x),
  c * (x + L)
);

c: L;
f(x), L: Lα;

不 - 结果相同。

我是否以错误的方式将L替换为

修改

原来这是预期的行为,因为最大值ev只表达一次表达式。一个can impose "infinite evaluation"通过国旗感染:

f(x), L: La, infeval;
 => La*(x + La)

另一种解决方案是改为使用subst

subst(
  Lα, L, f(x)
  );

source

2 个答案:

答案 0 :(得分:1)

您需要添加额外的eval步骤才能使其发挥作用:

f(x) := c * (x + L);
c: L;
f(x), L: Lα, eval;

输出:

Lα (x + Lα)

答案 1 :(得分:0)

使用subst而不是ev。

(%i1) f(x) := c * (x + L)$
(%i2) c: L$
(%i3) subst(L=La,f(x));
(%o3) La (x + La)

但请记住,该功能仍然是c *(x + L)。符号c已绑定到L,如果然后将符号L绑定到La,则c将继续绑定到L而不是La.Maxima变量的工作方式与Lisp相同,这可能与您习惯的不同其他语言。