首页 > 解决方案 > 如何根据给定的方程对数据进行适当的拟合?

问题描述

我正在为一位使用 Python 的老师提供帮助,他要求我根据以下等式调整收集的数据:

f(t) = A*exp(−t/τ ) + C

具有 A 和 C 常数。这是为了了解粒子的半衰期而开发的:μ子(τ生命时间)

我的老师,对于指数函数,用QtiPlot软件对数据做了分析,得到如下图imagen。达到粒子生命周期为 2.1 微秒,使用以下数据集,是这些:数据

我从来没有真正对python中的函数做过任何事情,我想做同样的直方图,曲线线调整到函数并找到'τ'寿命

x_data = genfromtxt('data.csv', delimiter=',')
y_data = np.arange(1,len(data)+1,1)
t = np.arange(1,len(data),1)
C = 0.9 #for example, since I don't know how the teacher chooses


plt.hist(x_data, bins=200)
plt.gca().set(title='Muon', ylabel='ene');



def test_func(x, y, t, C):
    fun = lambda x, y, t, C: x*np.exp((-y)/(T))+C
    return fun

如何执行该功能并将其显示在直方图旁边的图表中?

标签: pythoncurve-fittingdata-fitting

解决方案


更新

这是我目前能得到的

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

t = np.arange(1,len(x_data)+1,1)
C = 1
x_data = genfromtxt('data.csv', delimiter=',')

def func(x,y):
    return x*np.exp((-y)/(t))+c

coeff, _ = curve_fit(func,x_data,t)
print(f'{coeff}')
plt.hist(x_data, bins=200)
plt.plot(x_data,func(x_data,t))
plt.show()

结果图

如何获得正确的调整线?


推荐阅读