【发布时间】:2023-01-25 02:00:04
【问题描述】:
现在我想将双曲余弦曲线的一个凸起拟合到以下 X 和 Y 数据中:
xData = np.array([1.7, 8.8, 15, 25, 35, 45, 54.8, 60, 64.7, 70])
yData = np.array([30, 20, 13.2, 6.2, 3.9, 5.2, 10, 14.8, 20, 27.5])
这是我到目前为止所做的,但我没有得到预期的结果,我也不知道我做错了什么:
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
import scipy.interpolate as inp
xData = np.array([1.7, 8.8, 15, 25, 35, 45, 54.8, 60, 64.7, 70])
yData = np.array([30, 20, 13.2, 6.2, 3.9, 5.2, 10, 14.8, 20, 27.5])
def model_hcosine(x, a, b, c):
return a * np.cosh(x/b) + c
poptcosh, pcovcosh = curve_fit(model_hcosine, xData, yData, p0=[min(yData), max(xData), max(yData)])
aapopt, bbopt, cccopt = poptcosh
xCoshModel = np.linspace(min(xData), max(xData), 100)
yCoshModel = model_hcosine(xCoshModel, aapopt, bbopt, cccopt)
plt.scatter(xData, yData)
plt.plot(xCoshModel, yCoshModel, 'b-')
plt.show()
【问题讨论】:
-
您的模型中需要一个翻译参数。您的数据最小值出现在 x=35,但您的模型只允许最小值出现在 x=0。
标签: python numpy scipy curve-fitting hyperbolic