5.1 一维插值方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5.1.2 多项式插值
编写函数 M 文件 Runge.m : function Runge(n) x=linspace(-5,5,n+1);y=1./(1+x.^2); % n+1 个结点 xi=linspace(-5,5,101); z=1./(1+xi.^2); % 待插值点 yi=polyval(polyfit(x,y,n),xi); % n 次多项式插值 s=strcat('Runge 现象:',num2str(n),'次多项式插值') ; plot(x,y,'ko',xi,yi,'k:',xi,z,'k'),title(s),axis([-5,5,-1,2])
5.1.2 多项式插值
MATLAB 没有提供专门用于多项式插值的函 数,但是函数 polyfit 和 polyval 合用能够实现多项式 插值:n=length(x)-1; yi=polyval(polyfit(x,y,n),xi)
其中 x、y 分别为已知结点的横、纵坐标向量, 长度都是 n+1;xi 为待插值点的数组,yi 是求得的插 值的数组,yi 与 xi 是同型数组.
当 x x j ( j 0,1,, n) 时,(5.1.6)式是自然满足的.
当 x x j ( j 0,1,, n) 时,作辅助函数
(t )
g (t )
Ln
(t)
Rn
n
(x) (x)
n
(t)
,
n (x)
n
(x xj)
j0
显然(t) 在[a,b]上 n+1 次可导,并且有 n+2 个零点
(xi1, 0) , (xi ,1) , (xi1, 0) ,…, (xn , 0) 的 n 次插值多项式.
可以证明: li (x)
n j0, ji
x xi
xj xj
(i 0,1,, n)
(5.1.4)
5.1.2 多项式插值
由(5.1.4)式可见: li (x) 都是 n 次多项式,只依赖 于 x j ( j 0,1,, n) ,不依赖于 y j ( j 0,1,, n) ,并且
-1
10
0
2
1
0
5
10
基 函 数 l5
-1 0
-1
5
10
0
5
10
图5.1 拉格朗日多项式插值的基函数
Lagrange插 值 多 项 式 L5=3*l0+1*l1+2*l2+2*l4+4*l5 12
10
8
6
4
2
0 -1 0 1 2 3 4 5 6 7 8 9 10
图5.2
5.1.2 多项式插值
例 5.1.1 解答 绘图的 MATLAB 脚本: x=[0,1,3,6,8,9]; y=[3,1,2,0,2,4]; xi=-1:.01:10; yi=zeros(size(xi)); figure(1) for k=1:6
求解一维插值问题的思想:假设结点是由未知的 连续函数 g(x)产生,即 g(x j ) y j ( j 0,1,, n) ,构造 相对简单的函数 f(x)来逼近 g(x),使得 f(x)经过这 n+1 个结点,即满足 f (x j ) y j ( j 0,1,, n) ,然后用 f(x) 计算插值点 x 处的插值,即 y f (x) .
再分别取 n=9,11,13,15(奇数),执行 Runge(n), 观察程序绘制的图形(图 5.4). 随着 n 的增加,也观 察到类似现象.
Runge现 象 :4次 多 项 式 插 值 2
1
0
-1
图 -5
0
5
5.3 Runge现 象 :8次 多 项 式 插 值
都存在 (a,b) ,使得逼近的误差
Rn (x)
g(x) Ln (x)
g (n1) ( )
(n 1)!
n
(x xj)
j0
记 M n1 sup g (n1) (x) ,则
a x b
Rn (x)
M n1 (n 1)!
n j0
x xj
(5.1.6) (5.1.7)
5.1.2 多项式插值
证明 首先证明(5.1.6)式. 任取一点 x [a,b] .
满足以下两个性质:
(1)基性质:
li (xj )
ij
1 , i 0 , i
j j
(2)单位分解性质:
n
li (x) 1 , x (, )
i0
5.1.2 多项式插值
将 (5.1.4) 式 代 入 (5.1.3) 式 , 得 到 对 结 点 (x j , y j ) ( j 0,1,, n) 插值的至多 n 次多项式的具体表达式:
Ln (x)
n i0
yi
n j0, ji
x xj xi x j
(5.1.5)
容易验证 Ln (x j ) y j ( j 0,1,, n) . Ln (x) 称为拉格朗
日型至多 n 次插值多项式.
按(5.1.5)式编写函数 M 文件 polyinterp.m,其中
x、y 分别为结点的横、纵坐标向量,长度相同;xi
第5章 数值逼近模型
5.1节 一维插值方法
5.1.1 引言
常用的数值逼近方法有拟合、插值、数值积分和 数值微分.
插值,通俗的说,就是在若干已知的函数值插入 计算一些未知的函数值. 插值在工程技术和数据处理 等领域有直接的应用,插值还是数值积分、数值微分 等数值计算方法的基础.
5.1.1 引言
一维插值问题:已知 n+1 个结点 (x j , y j ) ,其中 x j 互不相同 ( j 0,1,, n) ,求任意插值点 x 处的插值 y .
( x0 , x1,, xn 以及 x),由罗尔(Rolle)定理, (n1) (t) 在(a,b)内至少有一个零点 ξ,从而(5.1.6)式得证. 由
(5.1.6)式,立即得到(5.1.7)式.
(证毕)
5.1.2 多项式插值
注 定理 5.1.2 给出的多项式插值的误差估计在
理论上很有用,例如 5.2 节关于复化梯形求积公式、
5.1.2 多项式插值
已知结点 (x j , y j ) ( j 0,1,, n) ,并且 x0, x1,, xn 是互异的实数,构造至多 n 次插值多项式
pn (x) a1xn a2 xn1 an x an1 (5.1.1) 满足 pn (xj ) y j ( j 0,1,, n) ,然后用 pn (x) 计算插值 点 x 处的插值 y pn (x ) .
在例 5.1.1 的脚本中,命令 wi=polyinterp(x,w,xi) 替换成 wi=polyval(polyfit(x,w,5),xi),也能计算出相同 结果,而且不需要预先准备 M 文件 polyinterp.m .
5.1.2 多项式插值
定理 5.1.2 设 g(x)在[a,b]上 n+1 阶连续可导, a x0 x1 xn b ,Ln (x) 是在 x0 , x1,, xn 逼近 g(x) 而得到的至多 n 次插值多项式. 那么对任意 x [a,b] ,
p=p*(z-x(j))/(x(i)-x(j));
end
end, s=p*y(i)+s;
end,
yi(k)=s;
end
5.1.2 多项式插值
例 5.1.1 已知(0,3)、(1,1)、(3,2)、(6,0)、(8,2) 和(9,4)共 6 个结点,利用函数 M 文件 polyinterp.m 绘 制 6 个拉格朗日型多项式插值基函数
构造插值多项式的常用方法有拉格朗日
(Lagrange)法和牛顿法两种,在此介绍拉格朗日法.
对于 n+1 个结点 (x j , y j ) ( j 0,1,, n) ,设插值多
项式的形式为
n
Ln (x) yili (x)
(5.1.3)
i0
其中基函数 li (x) 是经过 n+1 个特殊结点 (x0, 0) ,…,
Xa=y
(5.1.2)
(5.1.2)式恰好有 n+1 个未知数和 n+1 个方程.
5.1.2 多项式插值
由于(5.1.2)式的系数矩阵 X 是范德蒙矩阵,而且
x0, x1,, xn 是互异的实数,所以行列式 det(X)≠0,于
是对于任意的实数 y0, y1,, yn ,(5.1.2)式都有唯一解
a X1y .
(证毕)
根 据 定 理 5.1.1 的 证 明 , 在 理 论 上 只 要 计 算
a X1y 就可以得到 pn (x) 的系数 a1,, an1 . 但是在 数值计算上,由于范德蒙矩阵是“病态”的,计算
a X1y 可能得不到精确值,而且计算量过大,不是
理想的途径.
5.1.2 多项式插值
证明 设 pn (x) 如(5.1.1)式的形式,记
X
x0n x1n M
xn1 0
xn1 1 M
O
x0 x1
1 1
M M
xnn
xn1 n
xn
1(n1)(n1)
a a1, a2,, an, an1 T , y y0, y1,, yn T
则 pn (xj ) y j ( j 0,1,, n) 即线性方程组
l0 (x) , l1(x) ,…, l5 (x) 以及插值多项式
L5(x)
5 i0
yili
(
x)
的函数图象(见图 5.1 和图 5.2).
2
1
基 函 数 l0
0
2
1
基 函 数 l1
来自百度文库
0
-1 0
2 1 0
-1
5
10
0
5
10
2
基 函 数 l2
1
基 函 数 l3
0
-1 0
2 1 0
5 基 函 数 l4
5.1.1 引言
在本节,我们将学习三种一维插值方法: (1)多项式插值(polynomial interpolation) ——f(x)为至多 n 次多项式; ( 2 ) 分 段 线 性 插 值 ( piecewise linear interpolation)——f(x)为分段线性函数; (3)3 次样条插值(cubic spline interpolation) ——f(x)为二阶连续可导的分段 3 次多项式.
数值微分三点公式等的误差估计. 但是,由定理 5.1.2
并不能立即得到多项式插值的收敛性的结论,即对给
定的某一点
x
[a,
b]
,不能断言
lim
n
Rn
(
x)
0
是否成
立. 实际上高次的插值多项式可能会发生严重的振
荡,尤其是在区间[a,b]的左右端点附近. 所以在实际
应用中,多项式插值一般仅适合于结点数目较少、也
5.1.2 多项式插值
分别取 n=4,6,8,10(偶数),执行 Runge(n),观察 程序绘制的图形(图 5.3). 由图形可以观察到:随着 插值多项式 Ln (x) 次数增加,在原点附近,Ln (x) 与 g(x) 的误差越来越小;在 x=−5 和 x=5 附近,Ln (x) 的振荡 幅度却越来越大,与 g(x)的误差也越来越大.
定理 5.1.1 如果 x0, x1,, xn 是互异的实数,那么 对于任意的实数 y0, y1,, yn ,都存在唯一的至多 n 次 多项式 pn (x) ,使得 pn (xj ) y j ( j 0,1,, n) .
定理 5.1.1 保证了插值多项式的存在性和唯一性.
5.1.2 多项式插值
就是多项式次数较低的情况.
5.1.2 多项式插值
20 世纪初,德国数学家龙格(Runge)曾给出一 个插值多项式振荡现象的例子:
例 5.1.2(龙格现象) 考虑函数 1
g(x) 1 x2 , x [5,5] 对任意正整数 n,取划分 5 x0 x1 xn 5将区 间[−5,5]n 等分,并记 Ln (x) 是在 x0, x1,, xn 逼近 g(x) 而得到的 n 次插值多项式,则随着 n 的增加,Ln (x) 在 x0 5 和 xn 5 附近会出现越来越严重的振荡.
为待插值点向量,yi 是求得的插值向量,yi 与 xi 同型.
5.1.2 多项式插值
function yi=polyinterp(x,y,xi)
n=length(x); m=length(xi);
for k=1:m, z=xi(k); s=0;
for i=1:n,
p=1;
for j=1:n
if j~=i
w=zeros(1,6); w(k)=w(k)+1; wi=polyinterp(x,w,xi); yi=yi+y(k).*wi; subplot(3,2,k) plot(x,w,'ko',xi,wi,'k'), axis([-1,10,-1,2]) end figure(2), plot(x,y,'ko',xi,yi,'k'), axis([-1,10,-1,12]) title('Lagrange 插值多项式 L_5=3*l_0+1*l_1+2*l_2+2*l_4+4*l_5')