zoukankan      html  css  js  c++  java
  • 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()计算多项式函数的值,并计算与目标函数的差的绝对值。

  • 相关阅读:
    Kinect 开发 —— 硬件设备解剖
    Kinect 开发 —— 引言
    (转)OpenCV 基本知识框架
    OpenCV —— 摄像机模型与标定
    OpenCV —— 跟踪与运动
    OpenCV —— 图像局部与分割(二)
    OpenCV —— 图像局部与部分分割(一)
    OpenCV —— 轮廓
    OpenCV —— 直方图与匹配
    OpenCV —— 图像变换
  • 原文地址:https://www.cnblogs.com/LgyBean/p/6651340.html
Copyright © 2011-2022 走看看