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

  • 相关阅读:
    C语言编译多文件
    vs(visual studio 2019)恢复默认设置
    everything 有文件搜不到
    potplayer显示右侧插入列表消息
    ubuntu 关机、重启命令
    post&get请求总结
    C# string格式的日期时间字符串转为DateTime类型
    css position: absolute、relative详解
    在C#用HttpWebRequest中发送GET/HTTP/HTTPS请求
    ASP.NET获取客户端及服务器的信息
  • 原文地址:https://www.cnblogs.com/LgyBean/p/6651340.html
Copyright © 2011-2022 走看看