第一節、資料擬合
問題:給定一批資料點(輸入變數與輸出變數的資料),需確定滿足特定要求的曲線或
曲面。如果輸入變數和輸出變數都只有乙個,則屬於一元函式的擬合和插值;而若輸入變數
有多個,則為多元函式的擬合和插值(有點回歸分析的意思)
解決方案:
(1) 若要求所求曲線(面)通過所給所有資料點,就是插值問題;
(2) 若不要求曲線(面)通過所有資料點,而是要求它反映物件整體的變化趨勢,這就
是資料擬合,又稱曲線擬合或曲面擬合。
注意:插值和擬合都是要根據一組資料構造乙個函式作為近似,由於近似的要求不同,
二者的數學方法上是完全不同的。而面對乙個實際問題,究竟應該用插值還是擬合,有時
容易確定,有時則並不明顯。
例 1:下面資料是某次實驗所得,希望得到 x和 f之間的關係?xf
1247
9121315
171.5
3.96.6
11.7
15.6
18.8
19.6
20.6
21.1
曲線擬合問題最常用的解法——最小二乘法的基本思路
第一步:確定擬合的函式型別 y = f (x;a1,a2,",am ),其中a1,a2,",am為待定係數。
(函式型別的確定可以根據內在的規律確定,如果無現成的規則,則可以通過散點圖,聯絡
曲線的形狀進行分析)
第二步:確定a1,a2,",am的最小二乘準則:要求n個已知點(xi, yi )與曲線 y = f (x)n∑
的距離di的平方和 (yi f x 2 最小 。
( ))
ii=1
用 matlab作擬合
1.多項式擬合。作多項式 y = a0x
m+a1x m1 +"+ am擬合,可利用
a=polyfit(x,y,m)—其中 x,y為給出的資料,m為多項式的次數。
多項式在 x處的值 y可用以下命令計算:
y=polyval(a,x)
2.用 matlab作非線性最小二乘擬合
matlab的提供了兩個求非線性最小二乘擬合的函式:lsqcurvefit和 lsqnonlin。兩個命令
都要先建立 m-檔案 在其中定義函式 f(x)。
(1)x = lsqcurvefit (『fun』,x0,xdata,ydata);
(2)x =lsqcurvefit (『fun』,x0,xdata,ydata,options);
(3)x = lsqcurvefit (『fun』,x0,xdata,ydata,options,』grad』);
(4)[x, options] = lsqcurvefit (『fun』,x0,xdata,ydata,…);
(5)[x, options,funval] = lsqcurvefit (『fun』,x0,xdata,ydata,…);
1(6)[x, options,funval, jacob] = lsqcurvefit (『fun』,x0,xdata,ydata,…);
(7)x=lsqnonlin(『fun』,x0);
(8)x= lsqnonlin (『fun』,x0,options);
(9)x= lsqnonlin (『fun』,x0,options,『grad』);
(10)[x,options]= lsqnonlin (『fun』,x0,…);
(11)[x,options,funval]= lsqnonlin (『fun』,x0,…);
在使用 lsqcurvefit與 lsqnonlin命令時,共同的問題是要先知道函式的型別,而擬合其實是決
定函式中的待定係數。
第二節插值
插值的基本問題:給出n個數對,(pi, f (pi)),i =1,2,",n,求點 p處對應的函式值 f (p)。
一、一維插值
已知 n +1個節點 (xi, yi ),i = 0,1,",n,求任意點 *處的函式值 *。常用的插值方法xy
有拉格朗日多項式插值、牛頓插值、分段線性插值、hermite插值和三次樣條插值。
9 分段線性插值:將各資料點用折線連線起來
9 多項式插值:求乙個多項式通過所有資料點,可以假設出多項式的係數,最後通過
求解方程得到每個係數(拉格朗日插值,用n次多項式描述 n +1個點)
9 樣條插值:分段多項式的光滑連線(三次樣條插值)
9 牛頓插值:利用節點之間的各階差商和差分構造多項式
9hermite插值:對插值函式,不僅要求它在節點處與函式同值,而且要求它與函式有
相同的一階、二階甚至更高階的導數值
(1)matlab命令:y=interp1(x0,y0,x,'method')
method指定插值的方法,預設為線性插值。其值可為:
'nearest' 最近項插值
'linear'
'spline'
'cubic'
線性插值
立方樣條插值
立方插值。
所有的插值方法要求 x0是單調的。
當 x0為等距時可以用快速插值法,使用快速插值法的格式為'*nearest'、'*linear'、'*spline'、
'*cubic'。
(2)三次樣條插值在 matlab中的實現
在 matlab中資料點稱之為斷點。如果三次樣條插值沒有邊界條件,最常用的方法,就
是採用非扭結(not-a-knot)條件。這個條件強迫第 1個和第 2個三次多項式的三階導數相
等。對最後乙個和倒數第 2個三次多項式也做同樣地處理。
matlab中三次樣條插值也有現成的函式:
y=interp1(x0,y0,x,'spline');
y=spline(x0,y0,x);
pp=csape(x0,y0,conds),
pp=csape(x0,y0,conds,valconds),y=ppval(pp,x)。
其中 x0,y0是已知資料點,x是插值點,y是插值點的函式值。
對於三次樣條插值,我們提倡使用函式 csape,csape的返回值是 pp形式,要求插值點
2的函式值,必須呼叫函式 ppval。
pp=csape(x0,y0):使用預設的邊界條件,即 lagrange邊界條件。
pp=csape(x0,y0,conds,valconds)中的 conds指定插值的邊界條件,其值可為:
'complete'
邊界為一階導數,一階導數的值在 valconds引數中給出,若忽略 valconds
引數,則按預設情況處理。
'not-a-knot' 非扭結條件
'periodic'
'second'
週期條件
邊界為二階導數,二階導數的值在 valconds引數中給出,若忽略 valconds
引數,二階導數的預設值為[0, 0]。
'variational' 設定邊界的二階導數值為[0,0]。
對於一些特殊的邊界條件,可以通過 conds的乙個1× 2矩陣來表示,conds元素的取值
為 0,1,2。
conds(i)=j的含義是給定端點i的 j階導數,即 conds的第乙個元素表示左邊界的條件,
第二個元素表示右邊界的條件,conds=[2,1]表示左邊界是二階導數,右邊界是一階導數,對
應的值由 valconds給出。
例 2 工具機加工
待加工零件的外形根據工藝要求由一組資料(x, y)給出(在平面情況下),用程式控制銑床
加工時每一刀只能沿 x方向和 y方向走非常小的一步,這就需要從已知資料得到加工所要求
的步長很小的(x, y)座標。
表中給出的 x, y資料位於機翼斷面的下輪廓線上,假設需要得到 x座標每改變 0.1時的
y座標。試完成加工所需資料,畫出曲線,並求出 x = 0處的曲線斜率和13≤ x ≤ 15範圍
內 y的最小值。xy
0357
9112.012
1.813
1.214
1.015
1.60
1.21.7
2.02.1
要求用分段線性和三次樣條計算。
解編寫以下程式:
x0=[0 3 5 7 9 11 12 13 14 15];
y0=[0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6];
x=0:0.1:15;
y2=interp1(x0,y0,x);
y3=interp1(x0,y0,x,'spline');
pp1=csape(x0,y0);
y4=ppval(pp1,x);
pp2=csape(x0,y0,'second');
y5=ppval(pp2,x);
[x',y1',y2',y3',y4',y5']
subplot(2,2,1)
plot(x0,y0,'+',x,y2)
title('piecewise linear')
subplot(2,2,2)
plot(x0,y0,'+',x,y3)
3title('spline1')
subplot(2,2,3)
plot(x0,y0,'+',x,y4)
title('spline2')
dx=diff(x);
dy=diff(y3);
dy_dx=dy./dx;
dy_dx0=dy_dx(1)
ytemp=y3(131:151);
ymin=min(ytemp);
index=find(y3==ymin);
xmin=x(index);
[xmin,ymin]
二、二維插值:
前面講述的都是一維插值,即節點為一維變數,插值函式是一元函式(曲線)。若節點
是二維的,插值函式就是二元函式,即曲面。如在某區域測量了若干點(節點)的高程(節
點值),為了畫出較精確的等高線圖,就要先插入更多的點(插值點),計算這些點的高程(插
值)。(1)
(2)網格節點:已知m× n個節點 (xi , y j , zij ),i = 1,2,",m; j = 1,2,",n,構造
乙個二元函式 z = f (x, y)通過全部已知節點,即 zij = f (xi , y j ),再利用
z = f (x, y)插值。
散亂節點:已知 n 個節點 (xi, yi, zi ),i = 1,2,",n ,構造乙個二元函式
z = f (x, y)通過全部已知節點,即 zi = f (xi, yi ),再利用 z = f (x, y)插值。
第四講職業
詞目 職業 打法 一 手指字母 zh 的指式。二 一手食指橫於另一手四指根部,模仿 業 字形。詞目 工人 打法 一 一手食 中指與另一手食指搭成 工 字形。二 雙手食指搭成 人 字形。詞目 農民 打法 一 雙手五指彎曲,一前一後,來回耙動,如用耙耙田之狀。二 雙手食指搭成 人 字形,並轉一圈。詞目 ...
第四講證明
角平分線及線段垂直平分線 知識點 一 線段垂直平分線 1 線段的垂直平分線也叫線段的中垂線。2 性質定理 線段垂直平分線上的點到線段兩端點的距離相等。3 逆定理 到線段兩端距離相等的點 段的垂直平分線上。二 角平分線 角平分線的性質 定理1 在角平分線上的點到這個角的兩邊的距離相等。定理2 在乙個角...
第四講光學
1.光的直線傳播 條件 光在同種,均勻介質中沿直線傳播 應用 排隊,射擊瞄準,雷射準直 小孔成像 晴天樹下的圓形光斑 小孔成像的特點 小孔成像的實驗條件要求 影子的形成 皮影,手影,無影燈,日食月食 影子的形成原因 影子的長短變化 日食的形成原因 月食的形成原因 2.光的反射 光從一種介質射向另一種...