python中polyfit、poly1d函数

python中polyfit、poly1d函数

一、polyfit函数

函数原型

np.polyfit(x,y,num)

可以对一组数据进行多项式拟合

下面举个例子说明:
其中:np.polyval(p,x)计算多项式的函数值。返回在x处多项式的值,p为多项式系数

import matplotlib.pyplot as plt
import numpy as np
 
# 构建噪声数据xu,yu
xu = np.random.rand(50) * 4 * np.pi - 2 * np.pi
def f(x):
    return np.sin(x) + 0.5 * x
yu = f(xu)
 
plt.figure(figsize=(8, 4))
# 用噪声数据xu,yu,得到拟合多项式系数,自由度为5
reg = np.polyfit(xu, yu, 5)
# 计算多项式的函数值。返回在x处多项式的值,p为多项式系数,元素按多项式降幂排序
ry = np.polyval(reg, xu)
# 原先函数绘制
plt.plot(xu, yu, 'bo', label='f(x)')#蓝色虚线
# 拟合绘制
plt.plot(xu, ry, 'r.', label='regression')#红色点状
plt.legend(loc=0)
plt.show()

输出结果:
在这里插入图片描述

二、poly1d函数

np.poly1d()此函数有3个参数
注意:下面红色代表输出

1.参数1:系数向量

import numpy as np

a= np.array([2,1,1])
f = np.poly1d(a)
print(f)

2 x2 + 1 x + 1

2.参数2:bool

则表示把数组中的值作为根,然后反推多项式,例如:

q = np.poly1d([2,3,5],True)
print(q)

(x - 2)(x - 3)(x - 5) = x^3 - 10x^2 + 31x -30

3.参数3:字母

variable=‘z’表示改变未知数的字母,例如:

q = np.poly1d([2,3,5],True,varibale = 'z')
print(q)

(z - 2)(z - 3)(z - 5) = z^3 - 10z^2 + 31z -30

计算多项式的值:代入x

print(f([1,2,3,4]))#可以多个运算,x=1\2\3\4的时候

[ 4 11 22 37]

三、综合应用例子

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)

在这里插入图片描述

发布了465 篇原创文章 · 获赞 694 · 访问量 96万+

猜你喜欢

转载自blog.csdn.net/mao_hui_fei/article/details/103821601