?? leastsquarespolynomialfitting.m
字號:
最小二乘法多項式擬合
--------------------------------------------------------------------------------
% 最小二乘法多項式擬合
% ******** 立方體抗壓強度實驗數據表 ********
% (1)-----選擇擬合多項式擬合的階數
x=[1 2 3 7 14 28];
y=[30.3 43.9 47.1 54.9 56.1 60.6];
n = 6; x1 = x(1); xn = x(n);
% n個數據可以擬合(n-1)階多項式,高階多項式多次求導,數值特性變差
% polytool()是交互式函數,在圖形上方[Degree]框中輸入階數,右擊左下角的[Export]輸出圖形
polytool(x,y,1)
% 觀察多項式擬合的圖形,選擇置信區間最小的多項式階數
% (2)-----計算多項式的各項系數和擬合值
m=input(' 輸入多項式擬合的階數 m = ');
[p,S]=polyfit(x,y,m);
disp ' 輸出多項式的各項系數'
fprintf (1,' a = %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 (1,' 標準誤差 Sigma = %3.6f \n',SGM)
fprintf (1,' 相關指數 RR = %3.6f \n',RR)
x0=input(' 輸入插值點 x0 = ');
y0=polyval(p,x0);
fprintf (1,' 輸出插值點擬合函數值 y0 = %3.4f \n',y0)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -