np.poly1d()此函數有3個參數
1.參數1:系數向量
import numpy as np
a= np.array([2,1,1])
f = np.poly1d(a)
print(f)
#2 x2 + 1 x + 1
2.參數2:bool
則表示把數組中的值作為根,然后反推多項式,例如:
q = np.poly1d([2,3,5],True)
print(q)
#(x - 2)*(x - 3)*(x - 5) = x^3 - 10x^2 + 31x -30
3.參數3:字母
variable=‘z’表示改變未知數的字母,例如:
q = np.poly1d([2,3,5],True,varibale = 'z')
print(q)
# (z - 2)*(z - 3)*(z - 5) = z^3 - 10z^2 + 31z -30
計算多項式的值:代入x
print(f([1,2,3,4]))#可以多個運算,x=1\2\3\4的時候
#[ 4 11 22 37]
其他操作:
p(0.5)表示當x = 0.5時,多項式的值為多少
p([1,2,3])表示當x = 1、2、3時,多項式的值分別為多少
p.r表示當多項式為 0 時,此等式的根
p.c表示生成多項式的系數數組
p.order表示返回最高項的次方數
p[1]表示返回第一項的系數
p.deriv([m])表示求導,參數m表示求幾次導數
p.integ([m,k])表示積分,參數m表示積幾次分,k表示積分后的常數項的值
多項式在某點上的值:np.polyval(p,x[n]),返回p多項式在橫軸點上x[n]上的值
兩個多項式做差運算: np.polysub(a,b)
np.polyfit(x,y,num)
可以對一組數據進行多項式擬合
np.polyval(p,x)計算多項式的函數值。返回在x處多項式的值,p為多項式系數
import matplotlib.pyplot as plt
import numpy as np
# 構建噪聲數據xu,yu
xu = np.random.rand(50) * 4 * np.pi - 2 * np.pi
def f(x):
return np.sin(x) + 0.5 * x
yu = f(xu)
plt.figure(figsize=(8, 4))
# 用噪聲數據xu,yu,得到擬合多項式系數,自由度為5
reg = np.polyfit(xu, yu, 5)
# 計算多項式的函數值。返回在x處多項式的值,p為多項式系數,元素按多項式降冪排序
ry = np.polyval(reg, xu)
# 原先函數繪制
plt.plot(xu, yu, 'b^', label='f(x)')
# 擬合繪制
plt.plot(xu, ry, 'r.', label='regression')
plt.legend(loc=0)
plt.show()