版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
4.1線性代數(shù)運(yùn)算
4.2多項(xiàng)式運(yùn)算
4.3數(shù)據(jù)插值
4.4數(shù)據(jù)擬合
4.5數(shù)據(jù)分析
4.6數(shù)值積分與數(shù)值微分
4.7解常微分方程和常微分方程組
第4單元MATLAB典型應(yīng)用
4.1.1矢量和矩陣的范數(shù)
矢量x的p范數(shù)表征x的大小。矩陣A的p范數(shù)表征矢量變換Ax范數(shù)與矢量x范數(shù)的最大比值。矢量范數(shù)和矩陣范數(shù)分別定義如下:
4.1線性代數(shù)運(yùn)算norm(x,p)函數(shù)給出矢量x的p范數(shù),norm(A,p)函數(shù)給出矩陣A的p范數(shù),程序如下:
x=[20-1-57]
A=[9472;8635;9781]
x_fanshu=[norm(x,1)norm(x)norm(x,inf)]
A_fanshu=[norm(A,1)norm(A)norm(A,inf)]
程序輸出如下:
x=
20-1-57
A=
9472
8635
9781
x_fanshu=
15.00008.88827.0000
A_fanshu=
26.000021.329925.00004.1.2解線性方程組
MATLAB解線性方程組,需先將線性方程組變換為矩陣方程,然后用系數(shù)矩陣、右端項(xiàng)向量、矩陣左除運(yùn)算符“\”或右除運(yùn)算符“/”編程求解。
MATLAB解矩陣方程,系數(shù)矩陣非奇異則給出唯一解;方程個數(shù)大于自變量個數(shù)則給出最小二乘解,此時相當(dāng)于最小二乘擬合;系數(shù)矩陣奇異則給出無窮解或不定解。
問題1:試驗(yàn)檢測了某物理量的時間響應(yīng),結(jié)果見表4-1。試用延遲函數(shù)擬合表4-1所示的試驗(yàn)數(shù)據(jù)。表4-1時間和響應(yīng)的測定結(jié)果解問題1的程序如下:
clc;clearall;
t=[00.30.81.11.62.3]';y=[0.820.720.630.600.550.50]' %試驗(yàn)數(shù)據(jù)
A=[ones(size(t))exp(-t)];
c=A\y
T=[0:0.1:2.5]';A=[ones(size(T))exp(-T)];Y=A*c;%計(jì)算擬合曲線的數(shù)據(jù)
h=plot(t,y,'ok',T,Y,'--r');boxoff;%繪制試驗(yàn)數(shù)據(jù)點(diǎn)和擬合曲線,觀察比較
set(h,'LineWidth',2,'MarkerSize',8);
xlabel('x','FontName','Times','FontSize',16);
ylabel('y','FontName','Times','FontSize',16);程序執(zhí)行結(jié)果如下:
y=
0.8200
0.7200
0.6300
0.6000
0.5500
0.5000
A=
1.00001.0000
1.00000.7408
1.00000.4493
1.00000.3329
1.00000.2019
1.00000.1003
c=
0.4760
0.3413
擬合曲線與實(shí)驗(yàn)數(shù)據(jù)如圖4-1所示。圖4-1擬合曲線與試驗(yàn)數(shù)據(jù)點(diǎn)問題2:解下面的線性方程組。
解:系數(shù)矩陣非奇異,變換如下:
解問題2的程序如下:
clc;clearall;
A=[23-5;403;017]
B=[2;6;9]
x=[A\B(B'/A')']程序執(zhí)行結(jié)果如下:
A=
23-5
403
017
B=
2
6
9
x=
0.73640.7364
1.87271.8727
1.01821.01824.1.3矩陣求逆
矩陣求逆可用于解線性方程組,被求逆的矩陣必須是方陣。需要說明的是,解方程組推薦使用前面介紹的矩陣除法,原因是矩陣除法速度快、精度高。
矩陣非奇異,inv(A)函數(shù)給出A逆陣的唯一解,奇異則給出無窮解或不定解。程序如下:
clc;clearall;
A=[23-5;403;017]
B=[2;6;9]
An=inv(A)%求A的逆陣An
x1=det([BA(:,2:3)])/det(A);%克萊姆法則求x1的解,det(A)求A的行列式值
x2=det([A(:,1)BA(:,3)])/det(A); %克萊姆法則求x2
x3=det([A(:,1:2)B])/det(A);%克萊姆法則求x3
x=[A\BAn*B[x1;x2;x3]]%左除、逆陣乘、克萊姆等三法的方程組解比較
程序執(zhí)行結(jié)果如下:
A=
23-5
403
017
B=
2
6
9
An=
?0.0273 ?0.2364 -0.0818
?0.2545 -0.1273 ?0.2364
-0.0364 ?0.0182 ?0.1091
x=
0.73640.73640.7364
1.87271.87271.8727
1.01821.01821.01824.1.4Doolittle分解(LU分解)
使用高斯消去法將任意矩陣A分解為下三角矩陣L與上三角矩陣U,這兩個矩陣的乘積就是原矩陣,稱作LU分解或Doolittle分解,即任意矩陣的三角分解。
表達(dá)式[L,U]=lu(A)給出矩陣A的LU分解,用A-L*U驗(yàn)證分解結(jié)果的正確性。程序如下:
clc;clearall;
A=[3-2-0.90;-2410;00-10;-0.5-0.50.11]
[L,U]=lu(A)
E=A-L*U%計(jì)算LU分解的誤差
程序執(zhí)行結(jié)果如下:
A=
3.0000 -2.0000 -0.9000 0
-2.0000 4.0000 1.0000 0
0 ?0 -1.0000 0
-0.5000 -0.5000 0.1000 ?1.0000
L=
1.00000?0 0
-0.6667 1.00000 0
00 ?1.0000 0
-0.1667 -0.3125-0.0750 ?1.0000
U=
3.0000-2.0000 -0.9000 0
0?2.6667 0.4000 0
00 -1.0000 0
000?1.0000
E=
1.0e-016*
0000
0000
0000
0-0.5551004.1.5Cholesky分解
使用高斯消去法將對稱正定矩陣X分解為一個上三角矩陣R和它的轉(zhuǎn)置矩陣(下三角矩陣),R的轉(zhuǎn)置與R的乘積就是原矩陣,稱作Cholesky分解,即對稱正定矩陣的三角分解。
函數(shù)chol(X)給出對稱正定矩陣X的Cholesky分解,用X-R’*R驗(yàn)證分解結(jié)果的正確性。程序如下:
clc;clearall;
X=pascal(5)
R=chol(X)
E=X-R’*R %計(jì)算Cholesky分解的誤差
程序執(zhí)行結(jié)果如下:
X=
11111
12345
1361015
14102035
15153570
R=
11111
01234
00136
00014
00001
E=
00000
00000
00000
00000
000004.1.6QR分解
使用高斯消去法將任意矩陣X分解為一個一般矩陣Q和上三角矩陣R,Q與R的乘積就是原矩陣,稱作QR分解,即任意矩陣的正交三角分解。
表達(dá)式[Q,R]=qr(X)函數(shù)給出任意矩陣X的QR分解,用X-Q*R驗(yàn)證分解結(jié)果的正確性。程序如下:
clc;clearall;
X=[1324;5876;1291110]
[Q,R]=qr(X)
E=X-Q*R %計(jì)算QR分解的誤差程序執(zhí)行結(jié)果如下:
X=
1324
5876
1291110
Q=
-0.0767 -0.4737
-0.8774
-0.3835 -0.7982
0.4645
-0.9204
0.3721 -0.1204
R=
-13.0384 -11.5812 -12.9617 -11.8113
0 -4.4583 -2.4422 -2.9634
0 0
0.1720 -1.9267
E=
1.0e-014*
0.1110 0.17760.53290.4441
0
0.08880.17760.0888
0 0.35530.53290.35534.1.7特征值和特征向量
特征值和特征向量可用于求函數(shù)極值和搜尋主軸的坐標(biāo)系變換。方陣A的特征值矩陣λ和特征向量矩陣X滿足特征方程AX?=?Xλ,其中成立Axj=?λjxj,而λj為第j個特征值,xj為對應(yīng)λj的第j個特征向量且位于X矩陣的第j列。特征方程AX?=?Xλ展開如下:方陣A的廣義特征方程為AX?=?BXλ。
若A為實(shí)對稱陣,則λ為實(shí)數(shù)陣,否則λ為復(fù)數(shù)陣;如果A陣中有較小的元素,在計(jì)算特征值或者特征向量時增加選項(xiàng)“nobalance”以減少計(jì)算誤差。
表達(dá)式[X,lambda]=eig(A)給出矩陣A的特征陣lambda和特征向量陣X,表達(dá)式[X,lambda]=eig(A,b)給出矩陣A的廣義特征陣lambda和廣義特征向量陣X,程序如下:
clc;clearall;
A=[3-2-0.90;-2410;00-10;-0.5-0.50.11]
B=pascal(4)
[X1,lambda1]=eig(A,’nobalance’) %求矩陣A的特征陣和特征向量陣
[X2,lambda2]=eig(A,B) %求矩陣A的廣義特征陣和廣義特征向量陣
E1=A*X1-X1*lambda1 %計(jì)算特征方程誤差
E2=A*X2-B*X2*lambda2 %計(jì)算廣義特征方程誤差程序執(zhí)行結(jié)果如下:
A=
3.0000-2.0000-0.90000
-2.0000
4.0000
1.0000 0
00-1.0000 0
-0.5000-0.5000
0.1000
1.0000
B=
1111
1234
13610
141020
X1=
0.7808-0.4924 -0.0000 -0.1563
-1.0000-0.3845 -0.0000
0.1375
0?0 ?0 -1.0000
0.0240
1.0000 -1.0000
0.0453lambda1=
5.5616 0 0
0
0
1.4384 0
0
0 0
1.0000
0
0 0 0-1.0000
X2=
0.4963
0.0588?1.0000
0.0269
-1.0000
0.4716
0.9615-0.1360
0.7400-1.0000-0.4977
0.4337
-0.1947
0.4018-0.0435-1.0000lambda2=
67.9381 0 0 0
0 -1.9674 0 0
0 0 ?1.0736 0
0 0 0
0.0558
E1=
1.0e-014*
-0.2665 -0.0333 -0.0353-0.0167
0.4441 0.1221 0.0294 ?0.0028
?0 ?0 ?0 0
0.0333 -0.0222 0.0111 0
E2=
1.0e-013*
?0.2309 ?0.0269 0.0022 -0.0073
-0.0977 -0.0189 -0.0333 0.0056
-0.2076 -0.0044 -0.0078 ?0.0072
-0.5235 0.0236 0.0111 -0.00224.1.8奇異值分解
奇異值分解可應(yīng)用于最小二乘問題、廣義逆矩陣計(jì)算和其它許多技術(shù)領(lǐng)域。若A為實(shí)矩陣,則它可分解為正交陣P、奇異值對角陣λ、酉矩陣Q(滿足QTQ?=?I單位陣)轉(zhuǎn)置三因子的乘積,表示為下面的奇異值分解式為:表達(dá)式[P,lambda,Q]=svd(A)給出矩陣A奇異值分解式中的三個矩陣P、λ和Q。程序如下:
clc;clearall;
A=[12;34;56;78]
[P,lambda,Q]=svd(A) %求矩陣A奇異值分解式中的各個矩陣
E=A-P*lambda*Q‘ %計(jì)算奇異值分解式誤差
程序執(zhí)行結(jié)果如下:
A=
12
34
56
78P=
-0.1525 -0.8226 -0.3945-0.3800
-0.3499 -0.4214 0.2428 ?0.8007
-0.5474 -0.0201 0.6979 -0.4614
-0.7448 0.3812 -0.5462 ?0.0407
lambda=
14.2691?0
?00.6268
??0?0
?0?0
Q=
-0.6414?0.7672
-0.7672-0.6414E=
1.0e-014*
-0.0888-0.4885
0-0.1776
0-0.2665
-0.0888-0.5329考察下面的例子,一個最高冪次等于4的4階多項(xiàng)式,可轉(zhuǎn)換為如下的矩陣形式:4.2多?項(xiàng)?式?運(yùn)?算4.2.1多項(xiàng)式表達(dá)
在MATLAB中,多項(xiàng)式用降冪排列的系數(shù)行向量P表示,注意它包含零系數(shù)的項(xiàng)。
用方括弧[]生成多項(xiàng)式。程序如下:
clc;clearall;
P1=[1-12025116] %創(chuàng)建4階多項(xiàng)式
P2=[123] %創(chuàng)建2階多項(xiàng)式
程序執(zhí)行結(jié)果如下:
P1=
1-12025116
P2=
1234.2.2多項(xiàng)式算術(shù)運(yùn)算與微分
roots(P)函數(shù)解出多項(xiàng)式P的根,poly(R)函數(shù)解出以R為根的多項(xiàng)式,polyder(P)函數(shù)給出多項(xiàng)式P的微分,conv(P1,P2)函數(shù)給出多項(xiàng)式P1與P2的乘積結(jié)果,deconv(P1,P2)函數(shù)給出多項(xiàng)式P1除以P2的商和余數(shù)。多項(xiàng)式加減法與矩陣加減相同,但需補(bǔ)0以保證加減的兩矩陣維數(shù)相同。程序如下:
clc;clearall;
P1=[1-12025116]
P2=[123]
R1=roots(P1)
P10=poly(R1)
P3=P1+[zeros(1,2)P2]
P4=P1-[zeros(1,2)P2]
P5=conv(P1,P2)
P6=polyder(P1)
[P12,R12]=deconv(P1,P2)
程序執(zhí)行結(jié)果如下:
P1=
1-12025116
P2=
123
R1=
11.7473
2.7028
-1.2251+1.4672i
-1.2251-1.4672i
P10=
1.0000-12.0000-0.000025.0000116.0000
P3=
1-12127119P4=
1-12-123113
P5=
1-10-21-11166307348
P6=
4-36025
P12=
1-1425
R12=
00017414.2.3多項(xiàng)式值計(jì)算
用polyval(P,x)函數(shù)計(jì)算多項(xiàng)式P在自變量x上的值y=Px。程序如下:
clc;clearall;
P1=[1-12025116];
x=0:0.5:14;
y=polyval(P1,x);
plot(x,y,'--*');boxoff;
xlabel('x'),ylabel('y=Px')
程序執(zhí)行結(jié)果如圖4-2所示。圖4-2多項(xiàng)式值計(jì)算試驗(yàn)測得人工控制變量與其響應(yīng)變量的n組數(shù)據(jù),若解析描述變量間關(guān)系或?yàn)楣こ虘?yīng)用提供數(shù)據(jù),常常需要補(bǔ)充沒有試驗(yàn)測定過的變量值,此任務(wù)可通過“數(shù)據(jù)擬合”或“數(shù)據(jù)插值”的方法實(shí)現(xiàn)。
假定試驗(yàn)測定的數(shù)據(jù)是準(zhǔn)確的,在試驗(yàn)數(shù)據(jù)范圍之內(nèi)插入與試驗(yàn)數(shù)據(jù)規(guī)律近似的數(shù)值,稱作數(shù)據(jù)內(nèi)插法;在試驗(yàn)數(shù)據(jù)范圍之外插入與試驗(yàn)數(shù)據(jù)規(guī)律近似的數(shù)值,稱作數(shù)據(jù)外插(外推)法。數(shù)據(jù)的內(nèi)插或外插合稱為數(shù)據(jù)插值(datainterpolation)。一般不推薦采用外插。4.3數(shù)據(jù)插值如圖4-3所示,若試驗(yàn)測定變量(x,y)獲得容量為的一個樣本,則可按某種算法即插值函數(shù)計(jì)算插值點(diǎn)實(shí)現(xiàn)點(diǎn)插值。其中,插值函數(shù)穿過所有試驗(yàn)數(shù)據(jù)點(diǎn),根據(jù)該函數(shù)類型可將插值方法分成若干類。圖4-3插值原理4.3.1插值方法
表達(dá)式Y(jié)=interp1(x,y,X,method,option)可實(shí)現(xiàn)一元函數(shù)插值。其中,輸入?yún)?shù)x、y分別為自變量和因變量的試驗(yàn)測定值,X為自變量的指定值,Y為因變量依照插值函數(shù)的計(jì)算值,參數(shù)method是插值方法選項(xiàng)字符串,參數(shù)option是外推選項(xiàng)字符串??蛇x的插值方法有如下幾種:
(1)?method='nearest':按最鄰近試驗(yàn)點(diǎn)原則在指定點(diǎn)(X,Y)上實(shí)施插值;
(2)?method='linear':按線性函數(shù)在指定點(diǎn)(X,Y)上實(shí)施插值;
(3)?method='spline':按分段樣條函數(shù)在指定點(diǎn)(X,Y)上實(shí)施插值;
(4)?method='pchip':遵照形態(tài)保護(hù)原則按分段三次函數(shù)在指定點(diǎn)(X,Y)上實(shí)施插值;
(5)?method='cubic':按分段三次函數(shù)在指定點(diǎn)(X,Y)上實(shí)施插值;
(6)?method='v5cubic':按MATLAB5的三次函數(shù)規(guī)則在指定點(diǎn)(X,Y)上實(shí)施內(nèi)插,若插值點(diǎn)是外插則執(zhí)行樣條插值。
MATLAB通過參數(shù)option控制插值規(guī)則:
(1)?option缺省:只允許內(nèi)插;
(2)?option='extrap':允許在自變量x試驗(yàn)區(qū)間外的插值點(diǎn)(X,Y)上實(shí)施外插;
(3)?option='pp':允許在自變量x試驗(yàn)區(qū)間外的插值點(diǎn)(X,Y)上實(shí)施pp形式(分段多項(xiàng)式)外插。4.3.2一元函數(shù)插值
表達(dá)式Y(jié)=interp1(x,y,X,method)根據(jù)試驗(yàn)數(shù)據(jù)點(diǎn)(x,y)和插值方法method在自變量X的指定值處計(jì)算響應(yīng)變量Y的值,即依照插值函數(shù)Y?=?f?(X)插值(X,Y)。下面程序遍歷各種插值方法實(shí)施插值。
clc;closeall;clearall;
x=[00.631.261.892.513.143.774.405.035.656.28] %試驗(yàn)值x
y=[00.201.383.555.334.48-0.89-10.87-22.86-31.84-31.94] %試驗(yàn)值y
x2=0:pi/20:2*pi;y2=x2.^2.*sin(0.85*x2); %原函數(shù)計(jì)算值
X=pi/10:pi/5:2*pi; %指定自變量插值點(diǎn)
Y=interp1(x,y,X,'nearest'); %響應(yīng)變量鄰近點(diǎn)插值
%Y=interp1(x,y,X,'linear'); %響應(yīng)變量線性插值
%Y=interp1(x,y,X,'spline'); %響應(yīng)變量樣條插值%Y=interp1(x,y,X,'pchip');%響應(yīng)變量形態(tài)保護(hù)分段三次函數(shù)插值
%Y=interp1(x,y,X,'cubic');%響應(yīng)變量分段三次函數(shù)插值
%Y=interp1(x,y,X,'v5cubic');%響應(yīng)變量MATLAB5三次函數(shù)插值
xmin=min([min(x),min(X),min(x2)]); %橫軸最小值
xmax=max([max(x),max(X),max(x2)]); %橫軸最大值
ymin=min([min(y),min(Y),min(y2)]); %縱軸最小值
ymax=max([max(y),max(Y),max(y2)]); %縱軸最大值
plot(x,y,'ob',X,Y,'pk',x2,y2,'--r','LineWidth',2,'MarkerSize',10);boxoff;
axis([xminxmaxyminymax]);set(gca,'LineWidth',1,'FontSize',18,'FontName','Times');
xlabel('x','FontSize',18,'FontName','Times');
ylabel('f(x)','FontSize',18,'FontName','Times');
legend('試驗(yàn)數(shù)據(jù)點(diǎn)','插值點(diǎn)','原函數(shù)y=f(x)','FontSize',18,'FontName','Times')
圖4-4展示了試驗(yàn)數(shù)據(jù)點(diǎn)、插值點(diǎn)和原函數(shù)曲線(變量x,y的準(zhǔn)確值)。試比較插值效果。Nearest插值法Linear插值法Spline插值法Pchip插值法Cubic插值法V5cubic插值法圖4-4一元函數(shù)插值的插值效果對照4.3.3二元函數(shù)插值
表達(dá)式Y(jié)=interp2(x1,x2,y,X1,X2,method)根據(jù)試驗(yàn)數(shù)據(jù)點(diǎn)(x1,x2,y)和插值方法method在自變量(X1,X2)指定值處計(jì)算響應(yīng)變量Y的值,即依照插值函數(shù)Y?=?f(X1,X2)插值(X1,X2,Y)。程序如下:
clc;closeall;clearall;
[x1,x2]=meshgrid(-3:0.35:3); %創(chuàng)建自變量的網(wǎng)格點(diǎn)(x1,x2)
y=peaks(x1,x2); %用多峰函數(shù)計(jì)算網(wǎng)格點(diǎn)(x1,x2)上的響應(yīng)值y
mesh(x1,x2,y); %繪制多峰函數(shù)網(wǎng)格圖
[X1,X2]=meshgrid(-3:.125:3); %指定自變量的網(wǎng)格插值點(diǎn)(X1,X2)
Y=interp2(x1,x2,y,X1,X2,'nearest');%在網(wǎng)格插值點(diǎn)上用鄰近法插值Y
%Y=interp2(x1,x2,y,X1,X2,'linear');%在網(wǎng)格插值點(diǎn)上線性插值Y
%Y=interp2(x1,x2,y,X1,X2,'spline');%在網(wǎng)格插值點(diǎn)上用樣條法插值Yholdon,mesh(X1,X2,Y+15);holdoff;%繪制平移15的插值曲面網(wǎng)格圖
axis([-33-33-520]);
xlabel('x_1','FontSize',18,'FontName','Times');
ylabel('x_2','FontSize',18,'FontName','Times');
zlabel('y','FontSize',18,'FontName','Times');
set(gca,'LineWidth',1,'FontSize',18,'FontName','Times');
程序執(zhí)行結(jié)果如圖4-5所示。Nearest插值法Linear插值法Spline插值法Cubic插值法圖4-5二元函數(shù)插值的插值效果對照4.3.4三元函數(shù)插值
表達(dá)式Y(jié)=interp3(x1,x2,x3,y,X1,X2,X3,method)根據(jù)試驗(yàn)數(shù)據(jù)點(diǎn)(x1,x2,x3,y)和插值方法method在自變量(X1,X2,X3)指定值處插值響應(yīng)變量Y,即依照插值函數(shù)Y?=?f(X1,X2,X3)插值(X1,X2,X3,Y)。程序如下:
clc;closeall;clearall;
x1=linspace(0,2*pi,9);x2=x1;x3=x1; %自變量x1,x2,x3的試驗(yàn)值
[x1,x2,x3]=meshgrid(x1,x2,x3); %創(chuàng)建自變量的網(wǎng)格點(diǎn)(x1,x2,x3)
y=sin(x1).*cos(x2).*x3.^2; %自變量網(wǎng)格點(diǎn)(x1,x2,x3)上的響應(yīng)值y
X1=[pi/3pi/6];X2=[pi/3pi/4];X3=[pi/3pi/5]; %自變量插值點(diǎn)(X1,X2,X3)
[X1,X2,X3]=meshgrid(X1,X2,X3);%創(chuàng)建自變量插值網(wǎng)格點(diǎn)(X1,X2,X3)Y1=interp3(x1,x2,x3,y,X1,X2,X3,'nearest')%(X1,X2,X3)上的響應(yīng)變量插值Y1
Y2=interp3(x1,x2,x3,y,X1,X2,X3,'linear')%(X1,X2,X3)上的響應(yīng)變量插值Y2
Y3=interp3(x1,x2,x3,y,X1,X2,X3,'spline')%(X1,X2,X3)上的響應(yīng)變量插值Y3
Y4=interp3(x1,x2,x3,y,X1,X2,X3,'cubic')%(X1,X2,X3)上的響應(yīng)變量插值Y4
程序執(zhí)行結(jié)果如下:
Y1(:,:,1)=
0.30840.3084
0.30840.3084
Y1(:,:,2)=
0.30840.3084
0.30840.3084Y2(:,:,1)=
0.46800.2742
0.70200.4112
Y2(:,:,2)=
0.18720.1097
0.28080.1645
Y3(:,:,1)=
0.47090.2757
0.66920.3918
Y3(:,:,2)=
0.16950.0992
0.24090.1410Y4(:,:,1)=
0.47190.2849
0.66460.4012
Y4(:,:,2)=
0.16990.1026
0.23930.14444.3.5n元函數(shù)插值
n元函數(shù)插值依照二元函數(shù)和三元函數(shù)插值類推。其插值函數(shù)的調(diào)用格式如下:
Y=interpn(x1,x2,x3,...,y,X1,X2,X3,...)
Y=interpn(x1,x2,x3,...,y,X1,X2,X3,...,method)
Y=interpn(x1,x2,x3,...,y,X1,X2,X3,...,method,extrapval)
與二元函數(shù)插值和四元函數(shù)插值一樣,可選的插值方法method有如下4種:
(1)?method='nearest':按最鄰近試驗(yàn)點(diǎn)原則在指定點(diǎn)(X,Y)上實(shí)施插值;
(2)?method='linear':按線性函數(shù)在指定點(diǎn)(X,Y)上實(shí)施插值;
(3)?method='spline':按分段樣條函數(shù)在指定點(diǎn)(X,Y)上實(shí)施插值;
(4)?method='cubic':按分段三次函數(shù)在指定點(diǎn)(X,Y)上實(shí)施插值。4.3.6一元周期函數(shù)的FFT法插值
語句Y=interpft(y,N)采用FFT算法將一元周期函數(shù)y(長度為M的采樣序列)變換至傅里葉數(shù)域,在該數(shù)域確定N個插值點(diǎn),然后將N個插值點(diǎn)傅里葉反變換到原數(shù)域?qū)崿F(xiàn)插值Y。
語句Y=interpft(y,N)根據(jù)原周期函數(shù)y執(zhí)行N點(diǎn)FFT法插值Y。程序如下:
clc;closeall;clearall;
K=6;M=15;N=K*M;%指定采樣倍率K、原函數(shù)采樣點(diǎn)數(shù)M和插值點(diǎn)數(shù)N
x=linspace(0,2*pi,M);y=sin(x);%原周期函數(shù)y=f(x)的采樣點(diǎn)(x,y)
R=max(x)-min(x); %原周期函數(shù)自變量x的極差R(x的數(shù)據(jù)范圍)
dx=R/M; %原周期函數(shù)自變量x的采樣間隔dx
dX=dx*M/N; %FFT法插值自變量X的采樣間隔dXX=x;
fori=1:K-1;X=[Xx+i*dX];end; %在x數(shù)據(jù)范圍內(nèi)生成自變量插值點(diǎn)X
X=sort(X);Y=interpft(y,N); %在自變量插值點(diǎn)X上按FFT法插值Y
X=X(1:N-K+1);Y=Y(1:N-K+1); %剔除x數(shù)據(jù)范圍外的插值點(diǎn)
plot(x,y,'ok',X,Y,'*b','MarkerSize',9,'LineWidth',1);boxoff; %繪圖比較
xmin=min([min(x)min(X)]);xmax=max([max(x)max(X)]);
ymin=min([min(y)min(Y)]);ymax=max([max(y)max(Y)]);
axis([xminxmaxyminymax]);
xlabel('x','FontSize',18,'FontName','Times');
ylabel('y','FontSize',18,'FontName','Times');
set(gca,'LineWidth',1,'FontSize',18,'FontName','Times');
legend('Originaldata','Interpolateddata');
程序執(zhí)行結(jié)果如圖4-6所示。圖4-6對照FFT法的插值點(diǎn)“*”與原函數(shù)點(diǎn)“”若響應(yīng)變量y與自變量系之間的關(guān)系可由下面的模型表述:4.4數(shù)據(jù)擬合4.4.1多項(xiàng)式最小二乘擬合
下面以一個節(jié)流元件的流量特性為例討論數(shù)據(jù)擬合問題。節(jié)流元件的壓差流量模型如下:
人工調(diào)節(jié)壓差x的值,測定流量的響應(yīng)值y,獲得表4-2所示的樣本。試用2階多項(xiàng)式做數(shù)據(jù)擬合,即擬合模型為
,它是壓差流量模型的一個近似。表4-2節(jié)流元件流量與壓差的試驗(yàn)測定結(jié)果
polyfit(x,y,p)函數(shù)給出數(shù)據(jù)(x,y)的p階多項(xiàng)式擬合函數(shù)。程序如下:
clc;clearall;
x=0:0.1:1;y=[0.451.983.286.167.087.347.669.569.489.3011.20];
P=polyfit(x,y,2)
x1=0:0.01:1.1;y1=polyval(P,x1);
h=plot(x,y,'*k',x1,y1,'--r');boxoff;
axis([0max(x1)0max(max(y),max(y1))]);
set(gca,'FontSize',16);
set(h,'LineWidth',2,'MarkerSize',10);
xlabel('x');ylabel('y');
legend('試驗(yàn)數(shù)據(jù)點(diǎn)','y=-8.2413x^2+18.1513x+0.4897');
%title('擬合模型y=-9.8147x^2+20.1338x-0.0327');程序執(zhí)行結(jié)果如下:
P=
-8.241318.15130.4897
多項(xiàng)式擬合函數(shù)y?=?-8.2413x2?+?18.1513x?+?0.4897對照試驗(yàn)數(shù)據(jù)點(diǎn),如圖4-7所示。圖4-7多項(xiàng)式擬合函數(shù)對照試驗(yàn)數(shù)據(jù)點(diǎn)4.4.2一元函數(shù)最小二乘擬合
下面以節(jié)流元件的壓差流量模型為擬合模型,做數(shù)據(jù)的最小二乘擬合。
k=lsqcurvefit(fun,k0,x,y)函數(shù)擬合數(shù)據(jù)(x,y),并給出模型參數(shù)k的最小二乘解。程序如下:
clc;clearall;
x=0:0.1:1;y=[0.451.983.286.167.087.347.669.569.489.3011.20];
fun=@(k,x)k*sqrt(x);
k0=1;[k,Resnorm,Residual,Exitflag]=lsqcurvefit(fun,k0,x,y)
x1=0:0.01:1.1;y1=k*sqrt(x1);
h=plot(x,y,'*k',x1,y1,'--r');boxoff;
axis([0max(x1)0max(max(y),max(y1))]);
set(gca,'FontSize',16);
set(h,'LineWidth',2,'MarkerSize',10);
xlabel('x');ylabel('y');
legend('試驗(yàn)數(shù)據(jù)點(diǎn)','擬合函數(shù)y=10.4670x^1^/^2')程序執(zhí)行結(jié)果如下:
k=
10.4670
Resnorm=
6.1245
Residual=
-0.45001.33001.4010-0.4270-0.46010.06130.4477-0.8026
-0.11800.6299-0.7330
Exitflag=
1
最小二乘擬合函數(shù)
對照試驗(yàn)數(shù)據(jù)點(diǎn),如圖4-8所示。圖4-8最小二乘擬合函數(shù)對照試驗(yàn)數(shù)據(jù)點(diǎn)數(shù)據(jù)分析包括簡單統(tǒng)計(jì)和其它數(shù)據(jù)描述工作,執(zhí)行數(shù)據(jù)分析的MATLAB函數(shù)量極多。
表4-3給出了一些常用數(shù)據(jù)分析函數(shù),使用help命令可查閱詳細(xì)的函數(shù)調(diào)用格式。4.5數(shù)據(jù)分析表4-3MATLAB常用數(shù)據(jù)分析函數(shù)4.5.1數(shù)據(jù)概括
下面通過一個實(shí)例介紹max函數(shù)、min函數(shù)、mean函數(shù)、median函數(shù)和std函數(shù)的用法。程序如下:
clc;closeall;clearall;
x=[48271;35107;16715];y=[1357;2468;11233127];
x_max1=[max(x);max(x,[],1)] %求列向量最大值
x_max2=max(x,[],2) %求行向量最大值
x_max3=max(x,y) %求兩矩陣對應(yīng)元素最大值
x_min1=[min(x);min(x,[],1)] %求列向量最小值
x_min2=min(x,[],2) %求行向量最小值
x_min3=min(x,y) %求兩矩陣對應(yīng)元素最小值
x_mean1=[mean(x);mean(x,1)] %求列向量均值
x_mean2=mean(x,2) 求行向量均值
x_median1=[median(x);median(x,1)] %求列向量中值
x_median2=median(x,2) %求行向量中值
x_std1=[std(x);std(x,1)]
%求列向量標(biāo)準(zhǔn)差,除數(shù)n-1
x_std2=[std(x,0,1);std(x,1,1)]
%求列向量標(biāo)準(zhǔn)差,0除數(shù)n-1,1除數(shù)n
x_std3=[std(x,0,2)std(x,1,2)]
%求行向量標(biāo)準(zhǔn)差,0除數(shù)n-1,1除數(shù)n
x_coef=100*std(x)./mean(x)
%求列向量變異系數(shù)
程序執(zhí)行結(jié)果如下:
x_max1=
481071
481071
x_max2=
71
10
15
x_max3=
48571
35108
11233127x_min1=
1527
1527
x_min2=
2
3
1
x_min3=
1327
2467
16715
x_mean1=
2.66676.33336.333331.0000
2.66676.33336.333331.0000x_mean2=
21.2500
6.2500
7.2500
x_median1=
36715
36715
x_median2=
6.0000
6.0000
6.5000
x_std1=
1.52751.52754.041534.8712
1.24721.24723.299828.4722x_std2=
1.52751.52754.041534.8712
1.24721.24723.299828.4722
x_std3=
33.260328.8043
2.98612.5860
5.79515.0187
x_coef=
57.282224.118863.8124112.48774.5.2協(xié)差陣和相關(guān)陣
協(xié)差陣函數(shù)cov、相關(guān)陣函數(shù)corrcorf和方差函數(shù)var。程序如下:
x=[482716;3510723;1671545]
x_cov=cov(x); %求矩陣x中列向量的協(xié)差陣
x_corr=corrcoef(x) %求矩陣x中列向量的相關(guān)陣
x_var=var(x) %求矩陣x中列向量的方差
程序執(zhí)行結(jié)果如下:
x=
482716
3510723
1671545x_cov=1.0e+003*
0.00230.0012-0.00280.0360-0.0297
0.00120.0023-0.00620.0520-0.0178
?-0.0028-0.00620.0163-0.13600.0442
0.03600.0520-0.13601.2160-0.5160
-0.0297-0.01780.0442-0.51600.3823
x_corr=
1.00000.5000-0.45900.6758-0.9933
0.50001.0000-0.99890.9762-0.5971
?-0.4590-0.99891.0000-0.96500.5589
0.67580.9762-0.96501.0000-0.7568
?-0.9933-0.59710.5589-0.75681.0000
x_var=1.0e+003*
0.00230.00230.01631.21600.38234.5.3矩陣元素的求和與累加和
求和函數(shù)sum與累加和函數(shù)cumsum。程序如下:
x=[482716;3510723;1671545]
sx1=[sum(x);sum(x,1)] %求矩陣x中列向量元素的和
sx2=sum(x,2) %求矩陣x中行向量元素的和
csx1=[cumsum(x)cumsum(x,1)] %求矩陣x中列向量元素的累加和
csx2=cumsum(x,2) %求矩陣x中行向量元素的累加和
程序執(zhí)行結(jié)果如下:
x=
482716
3510723
1671545sx1=
819199374
819199374
sx2=
91
48
74
csx1=
482716482716
713127829713127829
819199374819199374
csx2=
412148591
38182548
171429744.5.4矩陣元素的乘積與累乘積
乘積函數(shù)prod與累乘積函數(shù)cumprod。程序如下:
x=[482716;3510723;1671545]
px1=[prod(x);prod(x,1)] %求矩陣x中列向量元素的乘積
px2=prod(x,2) %求矩陣x中行向量元素的乘積
cpx1=[cumprod(x);cumprod(x,1)] %求矩陣x中列向量元素的累乘積
cpx2=cumprod(x,2) %求矩陣x中行向量元素的累乘積
程序執(zhí)行結(jié)果如下:
x=
482716
3510723
1671545px1=
1224014074556210
1224014074556210
px2=
27264
24150
28350
cpx1=
482716
124020497138
1224014074556210
482716
124020497138
1224014074556210cpx2=
43264454427264
315150105024150
1642630283504.5.5數(shù)據(jù)排序
元素排序函數(shù)sort和向量排序函數(shù)sortrows。程序如下:
x=[482716;3510723;1671545]
y1=sort(x,2) %矩陣x中每行元素按升序方式排序
y2=[sort(x);sort(x,1)] %矩陣x中每列元素按升序方式排序
y3=sort(x,2,'descend') %矩陣x中每行元素按降序方式排序
y4=sortrows(x,1)%矩陣x中每一行向量按第1列元素的升序方式排序
y5=sortrows(x,3)%矩陣x中每一行向量按第3列元素的升序方式排序
程序執(zhí)行結(jié)果如下:
x=
482716
3510723
1671545
y1=
246871
3571023
1671545
y2=
15276
3671523
48107145
15276
3671523
48107145y3=
718642
2310753
4515761
y4=
1671545
3510723
482716
y5=
482716
1671545
35107234.6.1數(shù)值積分
trapz(x,y)函數(shù)計(jì)算梯形面積之和逼近函數(shù)積分。程序如下:
x=0:pi/10:pi;
y=sin(x);
Z1=trapz(x,y) %計(jì)算f(X)dx之和,dx=pi/10
Z2=pi/10*trapz(y) %計(jì)算f(x)×1之和與pi/10的乘積
程序執(zhí)行結(jié)果如下:
Z1=
1.9835
Z2=
1.98354.6數(shù)值積分與數(shù)值微分
quad(fx,a,b,tol)函數(shù)在x區(qū)間[a,b]上對函數(shù)fx采樣并用Simpson遞歸法(ecursiveadaptiveSimpsonquadrature)以允差tol計(jì)算數(shù)值積分逼近函數(shù)積分。程序如下:
fx=@(x)sin(x);
Q=quad(fx,0,pi,1e-2)
程序輸出如下:
Q=
2.0000
trapz(x,y)函數(shù)數(shù)值積分原理,如圖4-9所示。圖4-9trapz(x,y)函數(shù)數(shù)值積分原理
quadgk(fx,a,b,tol)函數(shù)在x區(qū)間[a,b]上對函數(shù)fx采樣并用Gauss-Kronrod遞歸法(adaptiveGauss-Kronrodquadrature)以允差tol計(jì)算數(shù)值積分逼近函數(shù)積分。程序如下:
fx=@(x)sin(x);
Q=quadgk(fx,0,pi,'AbsTol',1e-2)
程序輸出如下:
Q=
2
quadl(fun,a,b,tol)函數(shù)在x區(qū)間[a,b]上對函數(shù)fx采樣并用Lobatto遞歸法(recursiveadaptiveLobattoquadrature)以允差tol計(jì)算數(shù)值積分逼近函數(shù)積分。程序如下:
fx=@(x)sin(x);
Q=quadl(fx,0,pi,1e-2)
程序輸出如下:
Q=
2.0000
quadv(fx,a,b,tol)函數(shù)在x區(qū)間[a,b]上對向量函數(shù)fx(多個函數(shù)組成的向量)采樣,采用矢量化方法(VectorizedAdaptiveQuadrature)以允差tol計(jì)算每個函數(shù)的數(shù)值積分。程序如下:
fx=@(x)sin(x+(0:pi/2:pi));
Qv=quadv(fx,0,pi,1e-2)
程序輸出如下:
Qv=
2.00000.0000-2.0000
quadv函數(shù)對所示三條函數(shù)曲線積分如圖4-10所示。圖4-10quadv函數(shù)對所示三條函數(shù)曲線積分
quad2d(fxy,a,b,c,d,param1,val1,param2,val2,...)函數(shù)在x區(qū)間[a,b]及y區(qū)間[c,d]組成的區(qū)域上對二元函數(shù)f(x,y)采樣,采用矢量化方法(VectorizedAdaptiveQuadrature)計(jì)算二重?cái)?shù)值積分以逼近函數(shù)積分(注意,MATLAB2009a以前的版本無此函數(shù))。程序如下:
fxy=@(x,y)abs(x.^2+y.^2-0.25);
c=@(x)-sqrt(1-x.^2);
d=@(x)sqrt(1-x.^2);
Q2d=quad2d(fun,-1,1,c,d,'AbsTol',1e-5)
程序輸出如下:
Q2d=
0.98174.6.2數(shù)值微分
積分是函數(shù)乘以自變量微分的累積,因此積分結(jié)果對函數(shù)變化不敏感。導(dǎo)數(shù)是函數(shù)微分與自變量微分之比,較小函數(shù)變化有時也會產(chǎn)生巨大的導(dǎo)數(shù),故微分問題對函數(shù)變化極為敏感。因此,數(shù)值微分是一種可能導(dǎo)致巨大誤差的計(jì)算工作,應(yīng)當(dāng)盡量避免數(shù)值微分,尤其是對試驗(yàn)數(shù)據(jù)直接數(shù)值微分。較合理的做法是,先對試驗(yàn)數(shù)據(jù)進(jìn)行數(shù)據(jù)擬合,再對擬合數(shù)據(jù)執(zhí)行數(shù)值微分。
函數(shù)diff(y)對y作1階差分,diff(y,k)對y作k階差分。程序如下:clc;closeall;clearall;
x=0:pi/10:2*pi;n=length(x);y=exp(-x).*sin(2*x); %函數(shù)y=f(x)和微分點(diǎn)(x,y)
dx=diff(x);dy=diff(y); %計(jì)算x差分和y差分
X=x;P=polyfit(x,y,7);Y=polyval(P,X); %采用7階多項(xiàng)式在X上擬合Y值
dX=diff(X);dY=diff(Y); %計(jì)算X差分和Y差分
續(xù)程序(可省略):
plot(x,y,'--r',x(1:n-1),dy./dx,'ob',X(1:n-1),dY./dX,'pk');%繪圖比較數(shù)值導(dǎo)數(shù)
ymin=min(dy./dx);ymax=max(dy./dx);
Ymin=min(dY./dX);Ymax=max(dY./dX);
axis([min(x)max(x)min(ymin,Ymin)max(ymax,Ymax)]);boxoff;
set(gca,'FontSize',18,'FontName','Times')
xlabel('x','FontSize',18,'FontName','Times');
ylabel('dy/dx','FontSize',18,'FontName','Times');
legend('被微分函數(shù)y=e^-^x*sin(2x)','直接法數(shù)值導(dǎo)數(shù)dy/dx','擬合法數(shù)值導(dǎo)數(shù)dY/dX');
程序輸出如圖4-11所示。圖4-11直接法與擬合法的數(shù)值微分比較語句[Fx1,Fx2,...]=gradient(F,h1,h2,...)以x1間隔h1、x2間隔h2等計(jì)算函數(shù)F的數(shù)值梯度,語句[Fx1,Fx2,...]=gradient(F)缺省h1=h2=…=1。若函數(shù)F是向量,則為一元函數(shù),若函數(shù)F是n維矩陣,則為多元函數(shù),矩陣每一個元素對應(yīng)n個自變量的一組值,維序號與自變量序號一致。程序如下:
clc;closeall;clearall;
v=0:pi/10:2*pi;
[x1,x2]=meshgrid(v);
F=sin(0.85*x1).*cos(0.75*x2);
[Fx1,Fx2]=gradient(F,pi/5,pi/5);
figure,mesh(x1,x2,F);view(-25,45);boxoff;
續(xù)程序(可省略):
set(gca,'FontSize',18,'FontName','Times');
xlabel('x_1','FontSize',18,'FontName','Times');
ylabel('x_2','FontSize',18,'FontName','Times');
zlabel('F(x_1,x_2)','FontSize',18,'FontName','Times');
figure,contour(v,v,F)
holdon,quiver(v,v,Fx1,Fx2),holdoff
set(gca,'FontSize',18,'FontName','Times');
xlabel('x_1','FontSize',18,'FontName','Times');
ylabel('x_2','FontSize',18,'FontName','Times');
程序輸出如圖4-12所示。圖4-12二元函數(shù)的梯度計(jì)算和結(jié)果展示(a)二元函數(shù)
(b)函數(shù)y的等高線與梯度
MATLAB可解常微分方程(ODE:ordinarydifferentialequations)組,其標(biāo)準(zhǔn)型如下:4.7解常微分方程和常微分方程組或
將常微分方程組編寫成一個函數(shù),需符合上面所示的標(biāo)準(zhǔn)型輸入輸出,其中:4.7.1解常微分方程
求解下面的一維常微分方程問題。
解:式(4.7.1
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高鉀型周期性癱瘓病因介紹
- 2023工作內(nèi)容保密協(xié)議書七篇
- 韋尼克腦病病因介紹
- 面部神經(jīng)炎病因介紹
- 路易體癡呆病因介紹
- 蠓性皮炎病因介紹
- 3篇 2024小學(xué)校長年度述職報(bào)告
- 中考?xì)v史復(fù)習(xí)教材知識梳理模塊七湖南地方文化常識
- (2024)河流治理工程建設(shè)項(xiàng)目可行性研究報(bào)告(一)
- 2024年全球及中國智能交通行業(yè)概述分析及應(yīng)用領(lǐng)域調(diào)研報(bào)告
- 英語考試-同等學(xué)力申碩英語大綱-1
- 2023年湖南申論(鄉(xiāng)鎮(zhèn)卷)解析及參考答案
- 研學(xué)旅行PPT模板
- 不安全行為辨識及風(fēng)險(xiǎn)評價(jià)表
- 二年級看圖猜成語課件
- 學(xué)生作品-彝族簡介
- 2023年天津市高中物理學(xué)業(yè)水平試題真題含答案
- 帶隊(duì)伍:不會帶團(tuán)隊(duì)你就只能干到死
- 施工組織設(shè)計(jì)-與建設(shè)、監(jiān)理、設(shè)計(jì)、分包等單位的配合及協(xié)調(diào)措施(純方案,)
- 橋梁實(shí)心墩(高墩) 翻模工程專項(xiàng)施工方案
- 7.1 設(shè)計(jì)的評價(jià)與優(yōu)化設(shè)計(jì)方案 課件高中通用技術(shù)蘇教版(2019)必修《技術(shù)與設(shè)計(jì)1》
評論
0/150
提交評論