3
我想要適合這個x數據:[0.4,0.165,0.165,0.585,0.585],這個y數據:[.45,.22,.63,.22,。 63],而這個z數據:[1,0.99,0.98,0.97,0.96]爲拋物面。我正在使用scipy的curve_fit工具。這裏是我的代碼:拋物面(3D拋物線)表面擬合python
doex = [0.4,0.165,0.165,0.585,0.585]
doey = [.45, .22, .63, .22, .63]
doez = np.array([1, .99, .98,.97,.96])
def paraBolEqn(data,a,b,c,d):
if b < .16 or b > .58 or c < .22 or c >.63:
return 1e6
else:
return ((data[0,:]-b)**2/(a**2)+(data[1,:]-c)**2/(a**2))
data = np.vstack((doex,doey))
zdata = doez
opt.curve_fit(paraBolEqn,data,zdata)
我試圖居中0.16和1.58(X軸)和0.22和1.63(Y軸)之間的拋物面。我通過返回一個很大的值,如果b或c在這個範圍之外做到這一點。
不幸的是,合適的是合適的,我的popt值都是1,我的pcov是inf。
任何幫助將是偉大的。
謝謝