使用 Maxima,可以使用 at() 语句将未知数替换为值。但这使用列表进行替换,并且solve() 语句不返回列表。
代码:
(%i1) g(x):=x^2+a;
2
(%o1) g(x) := x + a
(%i2) g(x),solve(x=3),a=2;
(%o2) 11
我设法使用逗号计算结果,但我无法创建一个函数来这样做:
(%i3) f(y) := g(x),solve(x=3),a=y;
(%o3) f(y) := g(x)
(%i4) f(2);
2
(%o4) x + a
是否有一个逗号的行为就像它直接在行中一样?
编辑:
实际上,可以将 at() 与solve() 一起使用来创建函数f(),因为solve() 只返回一个列表列表。所以代码是:
(%i5) f(y) := at(at(g(x), solve(x=3)[1]), a=y);
(%o5) f(y) := at(at(g(x), solve(x = 3) ), a = y)
(%i6) f(2);
(%o6) 11
注意[1]
后面solve(x=3)
的(%i5)
。它选择列表的第一项(解决方案)。