插值及其误差
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(1)用tan x 表格直接计算tan 1.569 5。
(2)用sin 1.569 5和cos 1.569 5来计算tan 1.569 5。并讨论这两个结果中误差变化的原因。
插值:求过已知有限个数据点的近似函数。 1 插值方法
下面介绍几种基本的、常用的插值:拉格朗日多项式插值、牛顿插值、分段线性插
值、Hermite 插值和三次样条插值。 1.1 拉格朗日多项式插值 1.1.1 插值多项式
用多项式作为研究插值的工具,称为代数插值。其基本问题是:已知函数
()f x 在区间[],a b 上1n +个不同点01,,,n x x x 处的函数值
()()0,1,
,i i y f x i n ==,求一个至多n 次多项式 ()01n n n x a a x a x ϕ=++
+(1)
使其在给定点处与()f x 同值,即满足插值条件
()()n i i i x f x y ϕ==(2)
()n i x ϕ称为插值多项式,()0,1,,i x i n =称为插值节点,简称节点,[],a b 称为插
值区间。从几何上看,n 次多项式插值就是过1n +个点()()(),0,1,,i i x f x i n =,
作一条多项式曲线()n y x ϕ=近似曲线()y f x =。
n 次多项式(1)有1n +个待定系数,由插值条件(2)恰好给出1n +个方程
01000
01111
01n
n n n n n
n n n
a a x a x y a a x a x y a a x a x y ⎧+++=⎪
+++=⎪⎨⎪
⎪+++=⎩(3)
记此方程组的系数矩阵为A ,则
()0
1111det 1n n
n n
n
x x x x A x x =
是范德蒙特(Vandermonde)行列式。当01,,,n x x x 互不相同时,此行列式值不为
零。因此方程组(3)有唯一解。这表明,只要1n +个节点互不相同,满足插值要求(2)的插值多项式(1)是唯一的。 插值多项式与被插函数之间的差
()()()n n R x f x x ϕ=-
称为截断误差,又称为插值余项。当()f x 充分光滑时,
()()()()()
()()()11,,1!
n n n n f R x f x L x x a b n ξωξ++=-=
∈+
其中()()10
n
n j j x x x ω+==∏-。
1.1.2 拉格朗日插值多项式
实际上比较方便的作法不是解方程(3)求待定系数,而是先构造一组基函数
()()()()()()()()()
()
0110110,0,1,,i i n i i i i i i i n n
j j i j
j i
x x x x x x x x l x x x x x x x x x x x i n x x -+-+=≠----=
-----=∏
=-
()i l x 是n 次多项式,满足 ()0
1i j j i l x j i
≠⎧=⎨
=⎩
令
()()000
n
n
n j
n i i i j i i i j j i x x L x y l x y x x ===≠⎛⎫
- ⎪==∏
⎪-⎝⎭
∑∑(4) 上式称为n 次 Lagrange 插值多项式,由方程(3)解的唯一性,1n +个节点的n 次Lagrange 插值多项式存在唯一。 1.1.3 用Matlab 作Lagrange 插值
Matlab 中没有现成的Lagrange 插值函数,必须编写一个M 文件实现Lagrange 插值。
设n 个节点数据以数组0,0x y 输入,m 个插值点以数组x 输入,输出数组y 为
m 个插值。编写一个名为lagrange.m 的M 文件: function y=lagrange(x0,y0,x); n=length(x0);m=length(x); for i=1:m z=x(i); s=0.0; for k=1:n p=1.0;
for j=1:n if j~=k
p=p*(z-x0(j))/(x0(k)-x0(j)); end end s=p*y0(k)+s; end y(i)=s; end
sin 1.5695=0.9999991749999999 cos 1.5695=0.001296300000000056 tan 1.5695=819.0342874999274 1.2 分段线性插值
1.2.1 插值多项式的振荡
用Lagrange 插值多项式()n L x 近似()f x ()a x b ≤≤,虽然随着节点个数的增加,()n L x 的次数n 变大,多数情况下误差()n R x 会变小。但是n 增大时,()n L x 的光滑性变坏,有时会出现很大的振荡。理论上,当n →∞,在[],a b 内并不能保证()n L x 处处收敛于()f x 。Runge 给出了一个有名的例子:
()[]2
1
,5,51f x x x
=
∈-+
对于较大的x ,随着n 的增大,()n L x 振荡越来越大,事实上可以证明,仅当
3.63x ≤时,才有()()lim n n L x f x →∞
=,而在此区间外,()n L x 是发散的。
高次插值多项式的这些缺陷,促使人们转而寻求简单的低次多项式插值。 1.2.2 分段线性插值 简单地说,将每两个相邻的节点用直线连起来,如此形成的一条折线就是分段线性插值函数,记作()n I x ,它满足()n i i I x y =,且()n i i I x y =在每个小区间
[]1,i i x x +上是线性函数()0,1,
,i n =。
()n I x 可以表示为