最小二乘法多項式擬合
matlab具有友好的程式設計介面,強大的計算能力,和出色的圖形處理功能,在工程領域具有重要應用,是科技工作者不可缺少的工具。
最小二乘擬合是一種數學上的近似和優化,利用已知的資料得出一條直線或者曲線,使之在座標系上與已知資料之間的距離的平方和最小。最小二乘擬合在工程中具有普遍應用,是資料分析的重要方法。最小二乘法擬合的模型主要有:
1.直線型2.多項式型3.
分數函式型4.指數函式型5.對數線性型6.
高斯函式型等,不同的應用情況,選用不同的擬合模型。其中多項式型擬合模型應用比較廣泛。鑑於最小二乘擬合的在工程中普遍應用,筆者結合matlab課上所學,針對最小二乘多項式擬合模型進行了程式設計。
實驗發現,程式執行良好,可以很好的進行資料擬合分析。
一、實驗過程
點選執行程式後,會提示輸入資料,資料以向量形式存在,分別為x、y向量。兩個向量大小需一致,否則會提示錯誤。輸入資料正確後,程式會給出一段提示資訊:
「通過下面的互動式圖形,你可以事先估計一下你要擬合的多項式的階數,方便下面的計算.polytool()是互動式函式,在圖形上方[degree]框中輸入階數,右擊左下角的[export]輸出圖形,回車開啟polytool互動式介面」
例如執行後在命令視窗輸入一下資料:
x=[1,2,3,4,5,6]
y=[0.3,1,1.8,3.2,4.8,6.9]
輸入多項式擬合的階數 m = 3
這時命令視窗輸出多項式的各項係數如下:
a3 = 0.0074074074074074
a2= 0.1043650793650796
a1 = 0.2683862433862423
a0 = -0.0666666666666650
觀測資料擬合資料
x y yh
1.0000 0.3000 0.3135
2.0000 1.0000 0.9468
3.0000 1.8000 1.8778
4.0000 3.2000 3.1508
5.0000 4.8000 4.8103
6.0000 6.9000 6.9008
剩餘平方和q = 0.011587
標準誤差 sigma = 0.053822
相關指數rr = 0.999629
資料擬合曲線圖如圖—1所示。
命令視窗提示輸入插值點,此時可以輸入感興趣的點,進行擬合值的計算,實驗中輸入x=3.2,擬合計算結果,y=2.1.36.
輸入插值點x0 = 3.2
輸出插值點擬合函式值 y0 = 2.1036
二、程式**及結果圖示。
disp('請以向量的形式輸入x,y.')
x=input('x=');
y=input('y=');
nx = length(x);
ny = length(y);
n = length(x);
if nx == ny
x1 = x(1); xn = x(n);
% n個資料可以擬合(n-1)階多項式,高階多項式多次求導,數值特性變差
disp('通過下面的互動式圖形,你可以事先估計一下你要擬合的多項式的階數,方便下面的計算.')
disp('polytool()是互動式函式,在圖形上方[degree]框中輸入階數,右擊左下角的[export]輸出圖形')
disp('回車開啟polytool互動式介面')
pause;
polytool(x,y,1)
% 觀察多項式擬合的圖形,選擇置信區間最小的多項式階數
disp('回車繼續進行擬合')
pause;
% (2)-----計算多項式的各項係數和擬合值
m=input(' 輸入多項式擬合的階數 m = ');
[p,s]=polyfit(x,y,m);
disp ' 輸出多項式的各項係數'
fprintf (1a = %3.16f \n',p)
disp ' 輸出多項式的有關資訊 s'
disp (s)
[yh,delta]=polyconf(p,x,s);
disp觀測資料擬合資料'
disp ' x y yh'
for i = 1 : n
xy = [x(i) y(i) yh(i)];
disp (xy)
end% (3)-----繪製觀測資料離散點圖和多項式曲線
plot(x,y,'r.')
title('\bf 實驗資料離散點圖 / 多項式曲線 \it y = a0+a1x+a2x^2+a3x^3+...')
grid
hold on;
xi=[x1:0.1:xn];
yi=polyval(p,xi);
plot(xi,yi,'k-')
% (4)-----擬合效果和精度檢驗
q=sum((y-yh).^2);
sgm = sqrt(q / (n - 2));
rr = sum((yh-mean(y)).^2)/sum((y-mean(y)).^2);
fprintf (1,' 剩餘平方和q = %3.6f \n',q)
fprintf ('\n')
fprintf (1標準誤差 sigma = %3.6f \n',sgm)
fprintf ('\n')
fprintf (1相關指數rr = %3.6f \n',rr)
fprintf ('\n')
disp('請輸入你所需要擬合的資料點,若沒有請按回車鍵結束程式.')
fprintf ('\n')
x0=input(' 輸入插值點x0 = ');
y0=polyval(p,x0);
fprintf (1,' 輸出插值點擬合函式值 y0 = %3.4f \n',y0)
else
disp('輸入的資料有誤,請重新執行程式並輸入正確的資料。')
clear
end圖--1
最小二乘法
首先從數學的角度闡述平差中產生的方程式數量 未知數數量問題,進而說明天然的平差模型無法得到唯一解這個結論,從而啟發學生知道應該引入一定條件解決此問題,順理成章引入最小二乘原理,並說明其含義及應用方法。教學內容 一 平差函式模型的方程式數量與未知數數量及解方程存在的問題 1 平差函式模型的方程式數量與...
最小二乘法應用例項
數值計算方法 實際應用 題目最小二乘法原理實際生活應用 學院資訊工程學院 專業軟體工程 姓名張同 班級13級2班 學號1402130235 摘要最小二乘法 又稱最小平方法 是一種數學優化技術,是利用最小化誤差的平方和尋找資料的最佳函式匹配的一種計算方法 1 目前在測量學 城市道路規劃 物理學 地質勘...
最小二乘法在統計學中應用
王亞凌湖南水利水電職業技術學院長沙 摘要 經濟領域有很多問題要用到數學模型,下文是作者通過最小二乘法來解決統計學中的動態數列趨勢問題。關鍵詞 最小二乘法,動態數列。最近在看一本統計學書的有關動態數列的趨勢分析時突發靈感,是否可以使用數學中的最小二乘法來建立數學模型用以分析現象發展的長期趨勢呢?在動態...