美文网首页
绘制多项式函数

绘制多项式函数

作者: 诺馨 | 来源:发表于2018-01-04 18:20 被阅读198次

    我们都知道,形如f(x)=an·xn+an-1·x(n-1)+…+a2·x^2+a1·x+a0的函数就叫多项式函数。那么,对于多项式f(x) = x^2+2x+3,怎么用numpy的函数来创建它呢?

    import numpy as np
    import matplotlib.pyplot as plt
    
    # 首先多项式的系数表示为一维数组
    a = np.array([1,2,3])
    
    # 然后通过函数ploy1d创建多项式对象,此对象可以像函数一样调用,它返回多项式函数的值
    func = np.poly1d(a)
    
    #使用linspace函数创建x轴的数值,在-10和10之间产生30个均匀分布的值
    x = np.linspace(-10,10,30)
    y = func(x)    # 计算多项式的值
    plt.plot(x,y)   #调用plot函数
    plt.xlabel('x')     # 添加x轴标签 :  xlabel
    plt.ylabel('y(x)')    # 添加y轴标签  :  ylabel
    plt.show()
    
    

    绘制的多项式函数如下图所示:

    image.png
    绘制多项式函数及其导函数
    >>> import numpy as np
    >>> import matplotlib.pyplot as plt
    >>> func = np.poly1d(np.array([1,2,3,4]))
    >>> func1 = func.deriv(m=1)   # numpy.poly1d.deriv返回多项式的一阶导函数
    >>> x = np.linspace(-10,10,30)
    >>> y = func(x)
    >>> y1 = func1(x)
    >>> plt.plot(x,y,'ro',x,y1,'g--')   #ro表示红色圆形,g--表示绿色虚线
    [<matplotlib.lines.Line2D object at 0x1115d9590>, <matplotlib.lines.Line2D object at 0x1115d9810>]
    >>> plt.xlabel('x')
    <matplotlib.text.Text object at 0x10eb7b5d0>
    >>> plt.ylabel('y')
    <matplotlib.text.Text object at 0x10eb98550>
    >>> plt.show()
    

    numpy.poly1d.deriv返回多项式的导函数,其中m=1表示返回的是一阶导函数,那么m=2自然就是二阶导函数啦,以此类推。

    再补充点,若是用红色三角形绘制,则参数为'r^',红色实线为'r-'。

    上述的多项式为f(x) = x^3+ 2x^2+ 3x+4,它的一阶导函数为3x^2+4x+3。

    image.png

    linspace函数:

    numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
    在指定的间隔内返回均匀间隔的数字。返回num个(默认为50)均匀分布的样本,在[start, stop]区间。

    poly1d函数

    numpy.poly1d(c_or_r, r=False, variable=None)

    参数解释
    c_or_r :
    表示多项式的系数,它的幂是递减的。如果第二个参数为True,则表示为多项式的根(当多项式的值为0时的解) 比如poly1d([1,2,3])返回的是x^2 +2x+3,而poly1d([1,2,3],True)返回(x-1)(x-2)(x-3)=x^3- 6x^2+11x-6
    r: 默认为False
    variable: 字符串,可选

    Examples:
    以多项式x^3- 6x^2+11x-6例

    >>> p = np.poly1d([1,-6,11,-6])
    >>> print p
       3     2
    1 x - 6 x + 11 x - 6
    

    当x=1时计算多项式的值

    >>> p(1)
    0
    

    多项式的根,结果为3,2,1

    >>> p.r
    array([ 3.,  2.,  1.])
    

    显示系数

    >>> p.c
    array([ 1, -6, 11, -6])
    

    多项式可以进行加法,减法,乘法以及除法(返回商和余数)。以x^2+2x+2为例。

    >>> p + 2
    poly1d([1, 2, 4])
    >>> p*p
    poly1d([1, 4, 8, 8, 4])
    >>> p*2
    poly1d([2, 4, 4])
    >>> (p*2+4)/p
    (poly1d([ 2.]), poly1d([ 4.]))
    >>> p**2
    poly1d([1, 4, 8, 8, 4])
    >>> np.square(p)
    array([1, 4, 4])   # 各个系数的平方
    

    改变多项式变量的名称,将x改为z。

    >>> p = np.poly1d([1,2,2], variable='z')
    >>> print p
       2
    1 z + 2 z + 2
    

    当poly1d函数的第二个参数为True时,多项式为(x-1)(x-2),即x^2-3x+2。

    >>> np.poly1d([1,2],True)
    poly1d([ 1., -3.,  2.])
    >>> print (np.poly1d([1,2],True))  
       2
    1 x - 3 x + 2
    

    相关文章

      网友评论

          本文标题:绘制多项式函数

          本文链接:https://www.haomeiwen.com/subject/rwnrnxtx.html