Numpy多項式函數


多項式函數是變量的整數次冪與系數的乘積之和,可以用下面的數學公式表示:

f(x) = a[n]*x^n + a[n-1]*x^(n-1) + … + a[2]*x^2 + a[1]*x + a[0]

    由於多項式函數只包含加法和乘法運算,因此它很容易計算,並且可以用於計算其他數學函數的近似值。多項式函數的應用非常廣泛,例如在嵌入式系統中經常會用它計算正弦、余弦等函數。在Numpy中,多項式函數的系數可以用一維數組表示。
例:f(x)=x^3 - 2x + 1可以用下面數組表示,其中a[0]是最高次的系數,a[-1]是常數項,注意x^2的系數為0。

 1 #-*- coding:utf-8 -*-
 2 
 3 '''
 4 導入函數庫
 5 '''
 6 import numpy as np
 7 
 8 #f(x) = x^3 -2x + 1
 9 a = np.array([1,0,-2,1])
10 #調用poly1d(a)將系數轉換為一元多項式
11 f = np.poly1d(a)
12 print(type(f))
13 print('傳入值得到的具體結果',f([1,2,3,4]))
14 #多項式的加法
15 newp = f + [1,1,3]
16 print(newp)

多項式對象的deriv()和integ()方法分別計算多項式函數的微分和積分

1 #求微分和積分
2 f.deriv()
3 f.integ()

多項式的根可以用roots()函數來計算
而poly()函數可以將根轉換回多項式的系數

1 roots = np.roots(f)
2 np.poly(roots)

polyfit()函數可以對一組數據使用多項式函數進行擬合,找到和這組數據最接近的多項式的系數。我們來計算-π/2~π/2區間與sin(x)函數最接近的多項式的系數:

1 x = np.linspace(-np.pi/2,np.pi/2, 1000)
2 y = np.sin(x)
3 for arg in [3,5,7]:
4     print(np.polyfit(x, y, arg))

第一步:通過linespace()將-π/2~π/2區間分為1000-1份。
第二步:計算擬合目標函數sin(x)的值。
第三步:將目標函數的數組傳遞給polyfit()進行擬合,第三個參數arg為多項式函數的最高階數。polyfit()所得到的多項式和目標函數在給定的1000個點之間的誤差最小,polyfit()返回多項式的系數數組。
第四步:使用polyval()計算多項式函數的值,並計算與目標函數的差的絕對值。

 


免責聲明!

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



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