我有一个数组,它有值,如果精确计算的话:[3.056565 3.924560],但是在python中它打印四舍五入的数字,数组是[3.06,3.93]。数组是用来计算其他内容的,结果与预期不同。我怎样才能使数组停止舍入呢
下面是您可以看到数组没有精确计算的代码:
import datetime
import math
import numpy as np
def numGradient(f, x, h):
n = len(x)
g = [0]*n
g = np.array(g)
for i in range(n):
e = [0]*n
e[i] = 1
e=np.array(e)
g[i] = (f(x+e*h)-f(x-e*h))//(2*h)
return(g)
def myFun(x) :
return ( 0.6 + ((math.sin(x[0]**2-x[1]**2))**2-0.5)/((1+0.001*(x[0]**2+x[1]**2))**2) )
x_old=(3,4)
xthis = x_old - 0.01*numGradient(myFun, x_old, 10**(-6))
print(xthis)
你的代码有几个问题。它可能不会计算出你所期望的
首先,这是初始化NumPy数组的错误方法
替换为
第二,对
e
执行相同的操作最重要的是
与
这毕竟是浮点除法。而
//
是python3中所谓的整数除法更改后,您将获得
这可能是你应该得到的
以下是更改后的完整代码:
相关问题 更多 >
编程相关推荐