Jac*_*.O. 4 python curve-fitting scipy
我想使用 来拟合一些数据点scipy.optimize.curve_fit。不幸的是,我的身体不稳定,我不知道为什么。
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit
M = np.array([730,910,1066,1088,1150], dtype=float)
V = np.array([95.71581923, 146.18564513, 164.46723727, 288.49796413, 370.98703941], dtype=float)
def func(x, a, b, c):
return a * np.exp(b * x) + c
popt, pcov = curve_fit(func, M, V, [0,0,1], maxfev=100000000)
print(*popt)
fig, ax = plt.subplots()
fig.dpi = 80
ax.plot(M, V, 'go', label='data')
ax.plot(M, func(M, *popt), '-', label='fit')
plt.xlabel("M")
plt.ylabel("V")
plt.grid()
plt.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)
我实际上期望某种平滑的曲线。有人可以解释我在这里做错了什么吗?
您仅在调用中绘制与原始数据相同的 x 点:
ax.plot(M, V, 'go', label='data')
ax.plot(M, func(M, *popt), '-', label='fit')
Run Code Online (Sandbox Code Playgroud)
要解决此问题,您可以使用更广泛的范围 - 这里我们使用 700 到 1200 之间的所有值:
toplot = np.arange(700,1200)
ax.plot(toplot, func(toplot, *popt), '-', label='fit')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1622 次 |
| 最近记录: |