【计算方法笔记】插值法:拉格郎日插值与牛顿插值

拉格郎日插值与牛顿插值

插值法作用

已知未知函数多个点的坐标,寻求某一简单函数(满足上述坐标),利用简单函数来预测未知函数在某一点的函数值,某一简单函数通常选用多项式来代替。

插值分类:

1.拉格朗日插值

拉格朗日插值多项式: Ln(x)=y0l0(x)+y1l1(x)++ynln(x)

其中 li(x) 为插值基函数

li(x)=i=0,ijnxxixxj

证明为:假设有四个点, (x0,y0),(x1,y1),(x2,y2),(x3,y4)
若要 Ln(x0)=y0 ,则当 x=x0 时, x0 l1(x),l2(x),l3(x) 的零点
若要 Ln(x1)=y1 ,则当 x=x1 时, x1 l0(x),l2(x),l3(x) 的零点
若要 Ln(x2)=y2 ,当 x=x2 时, x2 l0(x),l1(x),l3(x) 的零点
若要 Ln(x3)=y3 ,当 x=x3 时, x3 l0(x),l1(x),l2(x) 的零点
l0(x)x1,x2,x3 ,则 l0(x)=c0(xx1)(xx2)(xx3) ,根据 L0(x0)=1 可以求出 c0

这样依次可以求出其他的插值基函数。 一个拉格朗日插值多项式要由n+1个n次的插值基函数组成.

2.牛顿插值

牛顿插值的引入是因为拉格朗日插值每次新添加一个坐标点进去运算则插值基函数需要全部重新计算,而牛顿插值只需要在原有的插值基函数的条件下,添加新的插值基函数即可。

证明:
1.假设有两个点: (x0,y0),(x1,y1)
其中假设 N1(x)=y0+b1(xx0) ,易知 N1(x0)=y0
若要 N1(x1)=y1 ,则 N1(x1)=y0+b1(x1x0)=y1

则可以把 b1 解出来: y1y0x1x0

从而得到 N1(x)=y0+b1(xx0) .这里不具体写出 b1 的值, b1 为一阶均差

2.现假设有三个点: (x0,y0),(x1,y1),(x2,y2)
假设 N2(x)=N1(x)+b2(xx0)(xx1) ,
易知 N2(x0)=N1(x0)=y0,N2(x1)=N1(x1)=y1
b2 的求法与上述 b1 求法类似

N2(x2)=N1(x2)+b2(x2x0)(x2x1)=y2

b2=y2y0x2x0y1y0x1x0x2x1

其中 b2=f[x1,x0,x2] 为二阶均差,因为均差具有对称性(即节点的排列顺序不影响计算),则也可为下式

b2=f[x0,x1,x2]=y2y1x2x1y1y0x1x0x2x0

则把 N1(x) 带入

N2(x)=N1(x)+b2(xx0)(xx1) ;
N2(x)=y0+b1(xx0)+b2(xx0)(xx1)
=y0+(xx0)(b1+b2(xx1)) ;

可见在新添加了一个点的基础上,只需要求出 b2 则新的牛顿插值多项式就计算完毕。

但牛顿插值多项式的得出是通过观察均差的特点,即函数值f(x)可以用一阶均差表示,一阶均差可以用二阶均差表示,二阶均差可以用三阶均差表示,则依次类推可以推到n阶,则可得到f(x)的表达式

f(x)=f(x0)+k=1nf[x0,x1,...,xk]j=0k1(xxj)+f[x,x0,...,xn]j=0n(xxj)

其中牛顿插值多项式为:

Nn(x)=k=1nf[x0,x1,...,xk]j=0k1(xxj)

牛顿插值法应用(Matlab):

  • 首先求取均差表,为了节省内存,从下往上计算均差表并一级一级覆盖,最后数组内为均差表对角线的元素,也为需要计算牛顿插值多项式的均差。同时用提取公因数的方法来计算多项式的值,提取公因数的方法可以减少运算次数避免多次计算引起的误差。

代码:

clear;
x=[0.40,0.55,0.65,0.80,0.90,1.05];
y=[0.41075,0.57815,0.69675,0.88811,1.02652,1.25382];
%%Newton
%计算均差表

n=length(y);%因为matlab内矩阵从1开始计数

for k=2:n
    for j=n:-1:k%从下往上计算覆盖
        y(j)=(y(j)-y(j-1))/(x(j)-x(j-(k-1)));%k=2时计算一阶,j减去1,k=3时计算二阶,j减去2
    end
end

%利用Horner算法
N=0.596;%计算f(0.596)的近似值
sum=0;
for i=n:-1:2
    sum=sum+y(i-1)+y(i)*(N-x(i-1));
end
disp(sum);
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值