python拟合双峰正态函数
时间: 2023-11-03 11:01:22 浏览: 254
python之拟合的实现
要在Python中拟合双峰正态函数,你可以使用SciPy库中的optimize.curve_fit函数。首先,你需要定义一个双峰正态函数,然后将该函数与你的数据进行拟合。
以下是一个示例代码,展示了如何拟合双峰正态函数:
```
import numpy as np
import matplotlib.pyplot as plt
from scipy import optimize as op
# 定义双峰正态函数
def bimodal_normal(x, A1, mu1, sigma1, A2, mu2, sigma2):
return A1 * np.exp(-(x - mu1)**2 / (2 * sigma1**2)) + A2 * np.exp(-(x - mu2)**2 / (2 * sigma2**2))
# 定义需要拟合的数据
x = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
y = np.array([2.83, 9.53, 14.52, 21.57, 38.26, 53.92, 73.15, 101.56, 129.54, 169.75, 207.59])
# 进行拟合
initial_guess = [1, 5, 1, 1, 7, 1] # 初始猜测值
params, params_covariance = op.curve_fit(bimodal_normal, x, y, p0=initial_guess)
# 绘制拟合曲线
x_fit = np.linspace(0, 10, 100)
y_fit = bimodal_normal(x_fit, *params)
plt.scatter(x, y, label='Data')
plt.plot(x_fit, y_fit, label='Fitted Curve')
plt.legend()
plt.show()
```
该代码中定义了一个双峰正态函数bimodal_normal,该函数包含6个参数:A1、mu1、sigma1、A2、mu2、sigma2。然后使用optimize.curve_fit函数进行拟合,其中p0参数是初始猜测值。
你可以根据自己的数据和需求调整函数和拟合过程中的参数。希望这可以帮助到你。
阅读全文