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

时间:2016-05-14 18:59:28

标签: scope maxima

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

Maxima code

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

More Maxima code

1 个答案:

答案 0 :(得分:1)

问题是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]);