在Python-NumPy中获取切比雪夫数列对数据的最小二乘法拟合

在Python-NumPy中获取切比雪夫数列对数据的最小二乘法拟合

在这篇文章中,我们将介绍如何在Python中获得切比雪夫序列对数据的最小二乘拟合。

chebyshev.chebfit 方法

NumPy库为我们提供了numpy.polynomial.chebyshev.chebfit()方法,以获得python中Chebyshev数列对数据的最小平方拟合。该方法返回切比雪夫数列的系数,该数列是对数据值y在位置x处的最佳拟合(最小平方拟合),如果y是一维的,返回的系数也是一维的。如果y是二维的,则进行多次拟合,每一列y都要进行拟合,系数被放在二维返回的相应列中。

拟合的多项式的形式为:。

p(x) = C0+ C1.T1(x)+........+Cn.Tn(x)

语法: polynomial.chebyshev.chebfit(x, y, deg, full=False)

参数:

  • x:x坐标点
  • y:y坐标点
  • deg: 拟合多项式的度数。
  • full: bool, (可选) 开关决定返回值的性质。当它为False(默认)时,只返回系数。

返回:最小二乘法拟合中的系数矩阵。

[residuals, rank, singular_values, rcond]:

如果full == True,就会返回这些值。

  • residuals–最小二乘法拟合的平方残差总和。
  • rank – 按比例的范德蒙德矩阵的数字等级。
  • singular_values – 缩放的范德蒙德矩阵的奇异值。
  • rcond – rcond的值。

示例 1:

在这里,我们将使用np.linspace()为x坐标和y坐标函数创建一个NumPy数组。之后用numpy.polynomial.chebyshev.chebfit()方法来寻找Chebyshev序列的最小二乘拟合。这个方法只有在完整参数设置为true时才会返回系数和统计量。统计量包含残差、等级、奇异值和rcond。

# import packages
import numpy as np
from numpy.polynomial import chebyshev as C
  
# X- coordinate
x = np.linspace(0, 1, 25)
print(x)
  
# y - coordinate computed from x-coordinate
y = x**3 - x**2 + np.random.randn(len(x))
print(y)
  
# least square fit of chebyshev series
c, stats = C.chebfit(x, y, 2, full=True)
  
print('coefficients are :'+str(c))
print('residuals '+str(stats[0]))
print('rank :'+str(stats[1]))
print('singular_values :'+str(stats[2]))
print('rcond: '+str(stats[3]))

输出:

[0. 0.04166667 0.08333333 0.125 0.16666667 0.20833333 

0.25 0.29166667 0.33333333 0.375 0.41666667 0.45833333 

0.5 0.54166667 0.58333333 0.625 0.66666667 0.70833333 

0.75 0.79166667 0.83333333 0.875 0.91666667 0.95833333 

1\. ] 

[ 0.37409044 -0.08380424 -0.86646175 0.03529103 -0.51223158 -0.82765727 

-1.30289843 0.06483149 0.00468366 -0.94344187 0.79565795 0.4189812 

1.11198273 -1.82178502 -1.34997261 -1.4128537 -0.07464673 0.15374686 

0.48787202 -0.46500345 -0.8149045 1.49261006 -1.94050386 -0.41054362 

0.20983018] 

coefficients are :[ 0.17746311 -0.73510349 0.36625023] 

residuals [18.52977625] 

rank :3 

singular_values :[1.39668318 1.02095653 0.08320976] 

rcond: 5.551115123125783e-15 

示例 2:

在这个例子中,参数full被设置为false。当它为false时,不返回统计数据,只返回系数。

# import packages
import numpy as np
from numpy.polynomial import chebyshev as C
  
# X- coordinate
x = np.linspace(0, 1, 25)
print(x)
  
# y - coordinate computed from x-coordinate
y = x**3 - x**2 + np.random.randn(len(x))
print(y)
  
# least square fit of chebyshev series
c = C.chebfit(x, y, 2, full=False)
  
print('coefficients are :'+str(c))

输出:

[0. 0.04166667 0.08333333 0.125 0.16666667 0.20833333 

0.25 0.29166667 0.33333333 0.375 0.41666667 0.45833333 

0.5 0.54166667 0.58333333 0.625 0.66666667 0.70833333 

0.75 0.79166667 0.83333333 0.875 0.91666667 0.95833333 

1\. ] 

[ 1.43124921 0.704068 0.87329216 -1.89762515 -1.00132009 -0.07043263 

-0.52919039 -0.35211855 0.16805591 0.21070363 -0.54878338 -0.05096546 

-1.86555805 -0.35063789 -2.46754197 -0.7162462 0.21864938 -0.25926418 

-1.39237896 1.49328312 0.04526993 -0.76624966 -1.36429022 -0.16418669 

-1.05438407] 

coefficients are :[ 1.94042826 -3.72505731 1.45929506] 

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

Numpy 多项式