中国高校课件下载中心 》 教学资源 》 大学文库

《数学模型与数学实验》课程书籍文献(数学建模算法大全)第09章 插值与拟合

文档信息
资源类别:文库
文档格式:PDF
文档页数:26
文件大小:283KB
团购合买:点击进入团购
内容简介
《数学模型与数学实验》课程书籍文献(数学建模算法大全)第09章 插值与拟合
刷新页面文档预览

第九章插值与拟合 插值:求过已知有限个数据点的近似函数。 拟合:已知有限个数据点,求近似函数,不要求过已知数据点,只要求在某种意义 下它在这些点上的总偏差最小。 插值和拟合都是要根据 组数据构造 一个函数作为近似,由于近似的要求不同, 的。而面对一个实际问题,究竞应该用插值还是拟合,有的 容 §1插值方法 下面介绍几种基本的、常用的插值:拉格朗日多项式插值、牛顿插值、分段线性插 值、Hermite插值和三 次样条插值。 1.1拉格朗日多项式插值 1.1.1插值多项式 用多项式作为研究插值的工具,称为代数插值。其基本问题是:已知函数f(x)在 区间[a,b]上n+1个不同点x。,x,.,xn处的函数值y,=f(x)(1=0,1.,n),求一个 至多n次多项式 pn(x)=a+ax+.+anx 使其在给定点处与f(x)同值,即满足插值条件 p.(x)=fx)=y0=0,1.,n p(x)称为插值多项式,x,(i=0,L,.,n)称为插值节点,简称节点,[a,b]称为插值区 间。从几何上看,n次多项式插值就是过n+1个点(x,fx,》=01,n),作一条 多项式曲线y=o(x)近似曲线y=f(x)。 n次多项式(1)有n+1个待定系数,由插值条件(2)恰好给出n+1个方程 do+axo+azxo++axo=yo a+ax+a2x+.+anx=y (3) a+axn+a2x2+.+anx=ya 记此方程组的系数矩阵为A,则 1x。xg.xl 1x。x.x 是范德蒙特(Vandermonde)行列式。当xo,x1,xn互不相同时,此行列式值不为零。因 此方程组(3)有唯一解。这表明,只要+1个节点互不相同,满足插值要求(2)的 插值多项式(1)是唯一的。 插值多项式与被插函数之间的差 R(r)=f(x)-0(x) -175

-175- 第九章 插值与拟合 插值:求过已知有限个数据点的近似函数。 拟合:已知有限个数据点,求近似函数,不要求过已知数据点,只要求在某种意义 下它在这些点上的总偏差最小。 插值和拟合都是要根据一组数据构造一个函数作为近似,由于近似的要求不同,二 者的数学方法上是完全不同的。而面对一个实际问题,究竟应该用插值还是拟合,有时 容易确定,有时则并不明显。 §1 插值方法 下面介绍几种基本的、常用的插值:拉格朗日多项式插值、牛顿插值、分段线性插 值、Hermite 插值和三次样条插值。 1.1 拉格朗日多项式插值 1.1.1 插值多项式 用多项式作为研究插值的工具,称为代数插值。其基本问题是:已知函数 f (x)在 区间[a,b]上n +1个不同点 n x , x , , x 0 1 L 处的函数值 ( ) i i y = f x (i = 0,1,L,n) ,求一个 至多n 次多项式 n n n x = a + a x +L+ a x 0 1 ϕ ( ) (1) 使其在给定点处与 f (x)同值,即满足插值条件 (x ) f (x ) y (i 0,1, ,n) ϕ n i = i = i = L (2) (x) ϕ n 称为插值多项式,x (i 0,1, ,n) i = L 称为插值节点,简称节点,[a,b]称为插值区 间。从几何上看,n 次多项式插值就是过n +1个点( , ( )) i i x f x (i = 0,1,L,n) ,作一条 多项式曲线 y (x) = ϕ n 近似曲线 y = f (x) 。 n 次多项式(1)有n +1个待定系数,由插值条件(2)恰好给出n +1个方程 ⎪ ⎪ ⎩ ⎪ ⎪ ⎨ ⎧ + + + + = + + + + = + + + + = n n n n n n n n n n a a x a x a x y a a x a x a x y a a x a x a x y L LLLLLLLLLLLL L L 2 0 1 2 1 1 2 0 1 1 2 1 0 0 2 0 1 0 2 0 (3) 记此方程组的系数矩阵为 A ,则 n n n n n n x x x x x x x x x A L LLLLLLL L L 2 1 2 1 1 0 2 0 0 1 1 1 det( ) = 是范德蒙特(Vandermonde)行列式。当 n x , x , , x 0 1 L 互不相同时,此行列式值不为零。因 此方程组(3)有唯一解。这表明,只要n +1个节点互不相同,满足插值要求(2)的 插值多项式(1)是唯一的。 插值多项式与被插函数之间的差 R (x) f (x) (x) n = −ϕ n

