我试图用L
替换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
替换为Lα
?
修改:
原来这是预期的行为,因为最大值ev
只表达一次表达式。一个can impose "infinite evaluation"通过国旗感染:
f(x), L: La, infeval;
=> La*(x + La)
另一种解决方案是改为使用subst:
subst(
Lα, L, f(x)
);
(source)
答案 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相同,这可能与您习惯的不同其他语言。