p=polyfit(x,y,n)
[p,s]= polyfit(x,y,n)
說明:x,y為數據點,n為多項式階數,返回p為冪次從高到低的多項式系數向量p。x必須是單調的。矩陣s用於生成預測值的誤差估計。
多項式曲線求值函數:polyval( )
調用格式: y=polyval(p,x)
[y,DELTA]=polyval(p,x,s)
說明:y=polyval(p,x)為返回對應自變量x在給定系數P的多項式的值。
[y,DELTA]=polyval(p,x,s) 使用polyfit函數的選項輸出s得出誤差估計Y DELTA。它假設polyfit函數數據輸入的誤差是獨立正態的,並且方差為常數。則Y DELTA將至少包含50%的預測值。
有如下數據
時間t |
1900 |
1910 |
1920 |
1930 |
1940 |
1950 |
1960 |
1970 |
1980 |
1990 |
2000 |
人口y |
76 |
92 |
106 |
123 |
132 |
151 |
179 |
203 |
227 |
250 |
281 |
1. y與t的經驗公式為 y = at^2 + bt + c
clear; clf; %清除當前窗口 clc; t = 1900:10:2000; %時間t y = [76 92 106 123 132 151 179 203 227 250 281]; %人口y plot(t,y,'k*'); hold on; % figure; %重新開一個圖 p1 = polyfit(t,y,2); plot(t, polyval(p1, t)); axis([1900 2000 0 300]); %圖像xy軸范圍 disp(char(['y=',poly2str(p1,'t')],['a=',num2str(p1(1)),' b=',... num2str(p1(2)),' c=',num2str(p1(3))]));
結果如下:
y= 0.0094289 t^2 - 34.7482 t + 32061.5711 a=0.0094289 b=-34.7482 c=32061.5711
2. y與t的經驗公式為y = a e^(bt)
clear; clf; %清除當前窗口 clc; t = 1900:10:2000; %時間t y = [76 92 106 123 132 151 179 203 227 250 281]; %人口y yy = log(y); %指數基尼必需的線性化變形 p2 = polyfit(t,yy,1); b = p2(1); a = exp(p2(2)); y2 = a * exp(b*t); %指數擬合函數式 plot(t,y,'rp',t,y2,'k-'); grid off; xlabel('時間t'); ylabel('人口數(百萬)'); title('人口數據');