今天遇到一个问题简直了。
程序里需要计算高次方,一个数的五次方
代码如下
np.array( [1, x, x ** 2, x ** 3, x ** 4, x ** 5 ])
当x为90时,单独计算改矩阵值为5.9e9(正确值), 当单独进行该矩阵时是正确的。当放在主程序里计算时,一直计算出错误的值,为1.6e9(错误值)。
怀疑是numpy矩阵type的原因,将上述代码修改为
np.array( [1, x, x ** 2, x ** 3, x ** 4, x ** 5 ], dtype = np.float64)
依然无效。
后怀疑是 python自带运算**的原因,改用math.pow程序似乎运行正常。
np.array( [1, x, x ** 2, x ** 3, x ** 4, math.pow(x, 5) ], dtype= np.float64)
这次真的是遇到最玄学的一个问题了......以后再也不用**, 神坑啊。到目前为止,引起这个问题的原因依然未知。这个问题如果不是有心debug根本发现不了。。。。
此外,每次写完代码,最好回头看一下,经常犯一些变量名搞错,搞混的问题。还有就是比如i,j,ti这类循环变量慎用,还是谨慎多敲敲字幕。