Matlab編程實(shí)現(xiàn)拉格朗日插值法計(jì)算插值
在數(shù)值分析中,拉格朗日插值法是以法國(guó)十八世紀(jì)數(shù)學(xué)家約瑟夫·拉格朗日命名的一種多項(xiàng)式插值方法。許多實(shí)際問(wèn)題中都用函數(shù)來(lái)表示某種內(nèi)在聯(lián)系或規(guī)律,而不少函數(shù)都只能通過(guò)實(shí)驗(yàn)和觀測(cè)來(lái)了解。如對(duì)實(shí)踐中的某個(gè)物理量
在數(shù)值分析中,拉格朗日插值法是以法國(guó)十八世紀(jì)數(shù)學(xué)家約瑟夫·拉格朗日命名的一種多項(xiàng)式插值方法。許多實(shí)際問(wèn)題中都用函數(shù)來(lái)表示某種內(nèi)在聯(lián)系或規(guī)律,而不少函數(shù)都只能通過(guò)實(shí)驗(yàn)和觀測(cè)來(lái)了解。如對(duì)實(shí)踐中的某個(gè)物理量進(jìn)行觀測(cè),在若干個(gè)不同的地方得到相應(yīng)的觀測(cè)值,拉格朗日插值法可以找到一個(gè)多項(xiàng)式,其恰好在各個(gè)觀測(cè)的點(diǎn)取到觀測(cè)到的值。
理解多項(xiàng)式插值的內(nèi)涵,明確拉格朗日插值多項(xiàng)式的性質(zhì)和計(jì)算方法
拉格朗日插值多項(xiàng)式是通過(guò)構(gòu)造一個(gè)滿(mǎn)足通過(guò)所有給定點(diǎn)的插值多項(xiàng)式,來(lái)近似表達(dá)一個(gè)函數(shù)的方法。給定n個(gè)互不相同的點(diǎn)(x1, y1), (x2, y2), ..., (xn, yn),拉格朗日插值多項(xiàng)式可以通過(guò)以下公式計(jì)算:
L(x) Σ(yi * Li(x))
其中Li(x)是由以下公式給出:
Li(x) Π((x - xj) / (xi - xj)), j ≠ i
打開(kāi)Matlab軟件
在Matlab中點(diǎn)擊左上角的New加號(hào)按鈕,然后在彈出的下拉菜單中選擇Script。這將打開(kāi)一個(gè)M文件編輯界面,我們可以在其中編寫(xiě)拉格朗日插值函數(shù)程序。
編寫(xiě)拉格朗日插值函數(shù)程序
```matlab
function yh lagrange(x, y, xh)
n length(x);
m length(xh);
yh zeros(1, m);
c1 ones(n-1, 1);
c2 ones(1, m);
for i 1:n
xp x([1:i-1 i 1:n]);
yh yh y(i) * prod((c1*xh - xp) ./ (x(i) - xp));
end
end
```
該程序可以一次計(jì)算實(shí)現(xiàn)一個(gè)插值計(jì)算。如果需要實(shí)現(xiàn)多個(gè)插值計(jì)算,可以使用以下程序:
```matlab
function yh lagrange(x, y, xh)
n length(x);
m length(xh);
x x(:);
y y(:);
xh xh(:);
yh zeros(m, 1);
c1 ones(1, n-1);
c2 ones(m, 1);
for i 1:n
xp x([1:i-1 i 1:n]);
yh yh y(i) * prod((xh*c1 - c2*xp) ./ (c2*(x(i)*c1 - xp)), 2);
end
end
```
保存文件,注意文件名應(yīng)與函數(shù)名相同
在Matlab中保存文件時(shí),需要特別注意文件名應(yīng)與函數(shù)名相同,以便正確調(diào)用。
輸入給定數(shù)據(jù)和插值點(diǎn)的值
在Matlab的命令窗口輸入給定數(shù)據(jù)x和y,以及需要計(jì)算插值點(diǎn)的值xh。按下Enter鍵后,將載入數(shù)據(jù)。
調(diào)用編寫(xiě)的程序,并運(yùn)行
在Matlab的命令窗口輸入`lagrange(x, y, xh)`并按下Enter鍵,即可得到拉格朗日插值函數(shù)計(jì)算的插值結(jié)果。