称为截断误差,又称为插值余项。当f八(x)充分光滑时, R国=f-L=f且a,5ea.b (n+1)! 其中on1(x)=Π(x-x,)。 1.12拉格朗日插值多项式 实际上比较方便的作法不是解方程(3)求待定系数,而是先构造一组基函数 1(x)= (x-x)(x-xx-x).(x-x) (x,-xo).(x-x-x,-X1.(x,-xn) =7-x X-X ,0=0.L,m) I,(x)是n次多项式,满足 1,(x,)= j*1 1 i=i (4) x-x 上试称为次e插值多项式。由方程(3》解的唯性,n+1个节点的n次 用 ,agrange插值 00输 以黄组个铃久收物数组y为m个精酯.—一个名为cm的网爱 atlat的数组下标从1开交 for k=1:n 0 1: snnpe0g/a-85 if ik ens=p*y0 (k)+s; -176

-176- 称为截断误差,又称为插值余项。当 f (x)充分光滑时, ( ), ( , ) ( 1)! ( ) ( ) ( ) ( ) 1 ( 1) x a b n f R x f x L x n n n n ∈ + = − = + + ω ξ ξ 其中 ∏= + = − n j n j x x x 0 1 ω ( ) ( )。 1.1.2 拉格朗日插值多项式 实际上比较方便的作法不是解方程(3)求待定系数,而是先构造一组基函数 ( ) ( )( ) ( ) ( ) ( )( ) ( ) ( ) 0 1 1 0 1 1 i i i i i i n i i n i x x x x x x x x x x x x x x x x l x − − − − − − − − = − + − + L L L L , ( 01 ) 0 i , , ,n x x x x n j i j i j j = L − − =∏ ≠ = l (x) i 是n 次多项式,满足 ⎩ ⎨ ⎧ = ≠ = j i j i l x i j 1 0 ( ) 令 ∑ ∑∏ = = ≠ = ⎟ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎜ ⎝ ⎛ − − = = n i n i n j i j i j j n i i i x x x x L x y l x y 0 00 ( ) ( ) (4) 上式称为n 次 Lagrange 插值多项式,由方程(3)解的唯一性,n +1个节点的n 次 Lagrange 插值多项式存在唯一。 1.1.3 用 Matlab 作 Lagrange 插值 Matlab 中没有现成的 Lagrange 插值函数,必须编写一个 M 文件实现 Lagrange 插值。 设n 个节点数据以数组 x0, y0输入(注意 Matlat 的数组下标从 1 开始),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

1.2牛顿(Newton)插值 在导出Newton公式前,先介绍公式表示中所需要用到的差商、差分的概念及性质。 定义设有函数f(x),x0,x,x2,.为一系列互不相等的点,称 f八)-2+》为f)关于点,x,一阶差商(他称均差)记为儿,小即 xi-xi ,=f)-f x,-x, 称一阶差商的差商 f几x,x,]-f几x,x] X。-x 为fx)关于点x,xx的二阶差商,记为fxx,x]。一般地,称 fLxo,x.,x-】-f[x,x2.,x] Xo-Xx 为f(x)关于点x,x,.,x的k阶差商,记为 。,小=小- Xo-Xk 容易证明,差商具有下述性质: f[x,x l=f[x,.x,] f[x.xx]=f[x,xx,x ]=f[xxx] 122 Newton插值公式 线性插值公式可表成 )=x,+(任-阶差商的定义,依次可得】 称为一次N wton插值多项式。 f(x)=f(xo)+(x-x)f几x,x】 f[x,xo]=f[xo.x]+(x-x)f[x.xo.x] f[x,xo,X]=f[xo,x,x2]+(x-x2)f[x,xo,X1.X2] fx,xo,.,x】=fxox1,.,xn】+(x-xn)fx,xo,.,xn] 将以上各式分别乘以1x-x-xx-x人,(x-x-x小.(x-x小然 后相加并消去两边相等的部分,即得 f(x)=f(xo)+(x-xo)f[xo,x]+. +(x-xoX(x-x).(x-x)fxo] +(x-xo(x-x(x-xn)f几x,x0,x,.,xn] 记 -177

-177- 1.2 牛顿(Newton)插值 在导出 Newton 公式前,先介绍公式表示中所需要用到的差商、差分的概念及性质。 1.2.1 差商 定义 设有函数 f (x), x0 , x1, x2 ,L为一系列互不相等的点,称 i j i j x x f x f x − ( ) − ( ) (i ≠ j) 为 f (x)关于点 i j x , x 一阶差商(也称均差)记为 [ , ] i j f x x ,即 i j i j i j x x f x f x f x x − − = ( ) ( ) [ , ] 称一阶差商的差商 i k i j j k x x f x x f x x − [ , ]− [ , ] 为 f (x)关于点 i j k x , x , x 的二阶差商,记为 [ , , ] i j k f x x x 。一般地,称 k k k x x f x x x f x x x − − − 0 0 1 1 1 2 [ , ,L, ] [ , ,L, ] 为 f (x)关于点 k x , x , , x 0 1 L 的k 阶差商,记为 k k k k x x f x x x f x x x f x x x − − = − 0 0 1 1 1 2 0 1 [ , , , ] [ , , , ] [ , , , ] L L L 容易证明,差商具有下述性质: [ , ] [ , ] i j j i f x x = f x x [ , , ] [ , , ] [ , , ] i j k i k j j i k f x x x = f x x x = f x x x 1.2.2 Newton 插值公式 线性插值公式可表成 ( ) ( ) ( ) [ , ] 1 0 0 0 1 ϕ x = f x + x − x f x x 称为一次 Newton 插值多项式。一般地,由各阶差商的定义,依次可得 ( ) ( ) ( ) [ , ] 0 0 0 f x = f x + x − x f x x [ , ] [ , ] ( ) [ , , ] 0 0 1 1 0 1 f x x = f x x + x − x f x x x [ , , ] [ , , ] ( ) [ , , , ] 0 1 0 1 2 2 0 1 2 f x x x = f x x x + x − x f x x x x LL [ , , , ] [ , , , ] ( ) [ , , , ] 0 n 1 0 1 n n 0 n f x x L x = f x x L x + x − x f x x L x − 将以上各式分别乘以1,( ),( )( ), , x − x0 x − x0 x − x1 L ( )( ) ( ) − 0 − 1 − n−1 x x x x L x x ,然 后相加并消去两边相等的部分,即得 ( )( ) ( ) [ , , , , ] ( )( ) ( ) [ , , , ] ( ) ( ) ( ) [ , ] 0 1 0 1 0 1 1 0 1 0 0 0 1 n n n n x x x x x x f x x x x x x x x x x f x x x f x f x x x f x x L L L L L + − − − + − − − = + − + − 记

N(x)=f(xo)+(x-xo)xox ]+. +(x-xo(x-x).(x-xm-i)f几x0,x1,x] R(x)=(x-xox-x).(x-xn)fx,xo,x,.,xn] =0n(x)X,xn,x,.,x 显然,N,(x)是至多n次的多项式,且满足插值条件,因而它是f(x)的n次插值 多项式。这种形式的插值多项式称为Newton插值多项式。R,(x)称为Newton插值余 项。 Newton插值的优点是:每增加一个节点,插值多项式只增加一项,即 N(x)=N (x)+(x-xo)(x)xox 因而使于递推运算。而且Newton插值的计算量小于L 由插值项式的唯性如,插值余项与金项也是相等的,即 R(x)=@(x)fIx.xo.X.x] a+i7o)5∈a.b 了+(5)) 由此可得差商与导数的关系 f,x]=位 其中5e(a,B),a=minx,B=maxx}. 123差分 当节点等距时,即相邻两个节点之差(称为步长)为常数,Newton插值公式的形 式会更简单。此时关于节点间函数的平均变化率(差商)可用函数值之差(差分)来表 示 定义设有等距节点x=x。+hk=0l,n),步长h为常数,=(x) 称相邻两个节点k,x1处的函数值的增量f1一f(欣=0,1,n-1)为函数f(x)在 点x处以h为步长的一阶差分,记为△,即 4=f1-f(k=0l,.,m 类似地,定义差分的差分为高阶差分。如二阶差分为 4=4-4(k=0,1.n-2) 一般地,m阶差分为 △f=△m-f41-△"-f(k=2,3), 上面定义的各阶差分又称为向前差分。常用的差分还有两种: 听=f-f 称为f(x)在x处以h为步长的向后差分: 成=}不剑 称为∫(x)在x处以h为步长的中心差分。一般地,m阶向后差分与m阶中心差分公 式 178

-178- ( ) [ , , , , ] ( ) ( )( ) ( ) [ , , , , ] ( )( ) ( ) [ , , , ] ( ) ( ) ( ) [ , ] 1 0 1 0 1 0 1 0 1 1 0 1 0 0 0 1 n n n n n n n n x f x x x x R x x x x x x x f x x x x x x x x x x f x x x N x f x x x f x x L L L L L L + − = = − − − + − − − = + − + ω 显然,N (x) n 是至多n 次的多项式,且满足插值条件,因而它是 f (x)的n 次插值 多项式。这种形式的插值多项式称为 Newton 插值多项式。 R (x) n 称为 Newton 插值余 项。 Newton 插值的优点是:每增加一个节点,插值多项式只增加一项,即 ( ) ( ) ( ) ( ) [ , , , ] n+1 = n + − 0 − n 0 1 n+1 N x N x x x L x x f x x L x 因而便于递推运算。而且 Newton 插值的计算量小于 Lagrange 插值。 由插值多项式的唯一性可知,Newton 插值余项与 Lagrange 余项也是相等的,即 ( ) ( , ) ( 1)! ( ) ( ) ( ) [ , , , , ] 1 ( 1) 1 0 1 x a b n f R x x f x x x x n n n n n ∈ + = = + + + ω ξ ξ ω L 由此可得差商与导数的关系 ! ( ) [ , , , ] ( ) 0 1 n f f x x x n n ξ L = 其中 ( , ), min{ }, max{ } 0 0 i i n i i n x x ≤ ≤ ≤ ≤ ξ ∈ α β α = β = 。 1.2.3 差分 当节点等距时,即相邻两个节点之差(称为步长)为常数,Newton 插值公式的形 式会更简单。此时关于节点间函数的平均变化率(差商)可用函数值之差(差分)来表 示。 定义 设有等距节点 ( 0,1, , ) xk = x0 + kh k = L n ,步长 h 为常数, ( ) k k f = f x 。 称相邻两个节点 1 , k k + x x 处的函数值的增量 ( 0,1, , 1) f k +1 − f k k = L n − 为函数 f (x) 在 点 k x 处以h 为步长的一阶差分,记为 k Δf ,即 ( 0,1, , ) Δf k = f k +1 − f k k = L n 类似地,定义差分的差分为高阶差分。如二阶差分为 ( 0,1, , 2) 1 2 Δ f k = Δf k + − Δf k k = L n − 一般地,m 阶差分为 ( 2,3, ) 1 1 Δm f k = Δm−1 f k + − Δm− f k k = L , 上面定义的各阶差分又称为向前差分。常用的差分还有两种: ∇ k = k − k −1 f f f 称为 f (x)在 k x 处以h 为步长的向后差分; ⎟ ⎠ ⎞ ⎜ ⎝ ⎛ ⎟ − − ⎠ ⎞ ⎜ ⎝ ⎛ = + 2 2 h f x h f f x δ k k k 称为 f (x) 在 k x 处以 h 为步长的中心差分。一般地, m 阶向后差分与 m 阶中心差分公 式为

V"fi =Vm-Ifi-vm-Ifi 6fi=8-6m 差分具有以下性质: ()各阶差分均可表成函数值的线性组合,例如 s1-fn) p-i-y) ()各种差分之间可以互化。向后差分与中心差分化成向前差分的公式如下: V"=△"f-m 8"f=A∫ x=x。+k幼(k=0,12,.,n),则有 N(x)=f(xo)+f[xo,x](x-xo) +.+f几x0,x,.,xn](x-xox-x).(x-xn-) =6+x-)++x-xXx-x)-X-) n!h 若令x=x。+h,则上式又可变形为 N(+h)=+++-小-m+公万 上式称为前插值公式。 13!插值多项式的振荡 用Lagrange插值多项式L.(x)近似fx(a≤x≤b,虽然随着节点个数的增加 L(x)的次数n变大,多数情况下误差|R(x)川会变小。但是n增大时,L(x)的光滑 性变坏,有时会出现很大的振荡.理论上,当n→0,在[a,b]内并不能保证L.(x)处 处收敛于f(x),Runge给出了一个有名的例子: f(x)= 1+x,xe[-55 对于较大的x,随着n的增大,L,(x)振荡越来越大,事实上可以证明,仅当|x上3.63 时,才有1imLn(x)=f(x),而在此区间外,L(x)是发散的。 高次插值多项式的这些缺陷,促使人们转而寻求简单的低次多项式插值。 1.3.2分段线性插值 简单地说,将每两个相邻的节点用直线连起来,如此形成的一条折线就是分段线性 插值函数,记作I(x),它满足I(x,)=y,且I(x)在每个小区间[x,x,上是线性 179

-179- 1 1 1 − − − ∇ = ∇ − ∇ k m k m k m f f f 2 1 1 2 1 1 − − + − = − k m k m k m δ f δ f δ f 差分具有以下性质: (i)各阶差分均可表成函数值的线性组合,例如 k m j m j j k m f j m f + − = ∑ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ Δ = (−1) 0 k j m j j k m f j m f − = ∑ ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ ∇ = (−1) 0 (ii)各种差分之间可以互化。向后差分与中心差分化成向前差分的公式如下: k m m k m f f ∇ = Δ − 2 m k m k m f f − δ = Δ 1.2.4 等距节点插值公式 如果插值节点是等距的,则插值公式可用差分表示。设已知节点 xk = x0 + kh (k = 0,1,2,L,n),则有 ( )( ) ( ) ! ( ) [ , , , ]( )( ) ( ) ( ) ( ) [ , ]( ) 0 1 1 0 0 0 0 0 1 0 1 1 0 0 1 0 − − − − − Δ − + + Δ = + + + − − − = + − n n n n n n x x x x x x n h f x x h f f f x x x x x x x x x N x f x f x x x x L L L L L 若令 x = x0 + th ,则上式又可变形为 0 0 0 0 ! ( 1) ( 1) ( ) f n t t t n N x th f t f n n Δ − − + + = + Δ + + L L 上式称为 Newton 向前插值公式。 1.3 分段线性插值 1.3.1 插值多项式的振荡 用 Lagrange 插值多项式 L (x) n 近似 f (x)(a ≤ x ≤ b) ,虽然随着节点个数的增加, L (x) n 的次数n 变大,多数情况下误差| R (x) | n 会变小。但是n 增大时, L (x) n 的光滑 性变坏,有时会出现很大的振荡。理论上,当n → ∞ ,在[a,b]内并不能保证 L (x) n 处 处收敛于 f (x)。Runge 给出了一个有名的例子: , [ 5,5] 1 1 ( ) 2 ∈ − + = x x f x 对于较大的| x |,随着n 的增大,L (x) n 振荡越来越大,事实上可以证明,仅当| x |≤ 3.63 时,才有 lim L (x) f (x) n n = →∞ ,而在此区间外, L (x) n 是发散的。 高次插值多项式的这些缺陷,促使人们转而寻求简单的低次多项式插值。 1.3.2 分段线性插值 简单地说,将每两个相邻的节点用直线连起来,如此形成的一条折线就是分段线性 插值函数,记作 I (x) n ,它满足 n i i I (x ) = y ,且 I (x) n 在每个小区间[ , ] i i+1 x x 上是线性

函数(i=0,L,.,n))。 1,(x)可以表示为 In(x)=∑yl,(x) X-X-1 X-X x∈[x,x,]=0时舍去) x)=x- x∈x,x】(i=n时舍去) x)-x 其它 1,(x)有良好的收敛性,即对于x∈[a,b)]有, lim I(x)=f(x). 用(x)计算x点的插值时,只用到x左右的两个节点,计算量与节点个数n无关。 但越大,分段越多,插值误差越小。实际上用函数表作插值计算时,分段线性插值就 足够了,如数学、物理中用的特殊函数表,数理统计中用的概率分布表等。 1.33用Matlab实现分段线性插值 用Matlab实现分段线性插值不需要编制函数程序,Matlab中有现成的一维插值函 数interpl。 最近项插值 0m为性插值。其值可为: linear' 线性插值 spline 逐段3次样条插值 cubic' 保凹凸性3次插值, 所有的插值方法要求x0是单调的。 当x0为等距时可以用快速插值法,使用快速插值法的格式为*nearest'、*linear、 不仅要求它在节点处与函数同值,而且要求它与函数有相同的 阶 二阶其至更高阶的导数值,这就是Hermite插值问题。本节主要讨论在节点处插值 函数与函数的值及一阶导数值均相等的Hermite插值。 设已知函数y=(x)在n+1个互异节点x0x,. x上的函数值y,=f(x) (i=0,山.,川)和导数值y=(x)(1=0,L.,m,要求一个至多2n+1次的多项式 H(x),使得 H(x)=y,f(x)=y(=0,1.,n) 满足上述条件的多项式H(x)称为Hermite插值多项式。 Hermite插值多项式为 -180-

