我們都知道,形如f(x)=an·xn+an-1·x(n-1)+…+a2·x^2+a1·x+a0的函數(shù)就叫多項式函數(shù)槽惫。那么周叮,對于多項式f(x) = x^2+2x+3,怎么用numpy的函數(shù)來創(chuàng)建它呢界斜?
import numpy as np
import matplotlib.pyplot as plt
# 首先多項式的系數(shù)表示為一維數(shù)組
a = np.array([1,2,3])
# 然后通過函數(shù)ploy1d創(chuàng)建多項式對象仿耽,此對象可以像函數(shù)一樣調(diào)用,它返回多項式函數(shù)的值
func = np.poly1d(a)
#使用linspace函數(shù)創(chuàng)建x軸的數(shù)值各薇,在-10和10之間產(chǎn)生30個均勻分布的值
x = np.linspace(-10,10,30)
y = func(x) # 計算多項式的值
plt.plot(x,y) #調(diào)用plot函數(shù)
plt.xlabel('x') # 添加x軸標(biāo)簽 : xlabel
plt.ylabel('y(x)') # 添加y軸標(biāo)簽 : ylabel
plt.show()
繪制的多項式函數(shù)如下圖所示:
image.png
繪制多項式函數(shù)及其導(dǎo)函數(shù)
>>> 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返回多項式的一階導(dǎo)函數(shù)
>>> 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返回多項式的導(dǎo)函數(shù),其中m=1表示返回的是一階導(dǎo)函數(shù)峭判,那么m=2自然就是二階導(dǎo)函數(shù)啦开缎,以此類推。
再補(bǔ)充點林螃,若是用紅色三角形繪制奕删,則參數(shù)為'r^',紅色實線為'r-'疗认。
上述的多項式為f(x) = x^3+ 2x^2+ 3x+4完残,它的一階導(dǎo)函數(shù)為3x^2+4x+3。
image.png
linspace函數(shù):
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
在指定的間隔內(nèi)返回均勻間隔的數(shù)字横漏。返回num個(默認(rèn)為50)均勻分布的樣本谨设,在[start, stop]區(qū)間。
poly1d函數(shù)
numpy.poly1d(c_or_r, r=False, variable=None)
參數(shù)解釋:
c_or_r :
表示多項式的系數(shù)缎浇,它的冪是遞減的扎拣。如果第二個參數(shù)為True,則表示為多項式的根(當(dāng)多項式的值為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: 默認(rèn)為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
當(dāng)x=1時計算多項式的值
>>> p(1)
0
多項式的根尊蚁,結(jié)果為3,2侣夷,1
>>> p.r
array([ 3., 2., 1.])
顯示系數(shù)
>>> p.c
array([ 1, -6, 11, -6])
多項式可以進(jìn)行加法,減法仑乌,乘法以及除法(返回商和余數(shù))百拓。以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]) # 各個系數(shù)的平方
改變多項式變量的名稱晰甚,將x改為z衙传。
>>> p = np.poly1d([1,2,2], variable='z')
>>> print p
2
1 z + 2 z + 2
當(dāng)poly1d函數(shù)的第二個參數(shù)為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