多项式拟合

numpy.polyfit = polyfit(x, y, deg, rcond=None, full=False, w=None, cov=False)

Least squares polynomial fit.

    • x: 类数组,形状(M,),表示M个采样点的x坐标
    • y: 类似array_,形状为(M,)或(M,K), 表示采样点的y坐标。通过传递每列包含一个数据集的2D数组,可以一次拟合多个共享相同x坐标的采样点数据集
    • deg: 度:整数, 表示拟合多项式的度
    • full: 开关确定返回值的性质。当它为 False 时 ( default) 仅返回系数,当 True 诊断时 还会返回来自奇异值分解的信息。
    • w: 应用于采样点的 y 坐标的权重。为 高斯不确定性,使用 1/sigma(而不是 1/sigma**2)。
    • cov: 布尔值,可选。返回估算值和估算值的协方差矩阵。如果full为True,则不返回cov
import numpy as np

x = np.array([0.0, 1.0, 2.0, 3.0,  4.0,  5.0])
y = np.array([0.0, 0.8, 0.9, 0.1, - 0.8, - 1.0])
z = np.polyfit(x, y, 3)
print(z)
>>>[ 0.08703704 -0.81349206 1.69312169 -0.03968254]

即: 0.08703704为最高次x^3的系数,-0.81349206为x^2的系数,1.69312169为x的系数,-0.03968254为常数项

曲线拟合

scipy.optimize.curve_fit = curve_fit(f, xdata, ydata, p0=None, sigma=None, absolute_sigma=False, check_finite=True, bounds=(-inf, inf), method=None, jac=None, **kwargs)

  • f : function
    • 用来拟合数据的函数。函数的第一个参数是自变量,后面的参数是拟合的参数。
  • xdata : array_like
    • 用于拟合的自变量数据。
  • ydata : array_like
    • 用于拟合的因变量数据。
  • p0 : array_like, optional
    • 用于初始化拟合参数的数组。如果没有提供,则使用默认值。
  • sigma : None or array_like, optional
    • 用于加权拟合的标准偏差。如果为None,则所有权重都设为1。
  • absolute_sigma : bool, optional
    • 如果为True,并且sigma被传入,则估计的协方差将乘以均方根残差,对应于传入sigma估计的加权协方差。如果为False,则只是估计的协方差。
  • check_finite : bool, optional
    • 如果为True,则检查fjac的返回值是否包含无穷或NaN。如果包含,则抛出ValueError。
  • bounds : 2-tuple of array_like, optional
    • 每个参数的最小和最大允许值。
  • method : str or None, optional
    • 用于最小化的算法名称。如果为None,则使用默认算法。
  • jac : {callable, ‘2-point’, ‘3-point’, ‘cs’, None}, optional
    • 用于计算雅可比矩阵的函数。
  • **kwargs
    • 其他传递给最小化算法的参数。

返回值popt是拟合得到的参数,pcov是拟合参数的协方差矩阵。

t = np.array(list(map(int, x_grow_data_dict.keys())))
v = np.array(list(map(float, x_grow_data_dict.values()))
def custom_function(x, r):
return np.e**(r*x)/(1-(1 / 2400)*(1 - np.e**(r*x)))

popt, pcov = curve_fit(custom_function, t, v)