-180- 函数(i = 0,1,L,n) 。 I (x) n 可以表示为 ∑= = n i n i i I x y l x 0 ( ) ( ) ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎨ ⎧ ∈ = − − ∈ = − − = + + + − − − 其它 时舍去 时舍去 , , ( ) ) 0 [ , ] , [ , ] ( 0 ( ) 1 1 1 1 1 1 x x x i n x x x x x x x i x x x x l x i i i i i i i i i i i I (x) n 有良好的收敛性,即对于 x∈[a,b]有, lim I (x) f (x) n n = →∞ 。 用 I (x) n 计算 x 点的插值时,只用到 x 左右的两个节点,计算量与节点个数n 无关。 但n 越大,分段越多,插值误差越小。实际上用函数表作插值计算时,分段线性插值就 足够了,如数学、物理中用的特殊函数表,数理统计中用的概率分布表等。 1.3.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.4 埃尔米特(Hermite)插值 1.4.1 Hermite 插值多项式 如果对插值函数,不仅要求它在节点处与函数同值,而且要求它与函数有相同的一 阶、二阶甚至更高阶的导数值,这就是 Hermite 插值问题。本节主要讨论在节点处插值 函数与函数的值及一阶导数值均相等的 Hermite 插值。 设已知函数 y = f (x) 在n +1个互异节点 n x , x , , x 0 1 L 上的函数值 ( ) i i y = f x (i = 0,1,L,n) 和导数值 ' '( ) i i y = f x (i = 0,1,L,n) ,要求一个至多2n +1次的多项式 H(x),使得 i i H(x ) = y i i H'(x ) = y' (i = 0,1,L,n) 满足上述条件的多项式 H(x)称为 Hermite 插值多项式。 Hermite 插值多项式为

H(x)=>h[(x,-x)(2a,y,-y )+y.] 其中么=-生)月 园-x 14.2用Matlab实现Hermite插值 Matlab中没有现成的Hermite插值函数,必须编写一个M文件实现插值, 设n个节点的数据以数组x0(已知点的横坐标),0(函数值),(导数值) 输入(注意Matlat的数组下标从1开始) ,输 出数组y为m 个插值 编写 for for h*L o品3。5) y(0((0()()() 1.5样条插值 提出的计算问题对插值函数的光滑性有较高要求,如飞机的机翼乡 的边 具有投高的光程度,不仅要连实 函数的概今 长来丁得设计中 条或细金属条。绘图员利用它把 使连接点处有连续的曲率。 数学上将具有一定光滑性的分段多项式称为样条函数。具体地说,给定区间[α,] 的一个分划 a=0<x<.<x-1<xn=b 如果函数s(x)满足: (i)在每个小区间[x,x](i=0,l.,n-1)上s(x)是k次多项式: (i)s(x)在[a,b]上具有k-1阶连续导数。 则称s(x)为关于分划△的k次样条函数,其图形称为k次样条曲线。x,x,·,x称为 样条节点,,x,x称为内节点,X,x,称为边界点,这类样条函数的全体记做 -181-

-181- ∑= = − − + n i i i i i i i H x h x x a y y y 0 ( ) [( )(2 ' ) ] 其中 ∏ ≠ = ⎟ ⎟ ⎠ ⎞ ⎜ ⎜ ⎝ ⎛ − − = n j i j i j j i x x x x h 0 2 , ∑ ≠ = − = n j i j i j i x x a 0 1 。 1.4.2 用 Matlab 实现 Hermite 插值 Matlab 中没有现成的 Hermite 插值函数,必须编写一个 M 文件实现插值。 设n 个节点的数据以数组 x0 (已知点的横坐标), y0 (函数值), y1(导数值) 输入(注意 Matlat 的数组下标从 1 开始),m 个插值点以数组 x 输入,输出数组 y 为m 个插值。编写一个名为 hermite.m 的 M 文件: function y=hermite(x0,y0,y1,x); n=length(x0);m=length(x); for k=1:m yy=0.0; for i=1:n h=1.0; a=0.0; for j=1:n if j~=i h=h*((x(k)-x0(j))/(x0(i)-x0(j)))^2; a=1/(x0(i)-x0(j))+a; end end yy=yy+h*((x0(i)-x(k))*(2*a*y0(i)-y1(i))+y0(i)); end y(k)=yy; end 1.5 样条插值 许多工程技术中提出的计算问题对插值函数的光滑性有较高要求,如飞机的机翼外 形,内燃机的进、排气门的凸轮曲线,都要求曲线具有较高的光滑程度,不仅要连续, 而且要有连续的曲率,这就导致了样条插值的产生。 1.5.1 样条函数的概念 所谓样条(Spline)本来是工程设计中使用的一种绘图工具,它是富有弹性的细木 条或细金属条。绘图员利用它把一些已知点连接成一条光滑曲线(称为样条曲线),并 使连接点处有连续的曲率。 数学上将具有一定光滑性的分段多项式称为样条函数。具体地说,给定区间[a,b] 的一个分划 Δ : a = x0 < x1 <L< xn−1 < xn = b 如果函数 s(x) 满足: (i)在每个小区间[ , ]( 0,1, , 1) xi xi−1 i = L n − 上 s(x) 是 k 次多项式; (ii) s(x) 在[a,b]上具有 k −1阶连续导数。 则称 s(x) 为关于分划 Δ 的k 次样条函数,其图形称为k 次样条曲线。 n x , x , , x 0 1 L 称为 样条节点, 1 2 1 , , , n− x x L x 称为内节点, n x , x 0 称为边界点,这类样条函数的全体记做

S(在,k),称为k次样条函数空间。 显然,折线是一次样条曲线 若s(x)ES(△,k),则s(x)是关于分划△的k次多项式样条函数。k次多项式样 条函数的一般形式为 -+ 之-x, 其中a,0=0,L.,k)和B,U=1,2,.,n-1)均为任意常数,而 -=-,2,J=12n-1) 0,x<x, 在实际中最常用的是k=2和3的情况,即为二次样条函数和三次样条函数。 二次样条函数:对于[a,b]上的分划△:a=x。<x<.<xn=b,则 闭=%+ar+号r+号a-ieSa2】 (5) 其中x-=-月,x≥ 0x<x, 5,(j=12,.,n-1)。 三次样条函数:对于[a,b]上的分划△:a=x<x<.<xn=b,则 (6) 其-5-2,=24-1. 0,x<x, 利用样条函数进行插值,即取插值函数为样条函数,称为样条插值。例如分段线性插值 是一次样条插值。下面我们介绍二次、三次样条插值。 1.52二次样条函数插值 首先,我们注意到s,(x)∈S(△,2)中含有n+2个特定常数,故应需要n+2个插 值条件,因此,二次样条插值问题可分为两类: 问题(1): 已知插值节点x和相应的函数值y,(1=01,.,)以及端点x。(或xn)处的导数 值y。(或yn),求s,(x)∈S(△,2)使得 52(x)=y,i=01,2.,m) s2(x)=(或s(x)=y) (7) 问题2): 已知插值节点x和相应的导数值y,(=0,L2,)以及端点x。(或x)处的函 数值(或y),求s,(x)eS(A,2)使得 s2(x)=y,0=0,12,.,m) s,(x)=y(或3,(x)=y) (8) -182

