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]);
我正在尝试绘制一个函数 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]);