替代变量?
Substitute variable?
我正在尝试将 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α
的方式有误吗?
编辑:
事实证明这是预期的行为,因为 maxima ev
avluates 表达式仅一次。一个 can impose "infinite evaluation" 通过标志 infeval:
f(x), L: La, infeval;
=> La*(x + La)
另一个解决方案是使用 subst 代替:
subst(
Lα, L, f(x)
);
(source)
您需要添加一个额外的 eval
步骤才能完成这项工作:
f(x) := c * (x + L);
c: L;
f(x), L: Lα, eval;
输出:
Lα (x + Lα)
使用 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 中的一样,这可能与你在其他语言。
我正在尝试将 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α
的方式有误吗?
编辑:
事实证明这是预期的行为,因为 maxima ev
avluates 表达式仅一次。一个 can impose "infinite evaluation" 通过标志 infeval:
f(x), L: La, infeval;
=> La*(x + La)
另一个解决方案是使用 subst 代替:
subst(
Lα, L, f(x)
);
(source)
您需要添加一个额外的 eval
步骤才能完成这项工作:
f(x) := c * (x + L);
c: L;
f(x), L: Lα, eval;
输出:
Lα (x + Lα)
使用 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 中的一样,这可能与你在其他语言。