Maxima 中的变量名称范围是如何工作的?

How does variable name scoping in Maxima work?

我正在尝试绘制一个函数 test(a),其中 returns 另一个函数的根(在本例中为 x^3-2*x^2+a):

为什么这不起作用? 为什么我在最后一行将 a 更改为 x 时它起作用?

问题是 mnewton 需要一个表达式,该表达式在为指定变量赋值后计算结果为一个数字(示例中只是 x)。为了使这项工作有效,您需要阻止 mnewton 被调用,直到 a 有一个值。例如,类似于:

plot2d (lambda ([a], rhs(mnewton(p(x, a) = 0, x, 20)[1][1])), [a, -1, 1]);

其中 p(x, a) 是多项式表达式。

我将 a 的范围变小了,因为我从 mnewton 得到一个错误,因为 a 的值较大。

您也可以尝试find_root解1个变量的方程。

由于问题函数是三次多项式,因此有一个精确解,Maxima 可以通过以下方式找到它:algsys([p(x, a)], [x]);