numpy-poly1d、polyfit、polyval多項式使用


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()


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM