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()计算多项式函数的值,并计算与目标函数的差的绝对值。

  • 相关阅读:
    一条软件缺陷(或者叫 Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?
    测试人员在软件开发过程中的任务
    HDOJ1754(线段树)
    HDOJ1166(线段树,树状数组)
    分治法
    POJ1840(哈希)
    HOOJ1290 2050(递推)
    POJ1035(字符串)
    HDOJ1800(哈希)
    POJ2299(归并排序)
  • 原文地址:https://www.cnblogs.com/LgyBean/p/6651340.html
Copyright © 2011-2022 走看看