插值及其误差

更新时间:2023-11-07 04:50:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

插值及其误差 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 插值多项式

用多项式作为研究插值的工具,称为代数插值。其基本问题是:已知函数

f?x?在区间?a,b?上n?1个不同点x0,x1,yi?f?xi??i?0,1,,xn处的函数值

,n?,求一个至多n次多项式 ?anxn(1)

?n?x??a0?a1x?使其在给定点处与f?x?同值,即满足插值条件

?n?xi??f?xi??yi(2)

?n?xi?称为插值多项式,xi?i?0,1,,n?称为插值节点,简称节点,?a,b?称为插

值区间。从几何上看,n次多项式插值就是过n?1个点?xi,f?xi???i?0,1,作一条多项式曲线y??n?x?近似曲线y?f?x?。

n次多项式(1)有n?1个待定系数,由插值条件(2)恰好给出n?1个方程

,n?,

?a0?a1x0???a0?a1x1????a?ax??01nn?anx0?y0?anx1n?y1n?anxn?yn(3)

记此方程组的系数矩阵为A,则

1x0det?A??1x11xnnx0x1nnxn

是范德蒙特(Vandermonde)行列式。当x0,x1,,xn互不相同时,此行列式值不为

零。因此方程组(3)有唯一解。这表明,只要n?1个节点互不相同,满足插值要求(2)的插值多项式(1)是唯一的。 插值多项式与被插函数之间的差

Rn?x??f?x???n?x?

称为截断误差,又称为插值余项。当f?x?充分光滑时,

f?n?1????Rn?x??f?x??Ln?x???n?1?x?,???a,b?

?n?1?!其中?n?1?x????x?xj?。

j?0n1.1.2 拉格朗日插值多项式

实际上比较方便的作法不是解方程(3)求待定系数,而是先构造一组基函数

li?x???x?x0??x?xi?1??x?xi?1??x?xn??xi?x0??xi?xi?1??xi?xi?1??xi?xn?n??x?xjxi?xj

j?0j?i,?i?0,1,,n?li?x?是n次多项式,满足 ?0li?xj????1令

nj?i j?i?nx?x?j?(4) Ln?x???yili?x???yi??j?0?j?ixi?xj?i?0i?0??上式称为n次 Lagrange 插值多项式,由方程(3)解的唯一性,n?1个节点的n次Lagrange 插值多项式存在唯一。 1.1.3 用Matlab作Lagrange插值

Matlab中没有现成的Lagrange插值函数,必须编写一个M文件实现Lagrange插值。

n 设n个节点数据以数组x0,y0输入,输出数组y为m个插值点以数组x输入,

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插值多项式Ln?x?近似f?x??a?x?b?,虽然随着节点个数的增加,Ln?x?的次数n变大,多数情况下误差Rn?x?会变小。但是n增大时,Ln?x?的光滑性变坏,有时会出现很大的振荡。理论上,当n??,在?a,b?内并不能保证Ln?x?处处收敛于f?x?。Runge给出了一个有名的例子:

f?x??1,21?xx???5,5?

对于较大的x,随着n的增大,Ln?x?振荡越来越大,事实上可以证明,仅当

x?3.63时,才有limLn?x??f?x?,而在此区间外,Ln?x?是发散的。

n?? 高次插值多项式的这些缺陷,促使人们转而寻求简单的低次多项式插值。 1.2.2 分段线性插值 简单地说,将每两个相邻的节点用直线连起来,如此形成的一条折线就是分段线性插值函数,记作In?x?,它满足In?xi??yi,且In?xi??yi在每个小区间

?xi,xi?1?上是线性函数?i?0,1, In?x?可以表示为

,n?。

In?x???yli?ii?0n ?xx??xi-1,xi??i?0时舍去?x??xi,xi?1??i?n时舍去? 其它?x?xi?1?x?x,?ii?1?x?xi+1, li?x???x?x?ii+1?0,?? In?x?有良好的收敛性,即对于x??a,b?,

In?x??f??x limn?? 用In?x?计算x点的插值时,只用到x左右的两个节点,计算量与节点个数n无关。但n越大,分段越多,插值误差越小。实际上用函数表作插值计算时,分

段线性插值就

足够了,如数学、物理中用的特殊函数表,数理统计中用的概率分布表等。 1.2.3 用Matlab实现分段线性插值

用 Matlab 实现分段线性插值不需要编制函数程序,Matlab 中有现成的一维插值函数interp1。

y=interp1(x0,y0,x,'method')

method指定插值的方法,默认为线性插值。其值可为: 'nearest' 最近项插值 'linear' 线性插值

'spline' 逐段3次样条插值 'cubic' 保凹凸性3次插值。

所有的插值方法要求x0是单调的。

当 x0 为等距时可以用快速插值法,使用快速插值法的格式为'*nearest'、'*linear'、'*spline'、'*cubic'。 1.3 样条插值

许多工程技术中提出的计算问题对插值函数的光滑性有较高要求,如飞机的机翼外形,内燃机的进、排气门的凸轮曲线,都要求曲线具有较高的光滑程度,不仅要连续,而且要有连续的曲率,这就导致了样条插值的产生。 1.3.1 样条函数的概念

所谓样条(Spline)本来是工程设计中使用的一种绘图工具,它是富有弹性的细木条或细金属条。绘图员利用它把一些已知点连接成一条光滑曲线(称为样条曲线),并使连接点处有连续的曲率。

数学上将具有一定光滑性的分段多项式称为样条函数。具体地说,给定区间

?a,b?的一个分划

?:a?x0?x1??xn?1?xn?b

如果函数s?x?满足:

(1)在每个小区间?xi,xi?1??i?0,1,,n?1?上s?x?是k次多项式;

(2)s?x?在?a,b?上具有k?1阶连续导数。

则称s?x?为关于分划?的k次样条函数,其图形称为k次样条曲线。x0,x1,为样条节点,x1,x2,,xn称

,xn?1称为内节点,x0,xn称为边界点,这类样条函数的全体

记做SP??,k?,称为k次样条函数空间。 显然,折线是一次样条曲线。

若s?x??SP??,k?,则s?x?是关于分划?的k次多项式样条函数。k次多项式样条函数的一般形式为

sk?x???i?0k?ixii!??j?0n?1?ik!?x?xj?

k?其中?i?i?0,1,k,k?和?j?j?1,2,,n?1?均为任意常数,而

k?x?x??j?,x?xjx?x?,?j?1,2,,n?1? ?j???,x?xj??0在实际中最常用的是k =2和3的情况,即为二次样条函数和三次样条函数。

二次样条函数:对于?a,b?上的分划?:a?x0?x1??xn?1?xn?b,则

s2?x???0??1x?其中?x?xj?2??22!x??2j?0n?1?i2!?x?xj??SP??,2?(5)

2?2???x?xj?,x?xj??,?j?1,2,,x?xj??0,n?1?。

?xn?1?xn?b,则

三次样条函数:对于?a,b?上的分划?:a?x0?x1?s3?x???0??1x??22!x?2?33!x??3j?0n?1?i2!?x?xj??SP??,3?(6)

3?3?3??x?xj?,x?xj其中?x?xj???,?j?1,2,,n?1?。

?,x?xj??0利用样条函数进行插值,即取插值函数为样条函数,称为样条插值。例如分段线性插值是一次样条插值。下面我们介绍二次、三次样条插值。 1.3.2 二次样条函数插值

本文来源:https://www.bwwdw.com/article/bl72.html

Top