-182- S ( , k) P Δ ,称为 k 次样条函数空间。 显然,折线是一次样条曲线。 若 s(x) S ( , k) ∈ P Δ ,则 s(x) 是关于分划 Δ 的 k 次多项式样条函数。k 次多项式样 条函数的一般形式为 ∑ ∑ − = + = = + − 1 0 1 ( ) ! ! ( ) n j k j j k i i i k x x i k x s x α β , 其中 (i 0,1, , k) αi = L 和 ( j = 1,2, , n −1) β j L 均为任意常数,而 ⎪⎩ ⎪ ⎨ ⎧ < − ≥ − + = j j k k j j x x x x x x x x 0, ( ) , ( ) ,( j = 1,2,L, n −1) 在实际中最常用的是 k = 2和 3 的情况,即为二次样条函数和三次样条函数。 二次样条函数:对于[a,b]上的分划 Δ : a = x0 < x1 <L< xn = b ,则 ∑ − = = + + + − + ∈ Δ 1 1 2 2 2 2 0 1 ( ) ( ,2) 2! 2! ( ) n j j P j s x x x x x S α β α α , (5) 其中 ⎪⎩ ⎪ ⎨ ⎧ < − ≥ − + = j j j j x x x x x x x x 0, ( ) , ( ) 2 2 ,( j =1,2,L, n −1)。 三次样条函数:对于[a,b]上的分划 Δ : a = x0 < x1 <L< xn = b ,则 ∑ − = = + + + + − + ∈ Δ 1 1 2 2 3 3 3 3 0 1 ( ) ( ,3) 2! 3! 3! ( ) n j j P j s x x x x x x S α α β α α , (6) 其中 ⎪⎩ ⎪ ⎨ ⎧ < − ≥ − + = j j j j x x x x x x x x 0, ( ) , ( ) 3 3 ,( j = 1,2,L, n −1)。 利用样条函数进行插值,即取插值函数为样条函数,称为样条插值。例如分段线性插值 是一次样条插值。下面我们介绍二次、三次样条插值。 1.5.2 二次样条函数插值 首先,我们注意到 ( ) ( ,2) s2 x ∈ SP Δ 中含有 n + 2个特定常数,故应需要 n + 2个插 值条件,因此,二次样条插值问题可分为两类: 问题(1): 已知插值节点 i x 和相应的函数值 y (i 0,1, , n) i = L 以及端点 0 x (或 n x )处的导数 值 0 y' (或 n y' ),求 ( ) ( ,2) s2 x ∈ SP Δ 使得 ⎩ ⎨ ⎧ = = = = ' ( ) ( ' ( ) ) ( ) ( 0,1,2, , ) 2 0 0 2 n n n i i s x y s x y s x y i n 或 L (7) 问题(2): 已知插值节点 i x 和相应的导数值 y' (i 0,1,2, ,n) i = L 以及端点 0 x (或 n x )处的函 数值 0 y (或 n y ),求 ( ) ( ,2) s2 x ∈ SP Δ 使得 ⎩ ⎨ ⎧ = = = = ( ) ( ( ) ) ' ( ) ' ( 0,1,2, , ) 2 0 0 2 2 n n i i s x y s x y s x y i n 或 L (8)

