import numpy as np
p=np.poly1d([1,2,3])      //多项式的系数,p为多项式
//多项式可以做加减乘除
print(p+[1,2])      //表示多项式加上一个多项式系数为[1,2]
print(p+[-1,-2])   //减法
print(p*p)            //表示将多项式p*p  乘法
print(p/[1,2])       //表示多项式p除以多项式 ,系数为【1,2】

//声明多项式的几种方式
a=np.poly1d([1,2,3],True)    //多项式的根为【1,2,3】
b=n[.poly1d([1,2,3],True,'z')   //未知数为z

print(p.deriv())     //对多项式做微分得到的多项式
print(p.integ())     //对做积分后得到的多项式

//计算多项式的值
print(p[1,2,3])   //表示将x=1,x=2,x=3的多项式函数值计算出来,以数组形式的结果
//计算多项式的根
print(p.root())

其他操作:

p(0.5)表示当x = 0.5时,多项式的值为多少

p([1,2,3])表示当x = 1、2、3时,多项式的值分别为多少

p.r表示当多项式为 0 时,此等式的根

p.c表示生成多项式的系数数组

p.order表示返回最高项的次方数

p[1]表示返回第一项的系数

p.deriv([m])表示求导,参数m表示求几次导数

p.integ([m,k])表示积分,参数m表示积几次分,k表示积分后的常数项的值

多项式在某点上的值:np.polyval(p,x[n]),返回p多项式在横轴点上x[n]上的值

两个多项式做差运算: np.polysub(a,b)

 

import numpy as np
import matplotlib.pyplot as plt

xxx = np.arange(0, 1000)  # x值,此时表示弧度
yyy = np.sin(xxx*np.pi/180)  #函数值,转化成度

z1 = np.polyfit(xxx, yyy, 7) # 用7次多项式拟合,可改变多项式阶数;
print(z1)
p1 = np.poly1d(z1) #得到多项式系数,按照阶数从高到低排列
print(p1)  #显示多项式

print(p1(xxx))#求xxx对应的拟合函数得到的各个函数值

  上面arange得到的是一个数组,根据xxx数组计算的sin值也为一个数组,通过polyfit函数拟合的7次曲线是得到的一个数组,将数组交给poly1d函数得到一个拟合的多项式

图像绘制:

plt.plot(xxx, yyy, '*',label='original values')

     #plt.plot(x, y, ls="-", lw=2, label=“plot figure”),

    #x: x轴上的数值,y: y轴上的数值,ls:折线图的线条风格,lw:折线图的线条宽度,label:标记图内容的标签文本

plt.plot(xxx, yvals, 'r',label='polyfit values')
plt.xlabel('x axis')
plt.ylabel('y axis')
plt.legend(loc=4) # 指定legend在图中的位置,类似象限的位置
plt.title('polyfitting')
plt.show()

  

-------------------------------------------------------------------------------------------------------------- 

plt.legend(loc=4) # 指定legend在图中的位置,类似象限的位置

 loc:图例位置,可取(‘best’, ‘upper right’, ‘upper left’, ‘lower left’, ‘lower right’, ‘right’,

‘center left’, ‘center , right’, ‘lower center’, ‘upper center’, ‘center’) ;若是使用了bbox_to_anchor,则这项就无效了

------------------------------------------------------------------------------------------------------------------------------------------------------------

应用:进行最小二乘法的拟合

 

import numpy as np
import matplotlib.pyplot as plt
x=[1,2,3,4,5,6]
y=[2.6,3.4,4.7,5.5,6.47,7.8]
z1=np.polyfit(x,y,1)
p=np.poly1d(z1)
print(z1)
print(p)
plt.plot(x,y,'r')
z=p(x)
plt.plot(x,z,'b')