【发布时间】:2019-08-16 13:14:37
【问题描述】:
我正在尝试拟合余弦曲线,但我收到关于数组形状的错误。仅当我将 np.cos(phi - delta) 更改为 np.cos(2*phi - delta) 时才会出现该错误。
from scipy.optimize import fmin
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import numpy as np
import math
axes = plt.gca()
axes.set_ylim([-5,0])
#bond CHARMM
def func(phi, kphi, delta):
return kphi * (1 + np.cos(2*phi - delta))
class Dihedral:
def __init__(self):
self.masses = {'H': 1, 'D': 2, 'C': 12, 'O': 16}
def Dihedral_fit (self,x,y):
self.popt, pcov = curve_fit(func, x, y, p0 =(0,2.3),method='trf')
print "Cosine fit"
print self.popt
plt.plot(xdata, ydata, 'b-', label='data')
diff=sum(abs(func(x,self.popt[0],self.popt[1])-y))/len(x)
print "AAE is"
print diff
plt.plot(xdata, func(xdata, *self.popt), 'r-',label='Cos: kphi=%5.3f, delta=%5.3f' % tuple(self.popt))
if __name__ == "__main__":
xdata = [0,15,30,45,60,75,90,105]
ydata = [-4.24,-3.82,-3.08,-2.07,-1.04,-0.30,0,-30]
x = np.array(xdata)
y = np.array(ydata)
Harm=Dihedral()
Harm.Dihedral_fit(x,y)
plt.legend()
plt.show()
任何帮助将不胜感激
【问题讨论】:
-
您应该显示错误。其他人在没有它的情况下发现了问题,但完整的错误会使问题对我们其他人更加明显。
标签: python numpy curve-fitting