数学建模-插值与拟合模型
插值:求過已知有限個數據點的近似函數。
擬合:已知有限個數據點,求近似函數,不要求過已知數據點,只要求在某種意義下它在這些點上的總偏差最小。
插值和擬合都是要根據一組數據構造一個函數作為近似,由于近似的要求不同,二者的數學方法上是完全不同的。而面對一個實際問題,究竟應該用插值還是擬合,有時容易確定,有時則并不明顯。
插值
1、一維插值函數
y = interp1(x0,y0,x,'method')mothod指定插值的方法,默認為線性插值 ‘nearest’最近項插值 ‘linear’線性插值 ‘spline’立方樣條插值 ‘cubic’立方插值2、三次樣條插值
pp = csape(x0,y0,conds,valconds); y = fnval(pp,x)‘conds’指定邊界條件 ‘complete’邊界為一階導數,一階導數的值在valconds中給出,若忽略valconds,則使用Lagrange邊界條件 ‘not-a-knot’非扭結條件 ‘periodic’周期條件 ‘second’邊界為二階導數,二階導數值在valconds中給出,若忽略valconds,默認值為【0,0】 ‘variational’設置邊界的二階導數值為【0,0】3.Lagrange 插值
Matlab 中沒有現成的Lagrange 插值函數,必須編寫一個M文件實現Lagrange 插值。設n個節點數據以數組x0, y0輸入(注意 Matlat 的數組下標從 1 開始),m 個插值點以數組x 輸入,輸出數組y 為m 個插值。編寫一個名為lagrange.m 的M 文件:
function y=lagrange(x0,y0,x); n=length(x0);m=length(x); for i=1:mz=x(i);s=0.0;for k=1:np=1.0;for j=1:nif j~=kp=p*(z-x0(j))/(x0(k)-x0(j));endends=p*y0(k)+s;endy(i)=s;end4.分段線性插值
簡單地說,將每兩個相鄰的節點用直線連起來,如此形成的一條折線就是分段線性插值函數.
y=interp1(x0,y0,x,'method') method 指定插值的方法,默認為線性插值。其值可為: 'nearest' 最近項插值 'linear' 線性插值 'spline' 逐段3 次樣條插值 'cubic' 保凹凸性3 次插值。所有的插值方法要求 x0 是單調的。當 x0 為等距時可以用快速插值法,使用快速插值法的格式為'*nearest'、'*linear'、
'*spline'、'*cubic'。
例:機床加工
待加工零件的外形根據工藝要求由一組數據(x, y)給出(在平面情況下),用程控銑床加工時每一刀只能沿x 方向和y 方向走非常小的一步,這就需要從已知數據得到加工所要求的步長很小的(x, y)坐標。
表 1 中給出的x, y數據位于機翼斷面的下輪廓線上,假設需要得到x坐標每改變0.1 時的 y坐標。試完成加工所需數據,畫出曲線,并求出x = 0處的曲線斜率和13 ≤ x ≤ 15范圍內 y的最小值。
拉格朗日插值的結果根本不能應用,分段線性插值的光滑性較差(特別是在x = 14附近彎曲處),建議選用三次樣條插值的結果。
擬合
1.線性最小二乘法
曲線擬合問題的提法是,已知一組(二維)數據,即平面上的n個點( , ) ?i=1,...,n, ?互不相同,尋求一個函數(曲線) y = f (x),使 f (x)在某種準則下與所有數據點最為接近,即曲線擬合得最好。
例:用最小二乘法求一個形如 y = a + bx2的經驗公式,使它與下表所示的數據擬合。
x=[19 25 31 38 44]'; y=[19.0 32.3 49.0 73.3 97.8]'; r=[ones(5,1),x.^2]; ab=r\y x0=19:0.1:44; y0=ab(1)+ab(2)*x0.^2; plot(x,y,'o',x0,y0,'r')2.多項式擬合法
如果取{ (x),...,(x)} {1,x,...,} 1 1,即用m 次多項式擬合給定數據,Matlab中有現成的函數
a=polyfit(x0,y0,m)其中輸入參數x0,y0 為要擬合的數據,m 為擬合多項式的次數,輸出參數a 為擬合多項式y=+…++?系數a=[ , …, , ]。
多項式在x 處的值y 可用下面的函數計算
例:某鄉鎮企業1990-1996 年的生產利潤如下表,試預測1997 年和1998 年的利潤。
x0=[1990 1991 1992 1993 1994 1995 1996]; y0=[70 122 144 152 174 196 202]; plot(x0,y0,'*')發現該鄉鎮企業的年生產利潤幾乎直線上升。因此,我們可以用 y =作為擬合函數來預測該鄉鎮企業未來的年利潤。編寫程序如下:
x0=[1990 1991 1992 1993 1994 1995 1996]; y0=[70 122 144 152 174 196 202]; a=polyfit(x0,y0,1) y97=polyval(a,1997) y98=polyval(a,1998)求得 ,=?4.0705×,1997,1997 年的生產利潤 y97=233.4286,1998 年的生產利潤y98=253.9286。
3.最小二乘優化
?
總結
以上是生活随笔為你收集整理的数学建模-插值与拟合模型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: matlab中求x的y次幂,Matlab
- 下一篇: 一个无名内隐类的问题(Java)