私は、正確に計算された場合、値を持つ配列を持っています:[3.056565 3.924560]しかし、pythonでは丸められた数字を出力し、配列は[3.06,3.93]です。配列は他の何かを計算するために使用され、結果は予想と異なります。その配列を丸めを停止するにはどうすればよいですか?ここでnumpy配列の値をより正確に設定する
では、その配列が正確calcualtedされていない見ることができるコードです:
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)
。 (印字の丸めは数字自体には影響しません)。より簡潔なコードスニペットを提供して、あなたが求めている振る舞いを示すことができますか?期待され、得られた回答も役立ちます。 –
したがって、基本的には、この式になります: 'x_old- a * numGradient(f、x_old、10 **( - 6))'、結果は[3.06 3.93] 'で、' 3.056565 3.924560' (例えばRを使用して)外部Pythonを計算する –
おそらく、より簡単なコードでエフェクトを再現する必要があります。このような長いスニペットをデバッグすることは非常に困難です。この不一致がなぜ起こるのかは分かりませんが、単純な例はありません。 –