多項式擬合
多項式的一般形式:
y=p_x^n + p_x^ + p_x^ + p_x^ +...+p_
多項式擬合的目的是為了找到一組p0-pn,使得擬合方程盡可能的與實際樣本資料相符合。
假設擬合得到的多項式如下:
f(x)=p_x^n + p_x^ + p_x^ + p_x^ +...+p_
則擬合函式與真實結果的差方如下:
loss = (y_1-f(x_1))^2 + (y_2-f(x_2))^2 + ... + (y_n-f(x_n))^2
那麼多項式擬合的過程即為求取一組p0-pn,使得loss的值最小。
x = [x1, x2, ..., xn] -自變數y = [y1, y2, ..., yn] -實際函式值y'
= [y1
',y2'
,...,yn
'] -擬合函式值
p = [p0, p1, ..., pn] -多項式函式中的係數
根據一組樣本,並給出最高次冪,求出擬合係數
np.polyfit(x, y, 最高次冪)->p
根據擬合係數與自變數求出擬合值, 由此可得擬合曲線座標樣本資料 [x, y'案例:求多項式 y = 4x3]np.polyval(p, x)->y'
多項式函式求導,根據擬合係數求出多項式函式導函式的係數
np.polyder(p)->q
已知多項式係數q 求多項式函式的根(與x軸交點的橫座標)
xs =np.roots(q)
兩個多項式函式的差函式的係數(可以通過差函式的根求取兩個曲線的交點)
q = np.polysub(p1, p2)
+ 3x2
- 1000x + 1曲線拐點的座標。
'''1. 求出多項式的導函式
2. 求出導函式的根,若導函式的根為實數,則該點則為曲線拐點。
'''import
numpy as np
import
matplotlib.pyplot as mp
p = [4, 3, -1000, 1]
x = np.linspace(-20, 20, 1000)
#y = 4*x**3 + 3*x**2 - 1000*x + 1
y = np.polyval(p, x) #
把x帶入p函式 得到y#求導
案例:使用多項式函式擬合兩隻**bhp、vale的差價函式:
#多項式擬合
import
numpy as np
import
matplotlib.pyplot as mp
import
datetime as dt
import
matplotlib.dates as md
defdmy2ymd(dmy):
"""把日月年轉年月日
:param day:
:return:
"""dmy = str(dmy, encoding='
utf-8')
t = dt.datetime.strptime(dmy, '
%d-%m-%y')
s = t.date().strftime('
%y-%m-%d')
return
sdates, bhp_closing_prices =\
np.loadtxt(
'bhp.csv',
delimiter=','
, usecols=(1, 6),
unpack=true,
dtype='
m8[d],f8',
converters=) #
日月年轉年月日
vale_closing_prices =\
np.loadtxt(
'vale.csv',
delimiter=','
, usecols=(6,),
unpack=true) #
因為日期一樣,所以此處不讀日期
#print(dates)
#繪製**價的折現圖
mp.figure('
', facecolor='
lightgray')
mp.title(
'', fontsize=18)
mp.xlabel(
'date
', fontsize=14)
mp.ylabel(
'price
', fontsize=14)
mp.grid(linestyle=":"
)#設定刻度定位器
#每週一乙個主刻度,一天乙個次刻度
ax =mp.gca()
ma_loc = md.weekdaylocator(byweekday=md.mo)
ax.xaxis.set_major_locator(ma_loc)
ax.xaxis.set_major_formatter(md.dateformatter(
'%y-%m-%d'))
ax.xaxis.set_minor_locator(md.daylocator())
#修改dates的dtype為md.datetime.datetiem
dates =dates.astype(md.datetime.datetime)
#計算差價
diff_prices = bhp_closing_prices -vale_closing_prices
mp.plot(dates, diff_prices, color='
dodgerblue
', label='
diff prices')
#多項式擬合
多項式擬合缺點 多項式擬合
在網上看別人的心得 一 最小二乘法的基本原理 從整體上考慮近似函式同所給資料點 i 0,1,m 誤差 i 0,1,m 的大小,常用的方法有以下三種 一是誤差 i 0,1,m 絕對值的最大值,即誤差 向量的 範數 二是誤差絕對值的和,即誤差向量r的1 範數 三是誤差平方和的算術平方根,即誤差向量r的2...
多項式擬合
class1.cs 擬合類 using system using system.collections.generic using system.text namespace 最小二乘法擬合多項式 guass i,j sumarr arrx,i,arry,1,length return comput...
MATLAB多項式及多項式擬合
多項式均表示為陣列形式,陣列元素為多項式降冪係數 1.polyval函式 求多項式在某一點或某幾個點的值.p 1,1,1 x 2 x 1 x 1,0,1 y polyval p,x 另外求函式在某一點或某幾個點的值可以用函式feval.x 1,0,1 y feval x exp x x 注意用的乘法...