一、实验名称: 插值问题
二、实验目的:
用拉格朗日插值和牛顿差值的方法,在已知函数在点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阶均差,然后加上一项就可以了。这样大大减少了计算量,特别在计算结构复杂的多项式的时候,当然本实验中的数据组很少,计算机的计算速度快慢不明显而难以比较两种方法的优劣。