import numpy as np
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
# 定义要拟合的函数形式,例如指数衰减函数
def func(x, a, b, c):
return a * np.exp(-b * x) + c
# 生成一些示例数据,包含噪声
x_data = np.linspace(0, 4, 50)
y = func(x_data, 2.5, 1.3, 0.5)
np.random.seed(1729)
y_noise = 0.2 * np.random.normal(size=x_data.size)
y_data = y + y_noise
# 使用curve_fit进行拟合
popt, pcov = curve_fit(func, x_data, y_data)
# popt是拟合得到的最佳参数,pcov是协方差矩阵
a_opt, b_opt, c_opt = popt
# 打印拟合结果
print(f"拟合得到的参数: a={a_opt}, b={b_opt}, c={c_opt}")
# 绘制原始数据和拟合曲线
plt.figure()
plt.scatter(x_data, y_data, label='Data')
plt.plot(x_data, func(x_data, *popt), 'r-', label='Fitted Curve')
plt.legend()
plt.show()
numpy
来处理数据,scipy.optimize.curve_fit
来进行曲线拟合,以及matplotlib.pyplot
来绘制图表。func(x, a, b, c)
是我们要拟合的函数形式,这里是一个指数衰减函数。x_data
是自变量数据,y_data
是带有噪声的目标数据。curve_fit
函数用于拟合数据,返回最佳参数popt
和协方差矩阵pcov
。如果你需要更多帮助或有其他问题,请随时告诉我!
上一篇:python flatten
下一篇:python for excel
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站