1

以下の Maxima セッションでは、なぜ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

ここで maxima を呼び出す関数のプロセスは、関数定義 lhs(eq)-rhs(eq) で x を 1 にバインドします。これには x が含まれていないため、バインディングは何もしません。次に、lhs(eq) が 2*x+1 に評価されます。rhs(eq) は 3 に評価されます。

常に同じ方程式 eq が必要ですか? おそらくあなたはやりたい

define(f(x),lhs(eq)-rhs(eq));

定義を確認するには、grind(f); を試してください。

方程式を変えたい場合は、次のようなものかもしれません

g(val, eq) := subst(val,x, lhs(eq)-rhs(eq)) ; するでしょう。

于 2013-08-23T15:55:09.080 に答える