建模算法設(shè)計(jì)入門:多項(xiàng)式曲線擬合(MATLAB)
原理請參考:李慶楊 《數(shù)值分析》,3.4節(jié)曲線擬合的最小二乘法。
如果根據(jù)原理寫自己MATLAB算法:
測試案例
例1:以自定義的多項(xiàng)式測試算法擬合的系數(shù)的正確性。
可見,算法在功能上是正確的。如果添加一定的噪聲,結(jié)果如下,與實(shí)際系數(shù)存在一定的差異,但是在最小二乘意義下是最優(yōu)的。
例2. 以函數(shù)為例等距劃分
個(gè)數(shù)據(jù)點(diǎn),以此數(shù)據(jù)擬合多項(xiàng)式曲線。
結(jié)果如下

從圖1中可以看到,兩端點(diǎn)處存在些許振蕩現(xiàn)象,盲目提高多項(xiàng)式擬合的階次,比如20階,并不會使得擬合的曲線更逼近真實(shí)曲線,而是在擬合點(diǎn)處的誤差越來越小,mse減少到3.8993e-08,而預(yù)測誤差反而會增加,出現(xiàn)機(jī)器學(xué)習(xí)中的過擬合現(xiàn)象。如圖2所示

解決這一問題的一個(gè)思路是,增加所擬合的數(shù)據(jù)量,如圖3所示,為50個(gè)數(shù)據(jù)量,20次多項(xiàng)式曲線擬合的結(jié)果。

實(shí)際應(yīng)用中,所給定的數(shù)據(jù)未必知道背后的真實(shí)模型,一旦知道背后的真實(shí)模型,也就沒有擬合的必要了。且采樣數(shù)據(jù)存在一定的誤差,故此例模擬。
該示例代碼也可進(jìn)行非線性曲線擬合,但需要進(jìn)行轉(zhuǎn)換。
例 3:在區(qū)間內(nèi)等分15個(gè)數(shù)值節(jié)點(diǎn),按照
生成離散數(shù)據(jù)點(diǎn),試擬合數(shù)學(xué)模型
,即確定系數(shù)
和
。
結(jié)果如下,test_LSPolynomialCurveFitting2為本人定義的腳本文件名稱。
由于數(shù)據(jù)存在一定的噪聲,故擬合的系數(shù)與真實(shí)系數(shù)存在些許誤差。
