- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
插值及其误差
x sin x cos x tan x 1.567 0.999 992 8 0.003 796 3 263.411 25 1.568 0.999 996 1 0.002 796 3 357.611 06 1.569 0.999 998 4 0.001 796 3 556.690 98 1.570 0.999 999 7 0.000 796 3 1255.765 59 用表中的数据和任一插值公式求:
(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 插值多项式
用多项式作为研究插值的工具,称为代数插值。其基本问题是:已知函数在区间上个不同点处的函数值,求一个至多次多项式
(1)
使其在给定点处与同值,即满足插值条件
(2)
称为插值多项式,称为插值节点,简称节点,称为插值区间。从几何上看,次多项式插值就是过个点,作一条多项式曲线近似曲线。
次多项式(1)有个待定系数,由插值条件(2)恰好给出个方程
(3)
记此方程组的系数矩阵为,则
是范德蒙特(Vandermonde)行列式。当互不相同时,此行列式值不为零。因此方程组(3)有唯一解。这表明,只要个节点互不相同,满足插值要求(2)的插值多项式(1)是唯一的。
插值多项式与被插函数之间的差
称为截断误差,又称为插值余项。当充分光滑时,
其中。
1.1.2 拉格朗日插值多项式
实际上比较方便的作法不是解方程(3)求待定系数,而是先构造一组基函数
是次多项式,满足
令
(4)
上式称为次 Lagrange 插值多项式,由方程(3)解的唯一性,个节点的次Lagrange 插值多项式存在唯一。
1.1.3 用Matlab作Lagrange插值
Matlab中没有现成的Lagrange插值函数,必须编写一个M文件实现Lagrange插值。
设个节点数据以数组输入,个插值点以数组输入,输出数组为个插值。编写一个名为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插值多项式近似,虽然随着节点个数的增加,的次数变大,多数情况下误差会变小。但是增大时,的光滑性变坏,有时会出现很大的振荡。理论上,当,在内并不能保证处处收敛于。Runge给出了一个有名的例子:
对于较大的,随着的增大,振荡越来越大,事实上可以证明,仅当时,才有,而在此区间外,是发散的。
高次插值多项式的这些缺陷,促使人们转而寻求简单的低次多项式插值。
1.2.2 分段线性插值
简单地说,将每两个相邻的节点用直线连起来,如此形成的一条折线就是分段线性插值函数,记作,它满足,且在每个小区间上是线性函数。
可以表示为
有良好的收敛性,即对于,
用计算点的插值时,只用到左右的两个节点,计算量与节点个数无关。但越大,分段越多,插值误差越小。实际上用函数表作插值计算时,分段线性插值就
足够了,如数学、物理中用的特殊函数表,数理统计中用的概率分布表等。
1.2.3 用Matlab实现分段线性插值
用 Matlab 实现分段线性插值不需要编制函数程序,Matlab 中有现成的一维插值函数interp1。
y=interp1(x0,y0,x,method)
method指定插值的方法,默认为线性插值。其值可为:
nearest 最近项
文档评论(0)