# 拟合模型并输出参数
popt, pcov = curve_fit(fun_exp, X, Y, maxfev=10000) # curve_fit 函数要求输入的 X 必须是包含数值型元素的 NumPy 数组
print(popt)
print(fun_exp(X.T[1], *popt), Y[1])
RuntimeWarning: overflow encountered in exp
Y = a * np.exp(k*x) + b
解决曲线拟合问题,exp中遇到溢出的问题。
根据我搜索到的结果,这个问题可能是由于您的函数中的参数a或b过大或过小,导致np.exp的计算结果超出了浮点数的表示范围123。您可以尝试以下几种方法来避免这个问题:
- 调整您的初始参数p0的值,使其更接近真实值23。例如,您可以使用p0= (3.2e6, -4000)或p0= (15, -4000)作为初始值3。
- 使用np.longdouble或np.float64作为您的数据类型,以提高精度4。例如,您可以使用array_R1_fit = np.asarray(list_R1_fit, dtype=np.longdouble)和tau_array =np.asarray(tau_list, dtype=np.longdouble)来创建数组4。
- 在curve_fit函数中设置bounds参数,限制参数a或b的取值范围5。例如,您可以使用bounds= ( [1, -1e100, 1], [1e100, 1, 1e100])来设置边界5。