Maxima中-1^n计算困惑及埃尔米特多项式实现问题
问题解答
- 先明确运算优先级:在数学和Maxima中,指数运算的优先级高于负号,所以
-1^n的计算顺序是先算1^n再取负。当n=0时,1^0=1,因此-1^0 = -1;而(-1)^n是把-1作为整体计算0次方,结果为1,这符合数学定义里非零数的0次方为1的规则。 - 你编写的埃尔米特多项式代码出错的核心原因就是运算符优先级的问题:原代码里的
(-1^n)写法错误,应该改成(-1)^n,修正后的代码如下:
这样调用He(n,x) := expand(((-1)^n)*exp(x^2/2)*diff(exp(-x^2/2),x,n));He(0,x)就能得到预期的结果1了。 - 这不是Maxima刻意设置的严格规范,而是遵循通用的数学运算优先级逻辑,几乎所有编程语言、符号计算工具都会按这个规则处理,所以必须用括号明确你要计算的是“-1的n次方”,而非“1的n次方的相反数”。
内容的提问来源于stack exchange,提问作者Larry Reed
相关产品推荐
相关产品推荐