事实上,可以证明这两类插值问题都是唯一可解的。 对于问题(1),由条件(7) s化,)=a+a+a=y )=a,+a4+= 5)=a+a+50+26-P=y0=2川 s2(x)=a%1+a2x='0 引入记号X=(ao,a,42,B,.,Bn)为未知向量,C=0,.,yn,y)为已 知向量。 1 0 0 1 0 0 0 -. 2 (x。-x)月 01 0 0 于是,问题转化为求方程组AX=C的解X=(a,a,a,B,B了的问题, 即可得到二次样条函数S,(x)的表达式。 对于问题(2)的情况类似。 15.3三次样条函数插值 由于s(x)eS(A,3)中含有n+3个待定系数,故应需要n+3个插值条件,己知 插值节点x,和相应的函数值fx,)=y,=0,12,m),这里提供了n+1个条件,还 需要2 界条 常用 的三次样条函数的边界条件有3种类型: (i)s'3(@)=yo,s,(b)=yn。由这种边界条件建立的样条插值函数称为f(x)的 完备三次样条插值函数。 特别地,y。=y。=0时,样条曲线在端点处呈水平状态。 如果广(x)不知道,我们可以要求s,(x)与(x)在端点处近似相等。这时以 xo,x1,x2,x3为节点作一个三次Newton插值多项式N(x),以xn,x-,xn-2,x-作 个三次Newton插值多项式N,(x),要求 s'(a)=N.(a),s'(b)=N(b) 由这种边界条件建立的三次样条称为f(x)的Lagrange三次样条插值函数。 (i)s”3(@)=少o,3(b)=y”3。特别地y”n=y”n=0时,称为自然边界条件。 -183-

