函數式-直接確定型模型
3.1知識要點和背景:函數 — 直接確定性模型
?????
?3.2實驗與觀察:插值與擬合
3.2.1? 插值方法與多項式擬合的概念
3.2.2? 用Matlab作插值和擬合
3.2.3?? 用鼠標選節點 觀察插值、擬合的效果
??????
3.2.4? 觀察程序說明
zxy3_1.m
【????? clf,a=-1;b=1;n=100;
? %用內聯函數inline命令定義函數,
? %在后面可直接用于函數g的計算,要改變函數做實驗,可按此格式重新定義g
g=inline('x^2-x^4');??? xx=linspace(a,b,n);
for i=1:n
?? gx(i)=gxx(i));?? % 前面已經用inline命令定義了g,可以這樣用g計算函數值
end
ymin=min(gx)*0.8;ymax=max(gx)*1.2;%分四個界面畫圖g的圖形,以便于結果比較
subplot(2,2,1),
plot(xx,gx,'--'),grid,hold on,axis([a b ymin ymax]),title('近鄰插值')
subplot(2,2,2),
plot(xx,gx,'--'),grid,hold on,axis([a b ymin ymax]),title('線性插值')
subplot(2,2,3),
plot(xx,gx,'--'),grid,hold on,axis([a b ymin ymax]),title('樣條插值')
subplot(2,2,4),plot(xx,gx,'--'),
grid,hold on,axis([a b ymin ymax]),title('多項式擬合')
????????? %用鼠標在屏幕上選點[x,y,button] = ginput(n),可套用下面程序的格式
button=1;
x1=[a];y1=[gx(1)];
while button==1
?[xi,yi,button]=ginput(1);
?????? subplot(2,2,1),h=plot(xi,yi,'ro')?????????????? %在4個圖形窗口畫點
????? subplot(2,2,2),h=plot(xi,yi,'ro')??????
????? subplot(2,2,3),h=plot(xi,yi,'ro')??
????? subplot(2,2,4),h=plot(xi,yi,'ro')
?????? x1=[xi,x1];y1=[yi,y1];????????????????????????? %將選的點存于向量x1,y1
end
?? x1=[b,x1];y1=[gx(n),y1];??????
??????? xx=linspace(a,b,n);??????? %定義自變量xx
???? %計算不同的插值函數:x1,y1為節點,xx為輸入自變量?
?ynearest=interp1(x1,y1,xx,'nearest');
?ylinear=interp1(x1,y1,xx,'linear');?????
?yspline=interp1(x1,y1,xx,'spline');
????? %多項式擬合指令[p,s] = polyfit(x,y,n),n為擬合多項式次數,x,y為被擬合數據
,
???? %p為擬合多項式的系數,s是用來做誤差 估計和預測的數據結構。
?[p,c]=polyfit(x1,y1,4);
? ypolyfit=polyval(p,xx);?? %用polyval(p,x)計算系數為p的多項式在標量或向量x處的
值
subplot(2,2,1),h=plot(xx,ynearest,'r-');set(h,'linewidth',2)?? %畫圖
subplot(2,2,2),h=plot(xx,ylinear,'r-');set(h,'linewidth',2);
subplot(2,2,3),h=plot(xx,yspline,'r-');set(h,'linewidth',2)
subplot(2,2,4),h=plot(xx,ypolyfit,'r-');set(h,'linewidth',2)????????????????????
】
3.3應用、思考和練習
3.3.1若干函數的插值和擬合練習
3.3.2幾個應用問題
1.? 機床加工和水深流速問題
?2. 內燃機轉角與升程的關系
?3. 隨高度變化的大氣壓強
4. 交通事故的調查
3.3.4多元函數的插值
?1. 矩形溫箱的溫度
2.? 航行區域的警示線
3.3.5 Fourier級數和周期函數的經驗公式
??? zxy3_2.m
【???? clf,clear,
n=10;m=3;x=1:1:12;
y=[3.1 3.8 6.9 12.7 16.8 20.5 24.5 25.9 22.0 16.1 10.7 5.4];
z=(pi/6)*x;plot(z(1:12),y(1:12),'o');hold on
k=1:m;????????? %計算數據矩陣。
for i=1:n
?? X(i,:)=[1 cos(k*z(i)) sin(k*z(i))];
end
c=inv(X'*X)*X'*y(1:n)',? %求解。
z1=linspace(0,2*pi,30);
s=[];???????????????? %開始計算F-級數的部分和。
for i=1:30;
? sd=[1 cos(k*z1(i)) sin(k*z1(i))]'; %注意k是向量。
?? sd=c.*sd;?? s=[s,sum(sd)];
end
plot(z1,s,'r-'),hold on, xlabel('月份'),ylabel('平均氣溫')???????????????? 】
3.3.6由實驗到理論:從開普勒定律和牛頓萬有引力定律
評論
查看更多