python中polyfit 之poly1d与polyval的含义

# 拟合,自由度为3
z1 = np.polyfit(x, y, 3)

#3为多项式最高次幂,结果为多项式的各个系数
#最高次幂3,得到4个系数,从高次到低次排列
#最高次幂取几要视情况而定

 

# 生成多项式对象
p1 = np.poly1d(z1)

#将系数代入方程,得到函式p1
print(z1)#多项式系数
print(p1)#多项式方程

 

#计算多项式的函数值。返回在x处多项式的值,p为多项式系数,元素按多项式降幂排序

y=polyval(p,x)

 

范例:

-------------------------------np.poly1d

 

import numpy as np 
from scipy.optimize import leastsq
import pylab as pl
 
x = np.arange(1, 17, 1)
y = np.array([4.00, 6.40, 8.00, 8.80, 9.22, 9.50, 9.70, 9.86, 10.00, 10.20, 10.32, 10.42, 10.50, 10.55, 10.58, 10.60])
 
#第一个拟合,自由度为3
z1 = np.polyfit(x, y, 3)
# 生成多项式对象
p1 = np.poly1d(z1)
print(z1)
print(p1)
 
# 第二个拟合,自由度为6
z2 = np.polyfit(x, y, 6)
# 生成多项式对象
p2 = np.poly1d(z2)
print(z2)
print(p2) 
# 绘制曲线 # 原曲线
pl.plot(x, y, 'b^-', label='Origin Line')
pl.plot(x, p1(x), 'gv--', label='Poly Fitting Line(deg=3)')
pl.plot(x, p2(x), 'r*', label='Poly Fitting Line(deg=6)')
pl.axis([0, 18, 0, 18])
pl.legend()# Save 

pl.show()
# figurepl.savefig('scipy02.png', dpi=96)

 

 

--------------------------------------polyval

import numpy as np 
from scipy.optimize import leastsq
import pylab as pl
 
x = np.arange(1, 17, 1)
y = np.array([4.00, 6.40, 8.00, 8.80, 9.22, 9.50, 9.70, 9.86, 10.00, 10.20, 10.32, 10.42, 10.50, 10.55, 10.58, 10.60])
 
#第一个拟合,自由度为3
z1 = np.polyfit(x, y, 3)
# 生成多项式对象
p1 = np.poly1d(z1)
print(z1)
print(p1)
pl.plot(x, y, 'b^-', label='Origin Line')
#pl.plot(x, p1(x), 'gv--', label='Poly Fitting Line(deg=3)')
pl.plot(x, np.polyval(z1, x))
pl.show()

你可能感兴趣的:(python中polyfit 之poly1d与polyval的含义)