1

在下面的千里马会话中,为什么f (1) 不为 0?

(%i1) eq: 2 * x + 1 = 3;
(%o1)                             2 x + 1 = 3
(%i2) f(x) := lhs(eq) - rhs(eq);
(%o2)                      f(x) := lhs(eq) - rhs(eq)
(%i3) f(1);
(%o3)                               2 x - 2
4

1 回答 1

2

此处在最大值中调用函数的过程将函数定义中的 x 绑定到 1,lhs(eq)-rhs(eq)。里面没有 x,所以绑定什么也不做。接下来,lhs(eq) 被计算为 2*x+1。rhs(eq) 被评估为 3. 等等。

你总是想要相同的方程 eq 吗?也许你想做

定义(f(x),lhs(eq)-rhs(eq));

要检查定义是什么,请尝试grind(f);

如果你想改变方程,可能是这样的

g(val, eq) := subst(val,x, lhs(eq)-rhs(eq)) ; 会做。

于 2013-08-23T15:55:09.080 回答