如何利用MATLAB进行数据拟合?
文章目錄
- 前言
- 1 引例一人口預測問題
- 2 曲線擬合的原理
- 3 曲線擬合的實現方法
- 4 實際應用-家庭儲蓄規律問題
- 小結
前言
本文是科學計算與MATLAB語言課程的第5章第5、6小結的學習筆記,通過查閱本文,可以輕松掌握利用MATLAB進行數據擬合了。Enjoyyourreading!Enjoy\ your\ reading!Enjoy?your?reading!
歡迎大家👍,收藏?,轉發🚀,
如有問題、建議請您在評論區留言💬。
1 引例一人口預測問題
人口增長是當今世界上都關注的問題,對人口增長趨勢進行預測是
各國普遍的做法。已知某國1790年到2010年間歷次人口普查數據如
下表所示,請預測該國2020年的人口數。
| 人口(百萬) | 3.9 | 5.3 | 7.2 | 9.6 | 12.9 | 17.1 | 23.2 | 31.4 | 38.6 | 50.2 | 63.0 | 76.0 |
| 年份 | 1910 | 1920 | 1930 | 1940 | 1950 | 1960 | 1970 | 1980 | 1990 | 2000 | 2010 | |
| 人口(百萬) | 92.0 | 105.7 | 122.8 | 131.7 | 150.7 | 179.3 | 203.2 | 226.5 | 248.7 | 281.4 | 308.7 |
解題思路:找一個函數,去逼近這些數據,然后再根據找到的函數,計算預測點的值。
x=1790:10:2010; y=[3.9,5.3,7.2,9.6,12.9,17.1,23.2,31.4,38.6, 50.2,63.0,76.0,92.0,105.7,122.8,131.7,150.7,179.3,203.2,226.5,248.7,281.4,308.7]; plot(x,y,'*'); p=polyfit(x,y,3); polyval(p,2020) plot(x,y,'*',x,polyval(p,x));2 曲線擬合的原理
曲線擬合的原理
與數據插值類似,曲線擬合也是一種函數逼近的方法。
| yyy | y1y2...yk...yny_1\ y_2 \ ...y_k...\ y_ny1??y2??...yk?...?yn? |
y=f(x)y=f(x)y=f(x)
構造函數g(x)g(x)g(x)去逼近未知函數f(x)f(x)f(x),使得誤差
δ=g(xi)?f(xi)(i=1,2,3,…,n)\delta=g(x_i)-f(x_i)(i=1,2,3,…,n)δ=g(xi?)?f(xi?)(i=1,2,3,…,n)在某種意義下達到最小。
兩個問題:
(1)用什么類型的函數做逼近函數?
多項式函數
(2)誤差最小到底怎么計算?
最小二乘法
最小二乘法(又稱最小平方法)是一種數學優化技術。它通過最小化誤差的平方和來尋找數據的最佳函數匹配。
設p(x)是一個多項式函數
p(x)=amx+am?1xm?1+…+a1x+aop(x)=a_mx+a_{m-1}x^{m-1}+…+a_1x+a_op(x)=am?x+am?1?xm?1+…+a1?x+ao?,且
∑i=1n(p(xi)?yi)2\sum\limits_{i=1}^n(p(x_i)-y_i)^2i=1∑n?(p(xi?)?yi?)2的值最小,
則p(x)為原函數y=f(x)的逼近函數。
3 曲線擬合的實現方法
MATLAB中的多項式擬合函數為polyfit(),其功能為求得最小二乘擬合多項式系數,其調用格式為:
(1)P=polyfit(X,Y,m)
(2)[P,S]=polyfit(X,Y,m)
(3)[P,S,mu]=polyfit(X,Y,m)
根據樣本數據X和Y,產生一個m次多項式P及其在采樣點誤差數據S,mu是一個二元向量,mu(1)是mean(X),而mu(2)是std(X)。
[P,S,mu]=polyfit(X,Y,m)有什么用呢?mean(X)、std(X)又是什么意思呢?。mean函數是一個求數組平均值的函數,std函數是求標準差。
在引例中,我們已經用polyfit()函數預測了某國2020年的人口數。這個結果是否正確呢?我們無法得到2020年的數據,但是2016年的數據已經有了。所以,不妨再預測一下該國2016年的人口數。
polyval(p,2016)
ans=
327.0964
該國2016年人口數實際為323.1。
思考:相對誤差1.24%,怎樣才能減小?
問題分析:
據研究,一個國家的人口增長具有如下特點:
(1)發展越平穩,人口增長越有規律。
(2)當經濟發展到一定水平時,人口增長率反而下降。
換言之,在不同的環境和經濟發展水平,人口可能有不同的增長規律。
結論:
在人口增長數據的擬合上,應該將二戰后至今這一時期的數據與此前的數據分開處理。
結論:
(1)要對問題的背景進行詳細的分析。
(2)采樣點并非越多越好,適當的時候,可以減少采樣點,分段進行擬合。
4 實際應用-家庭儲蓄規律問題
以下是某市家庭收入x與家庭儲蓄y之間的一組調查數據(單位:萬元),試建立x與y的線性函數經驗公式。
| y | 0.08 | 0.22 | 0.31 | 0.4 | 0.48 | 0.56 | 0.67 | 0.75 | 0.8 | 1.0 |
最后幾組數據誤差還是挺大的。
那么總結一下,曲線擬合有哪幾種功能呢?
(1)估算數據
(2)預測趨勢
(3)總結規律
數據擬合和數據插值有什么區別呢?
相同點:
(1)都屬于函數逼近的方法;
(2)都可以通過離散有限的數據估算其他數據。
不同點:
(1)實現方法上,數據插值要求逼近函數經過樣本點,而曲線擬合只需要每個數據點的誤差平方和最小;
(2)結果形式上,數據插值往往沒有統一的逼近函數,而數據擬合有統一的逼近函數;
(3)側重點上,數據插值一般用于樣本點區間內的數據計算,而曲線擬合不光可以估算區間內的數據,也可以對區間外的進行預測;
(4)應用場合上,如果樣本點為精確數據,使用數據插值比較好,如果數據為統計數據,則使用曲線擬合更優。
小結
曲線擬合和數據插值有所不同,各有側重。奧里給,學好它,讓它為我所用。最后不要忘記
點贊👍,收藏?,轉發🚀,
如有問題、建議請您在評論區留言💬。
總結
以上是生活随笔為你收集整理的如何利用MATLAB进行数据拟合?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 机器人系统辨识——基于MATLAB的非线
- 下一篇: 编译原理(五)自底向上分析之算符优先分析