Numpy多项式函数

多项式函数是变量的整数次幂与系数的乘积之和,可以用下面的数学公式表示:

f(x) = a[n]*x^n + a[n-1]*x^(n-1) + … + a[2]*x^2 + a[1]*x + a[0]

    由于多项式函数只包含加法和乘法运算,因此它很容易计算,并且可以用于计算其他数学函数的近似值。多项式函数的应用非常广泛,例如在嵌入式系统中经常会用它计算正弦、余弦等函数。在Numpy中,多项式函数的系数可以用一维数组表示。
例:f(x)=x^3 - 2x + 1可以用下面数组表示,其中a[0]是最高次的系数,a[-1]是常数项,注意x^2的系数为0。

 1 #-*- coding:utf-8 -*-
 2 
 3 '''
 4 导入函数库
 5 '''
 6 import numpy as np
 7 
 8 #f(x) = x^3 -2x + 1
 9 a = np.array([1,0,-2,1])
10 #调用poly1d(a)将系数转换为一元多项式
11 f = np.poly1d(a)
12 print(type(f))
13 print('传入值得到的具体结果',f([1,2,3,4]))
14 #多项式的加法
15 newp = f + [1,1,3]
16 print(newp)

多项式对象的deriv()和integ()方法分别计算多项式函数的微分和积分

1 #求微分和积分
2 f.deriv()
3 f.integ()

多项式的根可以用roots()函数来计算
而poly()函数可以将根转换回多项式的系数

1 roots = np.roots(f)
2 np.poly(roots)

polyfit()函数可以对一组数据使用多项式函数进行拟合,找到和这组数据最接近的多项式的系数。我们来计算-π/2~π/2区间与sin(x)函数最接近的多项式的系数:

1 x = np.linspace(-np.pi/2,np.pi/2, 1000)
2 y = np.sin(x)
3 for arg in [3,5,7]:
4     print(np.polyfit(x, y, arg))

第一步:通过linespace()将-π/2~π/2区间分为1000-1份。
第二步:计算拟合目标函数sin(x)的值。
第三步:将目标函数的数组传递给polyfit()进行拟合,第三个参数arg为多项式函数的最高阶数。polyfit()所得到的多项式和目标函数在给定的1000个点之间的误差最小,polyfit()返回多项式的系数数组。
第四步:使用polyval()计算多项式函数的值,并计算与目标函数的差的绝对值。

 

posted @ 2017-03-31 14:47  李小新  阅读(4138)  评论(0编辑  收藏  举报