2.1 實驗目的
用matlab編寫線性插值、拋物插值、拉格朗日插值等演算法程式。
熟悉matlab中相關插值函式,並呼叫它們解決樣條插值或分段插值等問題。
2.2 matlab命令
函式含義
interp1
一維插值
spline
樣條插值
interp2
二維插值
一維插值函式格式為interp1(x0,y0,x,『method』),x0和y0為節點值,x為需要計算的函式值點,'method』為差值方法的選取,有以下幾種:
method=『neraest』,將插值結果的值設定為最近的資料點的值。
method=『linear』,線性插值,將兩個資料點連成直線根據給定的插值點計算直線上的值作為插值結果。
method=『spline』,三次樣條差值,通過資料點擬合出三次樣條曲線,根據給定資料計算出曲線上的值。
method=『pchip』或』cubic』,通過分段三次埃公尺爾特差值方法計算插值結果。
2.3 實驗2例題:多項式插值
例1:已知函式f(x)滿足
x1.2
1.31.4
1.51.6
f(x)
1.244
1.406
1.604
1.837
2.121
編寫拉格朗日插值法的matlab程式計算f(1.54)的近似值。
function y=lagr(x0,y0,x)
%拉格朗日插值程式
%x0和y0為給定的資料對
%輸出y為差值多項式在x處的值
n=length(x0);m=length(x);
for i=1:m
z=x(i);
s=0;
for k=1:n
p=1;
for j=1:n
if j~=k
p=p*(z-x0(j))/(x0(k)-x0(j));
endend
s=p*y0(k)+s;
end
endy(i)=s;
end
結果:
%拉格朗日插值
>> x0=[1.2 1.3 1.4 1.5 1.6];
>> y0=[1.244 1.406 1.604 1.837 2.121];
>> y1=lagr(x0,y0,1.54)
y1 =
1.9430
%只用相鄰兩點做線性插值來求f(1.54)
>> x0=[1.5 1.6];
>> y0=[1.837 2.121];
>> y1=lagr(x0,y0,1.54)
y1 =
1.9506
例2:對以下函式在區間[-4,4]進行10等分,用matlab做拉格朗日插值、分段線性插值和三次樣條插值,對比圖形。
f (x
)=11
+x2f(x)=\frac
f(x)=1
+x21
x0=-4:0.8:4;
y0=1./(1+x0.^2);
x=-4:0.1:4;
y=1./(1+x.^2);
y1=lagr(x0,y0,x); %計算拉格朗日插值
y2=interp1(x0,y0,x); %計算分段線性插值
y3=spline(x0,y0,x); %計算三次樣條插值
for k=1:20
xx(k)=x(0+4*k); %間隔0.4產生插值點
yy(k)=y(0+4*k); %間隔0.4計算原函式值
yy1(k)=y1(0+4*k); %間隔0.4計算拉格朗日插值多項式值
yy2(k)=y2(0+4*k); %間隔0.4計算分段限行插值多項式值
yy3(k)=y3(0+4*k); %間隔0.4計算三次樣條插值多項式值
end%plot(x,y,'k',x,y1,'r'); %繪圖
plot(x,y,'k',x,y2,'r');
%plot(x,y,'k',x,y3,'r');
結果:
拉格朗日插值(結果有問題丞待解決):
分段線性插值:
三次樣條插值:
相似度計算方法學習
var e x e x 2x e x 2 e x 最後推出方差就是平方的均值減去 均值的平方 協方差就是看兩個變數是否正負相關,也就是數值上變化是否同或反向 相關係數直接衡量的就是線性相關關係,取值就在 1之間,體現的含義是x和y多大程度在一條斜率存在且不為0的直線上 余弦距離,也稱為余弦相似度,是...
相似度計算方法學習總結
無論什麼推薦演算法,計算相似度都是避不開的,下面就總結一下已經了解的相似度計算方法。1.余弦相似度 這個算是最常用的了,典型例子是計算文字相似度。通過計算兩個向量間的夾角,越是相似夾角度數越接近0,所計算的值也就越接近1。但是余弦相似度只對方向敏感,對距離並不敏感。2.歐式距離 歐幾里得距離 就是計...
數值計算方法實驗
1.給定下述演算法框圖,用逐步掃瞄法和二分法求方程x5 3x 1 0的最小正根,要求準確到1 2 10 2。要求 1 取步長h 1,先用逐步掃瞄法程式設計搜尋乙個隔根區間,將搜尋到的隔根區間列印輸出 2 然後對該區間使用二分法求方程的滿足精度要求的根,每二分一次,用新生成區間長度的一半作為是否二分結...