我有一组数据点,如下所示:
x = [0, 2, 4, 7]
y = [100, 62, 60, 56]
我需要拟合一条指数曲线,它遵循以下方程:
C = C0 * e^(-kdecay*t)
其中C是y,C0是时间点0处y的值,t是x
目前,我有代码来绘制时间点,但我需要添加指数曲线
plt.plot(x,y,color='indianred', ls='none', linewidth=2)
plt.errorbar(x,y,yerr,marker='o', color='indianred', ls='none', ecolor='k')
#set y axis limits
plt.ylim((0,120))
plt.xlabel("ActD (h)", fontsize=14)
plt.ylabel("mRNA (%)", fontsize=14)
非常感谢你的帮助
编辑: 我在试这个
from scipy.optimize import curve_fit
def func(C, kdecay, x):
y= C*np.exp(-kdecay*x)
return y
popt, _ = curve_fit(func, x, y)
C, kdecay = pop
我可能错过了这一部分,因为它的形状与我的函数不同:
print('y=%.5f*x+%.5f'%(C,kdecay))
我对Python非常陌生,如果你能给我一个清晰的答案,而不仅仅是建议一个库,那将非常有帮助
如果您熟悉最小二乘法,可以通过取对数将方程转换为LS的有效形式:
变成
就对数而言,这是一个简单的
t
线性方程幸运的是,
scipy
可以为您做到这一点:相关问题 更多 >
编程相关推荐