我们都知道,形如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
网友评论