Python N次函数拟合
import numpy as np
from scipy.optimize import curve_fit# 多项式函数模型,N次
def polynomial(x, *args):n = len(args) - 1y = args[0]for i in range(1, n+1):y = y * x + args[i]return y# 真实数据点
x_data = np.linspace(0, 10, 100)
y_data = np.sin(x_data) + np.random.randn(len(x_data)) * 0.1 # 加入噪声# 初始参数
p0 = np.ones(10) # 假设拟合多项式的最高次幂是9# 拟合
popt, pcov = curve_fit(polynomial, x_data, y_data, p0=p0)# 拟合后的模型数据点
y_fit = polynomial(x_data, *popt)# 输出拟合参数
print(popt)# 绘图
import matplotlib.pyplot as plt
plt.plot(x_data, y_data, 'bo', label='Data')
plt.plot(x_data, y_fit, 'r-', label='Fit')
plt.legend()
plt.show()
在Python中,拟合函数通常指的是使用数据模型来拟合数据点。Python的科学计算库NumPy和SciPy提供了多种拟合模型。以下是使用Python中的scipy.optimize
模块的curve_fit
函数来拟合一个简单的线性模型的例子。
在这个例子中,首先定义了一个多项式函数模型polynomial
,它接受一个数组x
和任意个其他参数,代表多项式的系数。然后我们生成了一些用于拟合的数据点。初始参数p0
是一个包含多项式各个次幂的系数的数组,通常初始值应该选择接近实际值的数值。
curve_fit
函数用于拟合数据,它返回拟合参数popt
和协方差矩阵pcov
。拟合后的模型数据点y_fit
可以用于绘图展示实际数据及其拟合曲线。最后,我们打印出拟合参数并展示了拟合结果的绘图。