牛顿插值法
- 格式:doc
- 大小:109.93 KB
- 文档页数:5
牛顿插值算法
专业信息与计算科学
班级 113010102 姓名罗彪
学号 11301010229
1实验名称
牛顿插值法实验报告
2 实验目的
(1) 掌握牛顿插值法的基本思路和步骤,适用范围及精确度;
(2) 培养编程与上机调试能力;
(3) 熟悉Matlab6.1软件环境.
3 实验要求
(1) 利用牛顿插值法的求NEWTON 插值多项式的值,在matlab 中用内部
函数绘制函数图形。
(2) 利用Matlab 软件作为辅助工具来实现该实验.
4 实验原理
在拉格朗日插值方法中,若增加一个节点数据,其插值的多项式需重新计算。现构造一个插值多项式Nn(x),只需对Nn-1(x)作简单的修正即可得到,这样计算方便。
利用牛顿插值公式,当增加一个节点时,只需在后面多计算一项,而前面的计算仍有用;另一方面Nn(x)的各项系数恰好又是各阶差商而各阶差商可用差商公式来计算。
由线性代数知,对任何一个不高n 次的多项式P (x )=b0+b1x+b2x2+…+bnxn(幂基)(1)
也可将其写成P(x)=a0+a1(x-x0)+a2(x-x0)(x-x1)+…an(x-x0)..(x-xn-1)
其中ai 为系数,xi 为给定节点,可由(1)求出ai 一般情况下,牛顿插值多项式Nn(x)可写成Nn(X)= a0+a1(x-x0)+a2(x-x0)(x-x1)+…an(x-x0)..(x-xn-1)只需求出系数ai 即可得插值多项式。
5实验题目 给定21()1f x x =+ [5,5]x ∈-,取节点5(0,1,,10)k x k k =-+=,构造牛顿插值函
数计算点50.5(0,1,
,20)j t j j =-+=处10()N x 的值,并绘制图形与()f x 比较。
6实验步骤 输入n 值及())(,i i x f x ,,,1,0,n i =;要计算的函数点x 。
对给定的,x 由
[][][]00010101201101()()(),()(),,()()(),,n n n N x f x x x f x x x x x x f x x x x x x x x x f x x x -=+-+--+
+---
计算()
N x的值。
n
7 实验流程图
8 程序及其运行结果
function NEWTON
x0=-5:1:5; %输入11个插值节点
y0=1./(1+x0.^2);
x=-5:0.5:5; %输入21个插值函数计算点
y=newton(x0,y0,x); %调用下面的函数
plot(x0,y0,'r',x,y,'g')%作图
hold on
y=interp1(x0,y0,x,'spine');%用三次样条插值求插值结果plot(x0,y0,'r+',x,y,'b')%作图
function y=newton(x0,y0,x)%定义函数y
n=length(x0); %n取了x0的长度,x0为矩阵
m=length(x); %m取了x的长度,x为矩阵
f=y0;
for k=1:n-1
for j=n:-1:(k+1)
f(j)=(f(j)-f(j-1))/(x0(j)-x0(j-k));%用差商公式求差商end
end,
for i=1:m
z=x(i);%输入z
s=f(1);%输入s
for k=2:n
p=1.0;
for j=1:k-1
p=p*(z-x0(j));%自变量的差的循环计算
end
s=s+p*f(k);%计算newton插值Nn(x)
end
y(i)=s;
end
y(i)=s %输出结果
运行结果:
9 实验体会
⑴通过本次实验让我学会了插值多项式的基本思想。
⑵牛顿插值法建立过程中用到了插值计算,这一点与拉格朗日插值法有所区别,在已知点数较少的情况下牛顿插值法更为准确。
⑶通过编程加深了对matlab的熟悉,特别是一些函数语句。