python拟合指数函数时,为什么拟合的非常差?

本人拟合用指数拟合曲线的时候,出闲了这种情况,求解啊,附上代码

img


from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']

=============================================================================

指数函数拟合

=============================================================================

def func(x, a, b):
return a*np.exp(-b * x)

if name=='main':
# data=pd.read_excel('data_p_2009-2018.xlsx')

ydata=np.loadtxt(r'D:\python_learning\memristor\He HD\set_H.txt')/100000000
xdata=np.arange(len(ydata))

#画出真实数据
plt.scatter(xdata,ydata,color='blue')


#指数函数拟合
popt, pcov = curve_fit(func, xdata, ydata)#popt数组中,三个值分别是待求参数a,b

#预测值
y_pred = [func(i, popt[0],popt[1]) for i in xdata]

#画图
plt.plot(xdata,y_pred,'r')

print('popt_p:',popt)

plt.show()

你给的一堆点明明是对数曲线,非要拟合成一条指数曲线,那能匹配才见鬼了
=-=-=-=-=-=-=
再仔细看看,小于15的部分符合指数规律,大于15的部分符合对数规律,你这是个正弦曲线吗

这图怎么看都不可能是指数曲线。你试试看下3次函数曲线效果,感觉应该是三及其以上的函数拟合会比较好点

我希望拟合出这样的图

img