-183- 事实上,可以证明这两类插值问题都是唯一可解的。 对于问题(1),由条件(7) ⎪ ⎪ ⎪ ⎪ ⎩ ⎪ ⎪ ⎪ ⎪ ⎨ ⎧ = + = = + + + − = = = + + = = + + = ∑ − = 2 0 1 2 0 0 1 1 2 2 2 0 1 2 1 2 2 1 0 1 1 2 1 0 2 2 0 0 1 0 2 0 ' ( ) ' ( ) ( 2,3, , ) 2 1 2 1 ( ) 2 1 ( ) 2 1 ( ) s x x y s x x x x x y j n s x x x y s x x x y j i j j j i j i j α α α α α β α α α α α α L 引入记号 T X n ( , , , , , ) = α 0 α1 α 2 β1 L β −1 为未知向量, ( , , , , ' ) 0 1 0 C y y y y = L n 为已 知向量。 ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎢ ⎣ ⎡ − − = − − 0 1 0 0 ( ) 2 1 ( ) 2 1 2 1 1 ( ) 0 2 1 2 1 1 0 0 2 1 1 0 0 2 1 1 0 2 1 2 1 2 2 2 1 2 2 2 2 1 1 2 0 0 L L M M M M M L L L x x x x x x x x x x x x x x x A n n n n n 于是,问题转化为求方程组 AX = C 的解 T X n ( , , , , , ) = α 0 α1 α 2 β1 L β −1 的问题, 即可得到二次样条函数 ( ) 2 s x 的表达式。 对于问题(2)的情况类似。 1.5.3 三次样条函数插值 由于 ( ) ( ,3) s3 x ∈ SP Δ 中含有 n + 3 个待定系数,故应需要 n + 3 个插值条件,已知 插值节点 i x 和相应的函数值 f (x ) y (i 0,1,2, , n) i = i = L ,这里提供了 n +1个条件,还 需要 2 个边界条件。 常用的三次样条函数的边界条件有 3 种类型: (i) n s' (a) y' ,s' (b) y' 3 = 0 3 = 。由这种边界条件建立的样条插值函数称为 f (x)的 完备三次样条插值函数。 特别地, y' 0 = y' n = 0 时,样条曲线在端点处呈水平状态。 如果 f '(x) 不知道,我们可以要求 ' ( ) 3 s x 与 f '(x) 在端点处近似相等。这时以 0 1 2 3 x , x , x , x 为节点作一个三次 Newton 插值多项式 N (x) a ,以 1 2 3 , , , n n− n− n− x x x x 作一 个三次 Newton 插值多项式 N (x) b ,要求 s'(a) N' (a), s'(b) N' (b) = a = b 由这种边界条件建立的三次样条称为 f (x)的 Lagrange 三次样条插值函数。 (ii) 3 0 3 3 s" (a) = y" ,s" (b) = y" 。特别地 y"n = y"n = 0 时,称为自然边界条件

(i)S,(a+0)=s(b-0),s"(a+0)=s”(b-0),(这里要求s,(a+0)= 5,(-0)此条件称为周期条件 1.5.4三次样条插值在Matlab中的实现 在Malb中数据点称之为断点。如果三次样条插值没有边界条件,最常用的方法 (nota-knot条件这个条件第 个和第2个三次多项式的三阶 次样条插值也有现成的函 项式也做同样地处理。 x.spline) 其中0,0宽E数器监是瑞值 00 ,y是插值点的函数值。 对于三次样条插值,我们提倡使用函数csape,csape的返回值是pp形式,要求插 值点的函数值,必须调用函数ppval. pp=csape(x0,yO):使用默认的边界条件,即Lagrange边界条件。 Pp=-csape(x0,y0,conds)中的 条件,其值可为 'complete 边界》 一阶导 值0,0 nal' 设置边界的二阶导数值为0.01 些特殊的边界条件,可以通过co的一个1×2矩阵来表示,conds元素的 取值为1,2。此时,使用命令 其中y0 ext=left.y0.righ,这里len表示左边界的取值,ght表示右边界的取值。 conds(门的含义是给定端点i的j阶导数,即conds的第一个元素表示左边界的条 件,第二个元素表示右边界的条件,cods[2,]表示左边界是二阶导数,右边界是一阶 导数,对应的值由le和right给出。 详细情况请使 用帮助help csape 加零件的外形根据工艺要求由 一组数据(x,y)给出(在平面情况下),用程摇 铣床加工时每一刀只能沿x方向和y方向走非常小的一步,这就需要从己知数据得到加 工所要求的步长很小的(x,y)坐标。 表1中给出的X.v数据位于机翼断面的下轮廓线上,假设需要得到X坐标每改变 0.1时的y坐标。试完成加工所需数据,画出曲线,并求出x=0处的曲线斜率和 13≤x≤15范围内y的最小值 表1 0127202201811016 要求用La: 分段线性和三次样条三种插值方法计算。 解编写以下程序 121314151:

-184- (iii) ' ( 0) ' ( 0), " ( 0) " ( 0) s 3 a + = s 3 b − s 3 a + = s 3 b − ,(这里要求 s3 (a + 0) = ( 0) s3 b − )此条件称为周期条件。 1.5.4 三次样条插值在 Matlab 中的实现 在 Matlab 中数据点称之为断点。如果三次样条插值没有边界条件,最常用的方法, 就是采用非扭结(not-a-knot)条件。这个条件强迫第 1 个和第 2 个三次多项式的三阶 导数相等。对最后一个和倒数第 2 个三次多项式也做同样地处理。 Matlab 中三次样条插值也有现成的函数: y=interp1(x0,y0,x,'spline'); y=spline(x0,y0,x); pp=csape(x0,y0,conds),y=ppval(pp,x)。 其中 x0,y0 是已知数据点,x 是插值点,y 是插值点的函数值。 对于三次样条插值,我们提倡使用函数 csape,csape 的返回值是 pp 形式,要求插 值点的函数值,必须调用函数 ppval。 pp=csape(x0,y0):使用默认的边界条件,即 Lagrange 边界条件。 pp=csape(x0,y0,conds)中的 conds 指定插值的边界条件,其值可为: 'complete' 边界为一阶导数,即默认的边界条件 'not-a-knot' 非扭结条件 'periodic' 周期条件 'second' 边界为二阶导数,二阶导数的值[0, 0]。 'variational' 设置边界的二阶导数值为[0,0]。 对于一些特殊的边界条件,可以通过 conds 的一个1×2 矩阵来表示,conds 元素的 取值为 1,2。此时,使用命令 pp=csape(x0,y0_ext,conds) 其中 y0_ext=[left, y0, right],这里 left 表示左边界的取值,right 表示右边界的取值。 conds(i)=j 的含义是给定端点i 的 j 阶导数,即 conds 的第一个元素表示左边界的条 件,第二个元素表示右边界的条件,conds=[2,1]表示左边界是二阶导数,右边界是一阶 导数,对应的值由 left 和 right 给出。 详细情况请使用帮助 help csape。 例 1 机床加工 待加工零件的外形根据工艺要求由一组数据(x, y) 给出(在平面情况下),用程控 铣床加工时每一刀只能沿 x 方向和 y 方向走非常小的一步,这就需要从已知数据得到加 工所要求的步长很小的(x, y) 坐标。 表 1 中给出的 x, y 数据位于机翼断面的下轮廓线上,假设需要得到 x 坐标每改变 0.1 时的 y 坐标。试完成加工所需数据,画出曲线,并求出 x = 0 处的曲线斜率和 13 ≤ x ≤ 15 范围内 y 的最小值。 表 1 x 0 3 5 7 9 11 12 13 14 15 y 0 1.2 1.7 2.0 2.1 2.0 1.8 1.2 1.0 1.6 要求用 Lagrange、分段线性和三次样条三种插值方法计算。 解 编写以下程序: clc,clear x0=[0 3 5 7 9 11 12 13 14 15];

共26页,试读已结束,阅读完整版请下载
刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档