插值算法之:拉格朗日插值

来源:互联网 发布:淘宝店怎么做代销 编辑:程序博客网 时间:2024/04/30 04:55

记一下拉格朗日插值公式的推导和一些要点【这里说的都是二维插值,多维上的以此类推】

 

1、插值问题:在做实验的过程中,往往得到一堆离散的数据,现在想用数学公式模拟这堆离散数据。怎么办,数学家们提出了插值问题。插值问题的提法是这样的给定一堆数据点(x0, y0), (x1, y1), (x2, y2)...(xn, yn),要求一个函数 y = f(x) ,要求该函数经过上面所有的数据点。

 

2、多项式插值及其唯一性:在所有的函数中,多项式函数是最简单的函数,所以只要是人就会想到用多项式函数来作为插值函数,好,以上给定了n+1个点,现在要求一个n次多项式y = an * x^n + ... a1 * x + a0, 使它们经过这n+1个点;通过范德蒙行列式 和 克莱姆法则,可以判定如果这n+1个点的x值各不相同,那么这个多项式是唯一的。结果唯一,但是用直接法很不好求。现在用别的办法来求之。这就是:拉格朗日多项式

 

3、拉格朗日多项式的构造,以四个点为例子进行说明

 

由于函数经过4个点(x0, y0),(x1, y1),(x2, y2),(x3, y3),所以可以设函数为:

 

f(x) = b0(x) * y0 + b1(x) * y1 + b2(x) * y2 + b3(x) * y3

 

注意:b0(x),...,b3(x)都是x的3次多项式,称之为拉格朗日插值基函数。

 

由于要求当x为x0时候,f(x) = y0, 所以最简单的做法就是让b0(x0) = 1, b1(x0) = b2(x0) =  b3(x0) = 0;

 

同理可知,在x1,x2,x3点上,插值基函数的值构造如下:

 

                b0(x)        b1(x)        b2(x)        b3(x)

 

x=x0         1                0              0              0

 

x=x1         0                1              0              0

 

x=x2         0                0              1              0

 

x=x3         0                0              0               1

 

问题1、根据这些值来确定b0(x)的表达式,

 

由于b0(x1) = b0(x2) = b0(x3) = 0,所以x1, x2, x3是b0(x)的零点,由于b0(x)是三次多项式,所以设

 

b0(x) = c0 * (x-x1) * (x-x2) * (x-x3)

 

由于b0(x0) = 1,所以 1 = c0 * (x0-x1) * (x0-x2) * (x0-x3)  得到 c0 = 1/[(x0-x1)(x0-x2)(x0-x3)]

 

所以:b0(x) = (x-x1)*(x-x2)*(x-x3)/[(x0-x1)*(x0-x2)*(x0-x3)]

 

同理可求b1(x)、b2(x),略

 

问题2、根据上面的表格说明插值基函数的一个性质:无论x取和值,它们的和都为1.【这个叫做调和函数】

 

以3次为例子说明:将上述表格的每一行分别相加,得到的事函数:g(x) = b0(x) + b1(x) + b2(x) + b3(x)在x0, x1, x2, x3的值,都为1.

 

                     b0(x) + b1(x) + b2(x) + b3(x)

 

x=x0                    1+0+0+0 = 1

 

x=x1                    0+1+0+0 = 1

 

x=x2                    0+0+1+0 = 1

 

x=x3                    0+0+0+1 = 1

 

所以:方程g(x) - 1 = 0,应该有4个根x0, x1, x2, x3;但是,由于b0(x)、b1(x)、b2(x)、b3(x)都是3次多项式,所以,g(x)最多也是3次多项式,至多只有3个根,所以等式:g(x) = 1 应该是恒等式。得证。

 

问题3、基函数:b0(x)、b1(x)、b2(x)、b3(x) 是线性无关的。

 

设:数t0, t1, t2, t3使得:t0 * b0(x) + t1 * b1(x) + t2 * b2(x) + t3 * b3(x) = 0

 

x=x0时候:0 = t0 * b0(x0) + t1 * b1(x0) + t2 * b2(x0) + t3 * b3(x0) = t0 * 1 + t1 * 0 + t2 * 0 + t3 * 0 得到:t0 = 0;

 

同理有:t1 = t2 = t3 = 0,根据定义(所有系数为0)。所以插值基函数是线性无关的。

 

 

原创粉丝点击