《拉格朗日和牛頓插值法》 實驗報告 作者:家俊 一、實驗名稱: 插值問題 二、實驗目的:" />
一、實驗名稱: 插值問題
二、實驗目的:
用拉格朗日插值和牛頓差值的方法,在已知函數在點x0,x1,…xn的函數值y0,y1,…yn的情況下,求插值節點x的函數值y,即求f(x)。並比較結果,說明為什么相等。
三、實驗方法:
(1)拉格朗日插值
根據x0,x1,…xn;y0,y1,…yn構造插值多項式
將插值點x代入上式,就可得到函數f(x)在點x處的函數值的近似值。
(2)牛頓插值.
根據x0,x1,…xn;y0,y1,…yn構造插值多項式
Nn(x)=f(x0)+f(x0,x1)(x-x0)+…+f(x0,x1,…xn)(x-x0)(x-x1)…(x-xn-1)
牛頓差值公式中各項的系數就是函數f(x)的各階均差(差商)f(x0),f(x0,x1),f(x0,x1,…xn),因此,在構造牛頓差值公式時,常常先把均差列成一個表,此表稱為均差表。
四.實驗內容:
從函數表
x |
0.4 |
0.55 |
0.8 |
0.9 |
1 |
f(x) |
0.41075 |
0.57815 |
0.88811 |
1.02652 |
1.17520 |
出發,計算f(0.5),f(0.7),f(0.85)的近似值。
五、實驗程序:
5.1程序編譯
5.1.1 拉格朗日插值法:
function f=agui_lagrange(x0,y0,x)
n=length(x0); m=length(x);
format long
s=0.0;
for k=1:n
p=1.0;
for j=1:n
if j~=k
p=p*(x-x0(j))/(x0(k)-x0(j));
end
end
s=p*y0(k)+s;
end
f=s;
end
5.1.2 牛頓插值法:
function f=agui_newton(x0,y0,x)
n=length(x0); m=length(x);
format long
N=0.0; p=1.0;
for k=1:n
p=p*(x-x0(k));
T=0.0;
for i=1:k
q=1.0;
for j=1:k
ifj~=i
q=q*(x0(i)-x0(j));
end
end
T=y0(i)/q + T;
end
N=T*p/(x-x0(k))+N;
end
f=N;
end
5.2程序實現:
>> x0=[0.4 0.55 0.80.9 1]
x0 = 0.4000 0.5500 0.8000 0.9000 1.0000
>>y0=[0.41075 0.57815 0.888111.02656 1.17520 ]
y0 = 0.4108 0.5782 0.8881 1.0266 1.1752
//拉格朗日插值法求值
>>f=agui_lagrange(x0,y0,0.5)
f = 0.52110682539683
>>f=agui_lagrange(x0,y0,0.7)
f = 0.75855804761905
>>f=agui_lagrange(x0,y0,0.85)
f = 0.95614258928571
//牛頓插值法求值
>>f=agui_newton(x0,y0,0.5)
f = 0.52110682539683
>> f=agui_newton(x0,y0,0.7)
f = 0.75855804761905
>> f=agui_newton(x0,y0,0.85)
f = 0.95614258928571
六.實驗結果
通過軟件求解容易發現,兩種算法求出的結果一樣,即有:
七、結果分析
2、當插值多項式從n-1次增加到n次時,拉格朗日型插值必須重新計算所有的基本差值多項式;二對於牛頓插值,只需要表格再計算一個n階均差,然后加上一項就可以了。這樣大大減少了計算量,特別在計算結構復雜的多項式的時候,當然本實驗中的數據組很少,計算機的計算速度快慢不明顯而難以比較兩種方法的優劣。
本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。