第39卷第1O期 湖州师范学院学报 V01.39 No.1O 2017年1O月 Journal of Huzhou University 0ct.,2O17 Matlab在课堂教学中的应用 Newton插值浅析 郑敏玲,欧阳成 (湖州师范学院理学院,浙江湖州313000) 摘要:Matlab是一个很重要的数学处理软件,特别是在数值计算领域里,它的重要性更是非常明显.通过分析 Newton插值的基本思想、实现和应用,对如何利用Matlab编程提高人们对这些知识的掌握和理解做了新的探索 和尝试,并对插值余项定理进行了实例验证. 关键词:课堂教学;数值分析;Matlab 中图分类号:017 文献标志码:A 文章编号:1009—1734(2017)10—0019—06 MSC 2010:65D05 数值分析是为计算数学、物理及工科类专业开设的专业基础课,不仅具有很高的理论性,还与实际结 合较紧密.由于数值分析着重研究求解问题的数值方法以及与此相关的理论,因此算法推导是这门课程的 重要特点.然而,大量的算法和公式增加了它的难度,降低了它的吸引力.为了提高学生的学习兴趣,在教 学中可以通过Matlab实例演示增加学生对教学内容的理解,提高学生的数学应用能力 ].本文将以插值 为例,介绍在课堂上如何利用Matlab帮助理解数值分析中的一些重点、难点内容,为师生提供参考. 插值方法主要有Lagrange插值和Newton插值两种,这两种方法各有优势与不足.在一般的数值分 析教材中,往往以Lagrange插值为主,而Newton插值没有受到足够的重视.实际上,Newton插值中包含 丰富的理论和数值思想方法.本文将对它进行深入探讨,并利用Matlab讨论它的实现与应用. 1 Lagrange插值和Newton插值 为得到Lagrange插值LN(z),首先求各插值节点a≤x。,x 一,xN≤b对应的Lagrange基函数 Z ( ): N 一 ~ z (z)一1_r , , j≠t zi— J 然后通过线性组合得到插值函数: N LN( )一 yill(z). f—o 注意到基函数与节点的函数值无关,因此Lagrange插值方法简单,容易实现,这是它的优点;但是由于基 函数依赖所有节点,若想增加一个节点,得到更高一次的插值多项式,则所有基函数都将随之改变,在这种 情况下,利用Lagrange插值则不方便. 在Lagrange插值中,计算z ( )需要2N次加法、N一1次乘法、N次除法运算,因此计算所有的基函 数共需要(4N一1)(N+1)次算术运算.此外,利用Lagrange插值求导数的运算更复杂.相比之下,New— ton插值的计算简单得多. 为了便于讨论Newton插值的特征,本文引入差商的另一种定义[3]:设P (z)是函数f(x)在节点 ,z㈩,…,zⅢ上的是次插值多项式,则称多项式P (z)中X 的系数为函数厂(z)在节点z ,X州,…, 收稿日期:2017—08—15 基金项目:湖州师范学院教改项目(JGB16021). 通信作者:郑敏玲,博士,副教授,研究方向:复杂系统动力学行为的理论、数值模型与应用.E—mail:zhengml@zjhu.edu.ca 20 湖卅l师范学院学报 第39卷 z 上的是阶差商,记作fix , 项式,则 ,…,XH ]. 按照上述定义,若P ( )和P川(z)分别是基于节点z , ¨,…, m( 分别取惫和愚+1)的插值多 P^+1( )一P (z)一C(z—z o)…( —z^), 根据定义,.27抖 的系数C应为k+1阶差商,即 C—fix 0,z 一,z ]. 于是 P +1(z):::P ( )+fixo,X1,…, ]( — o)…( — ) 成立.由上面的表达式,可以得到Newton插值多项式P (z): P ( )一P o( )+(P1( )一P o( ))+(P 2(z)一P1(z))+…+(P ( )一P 一l( )):== f(x 0)+( —z 0)fEx 0,X1]+( — o)( — 1)fEx 0, 1, 2]+…+ (z—z 0)(z— 1)…(z一一32 一1)fix 0, 1,…, ]. 下面考虑差商的几个重要性质.利用上面的定义可以更好地理解差商与导数的关系: 儿fr ’… ] f ( ) ‘ J一 以多项式为例,设 f(x)一7x +5x 一20x +3x。+2x +1, 那么,它的6次插值多项式就是它本身f(x),z。项的系数就是函数/’( )的6阶差商;它的7阶差商就是 z 的系数,即为0. 接下来考查差商的对称性和表示公式.首先,由插值多项式的唯一性及差商的定义,我们很容易得到 差商的对称性: f[x o,…,X ,…,X ,…, ^]一fVx o,…, ,…,z ,…,z ]. 再利用Lagrange插值公式,以 。,X ,…,X 为节点的插值多项式的最高次项z 的系数为: —— (z一.72 o)…(z一.72厂1)( —z J+1)…(z—z )‘ 于是由上面引入的差商的定义,即得: 一 ]一塞 而 2 Newton插值的计算 计算Newton插值可以分两步进行:首先计算各阶差商,然后计算插值多项式. 利用秦九韶算法计算Newton插值多项式可以使计算量大大减少 ]. P (sc)===C o+(z—z 0)(c1+(z— 1)(c 2+…( —z 2)(f l+( — 一1)C …))), 其中 ( 一0,1,…,竹)为函数的k阶差商.那么,计算P (z)的计算量为2n次加法及,z次乘法.算法如下: (1)计算各阶差商C。,C ,…,C . ①输入 (z。),f(x1),…, ( ),C一[c o,C1,…,c ]; ②赋值C 一f(x ); ③For 一1:7l",i:== : , fl—Ci l C z —’ i— Ti-i —End; ④输出a. (2)计算Newton插值多项式的值. ①输入节点 0, 1,…,X 和 ,各阶差商C一[f o,C ”,c ],b—c; ②b 一C 第1O期 郑敏玲,等:Matlab在课堂教学中的应用 ③For k一 一1 to 0, b^一f +(z—z )b +1, End; ④输出b. 为了便于Newton插值的其它方面的应用,下面的程序稍做了些修改,用求多项式替代了求多项式的值: function In,e3=newtonp(x,y) Input:x:Ix0 xl…xN3,Y=[yO yl…yN] Output:n—Newton polynomial coefficients of degree N N—length(x)一1;c—Y; for j一2:N+1 for i=k:N+1 c(i)一(y(i)一y(i一1))/(x(i)一x(i—j+1)); end y===C; end n—c(N+1); for k—N:一1:1 n—In c(k)]一[O n*x(k)]; end 3插值余项分析与Runge现象 设f(x)函数的插值多项式为P (z),按照多项式插值余项定理, R (,)一 )一f(x )一 )一 (P )一手— —÷ )一 L 十l ! W ( + )(z), ∈ ∈[-a,b,b3, 其中: W( +1)( )一(z—z o)(z—z1)…(z—z ), o≤ ≤z . 根据插值余项表达式, I R n( 一 max {I ≤)1). 插值余项定理在《数值分析》中占有重要的地位,它是进行数值误差分析的基础.按照余项表达式,是 否插值节点越多,插值误差越少,这需要对余项定理作仔细分析.余项定理告诉我们:插值余项依赖于两个 方面,即函数本身和插值节点.若l 州 (z)l有界且不依赖于Tt.那么,当n一。C时,I R (,)I一0.当函 数的 +1阶导数存在且有界时,max{1 w 十¨(z)I)决定了余项的大小.按照Chebyshev定理,所有,z次 首一多项式中, T (z)一 T (z) 的最大模最小.由此得到:如果[n,6]一[一1,1],为了使max{1 w c 十¨( )I)最小,插值节点应取为 Chebyshev多项式T( +1)( )的零点. 下面通过两个函数(全纯函数和亚纯函数)说明插值误差与函数,以及插值节点之间的关系. 例 分别比较Y—xsinx和Y一 在[一5,53上的插值多项式及插值误差. 这两个函数在[一5,5]上虽然都是无穷可微的,但是函数Y—zsinx在整个复平面上全纯,而函数Y一 ÷ 在复平面上有奇异点z===±i,因此这两个函数具有不同的性质.下面我们考虑它们在插值误差上 表现出的不同性质. 湖州师范学院学报 第39卷 首先把区间[一5,5Z&等分,分别得到它们的8次插值多项式;然后提高插值节点个数,把区间1O等 分,得到它们的10次插值多项式.利用前面Matlab函数newtonp,编程如下: Newton interpolation for y—xsinx and y一1/(1+x-2); N一8;h—lO/N; x一一5:h:5; yl—x.*sin(x);y2一1./(14-x. 2); nl—newtonp(x,y1); n2一newtonp(x,y2); xx—L一5:0.1:5 ; yvl—XX.*sin(xx);yv2—1./(1+XX ̄A2); yyl—polyval(nl,xx); yy2一polyval(n2,xx); subplot(1,2,1),plot(xx,yvl,~,XX,yyl, .g) subplot(1,2,2),plot(xx,yv2, ,XX,yy2, .g) 只需把N的值换成其他值,便可得到其他的插值多项式.插值结果见图1. 图1 等距节点插值与Runge现象 Fig.1 Interpolation based on the equispaced nodes and the Runge phenomena 从图1可以看出,这两个函数的插值结果是不同的.对于全纯函数Y ̄Xsinx来说,提高插值多项式的 次数可以减少误差,但对于亚纯函数来说,利用等距节点插值,提高多项式的次数不仅不能减少插值误差, 第1O期 郑敏玲,等:Matlab在课堂教学中的应用 23 反而误差变得更大,这种现象称为Runge现象. 若利用Chebyshev零点为节点做插值,修改上面编写的程序为: Newton interpolation for y=xsinx and y===1/(1+x‘2); N一8;k一0:N; x一一5*cos((2*k+1). pi/(2*N+2)); yl—x.*sin(x);y2—1./(1+x.‘2); nl=newtonp(x,y1);n2一newtonp(x,y2); XX- ̄-[一5:0.1:5]; yvl—XX.*sin(xx);yv2===1./(1+xx. 2); yyl—polyval(nl,xx);yy2=polyval(n2,xx); subplot(1,2,1),plot(xx,yvl, ,XX,yyl, .ge) subplot(1,2,2),plot(xx,yv2,~,XX,yy2, .g) 得到的结果见图2. I]2基ff-Chebyshev ̄项式的零点的插值 Fig.2 Interpolation based on the zeros of Chebyshev polynomials 从图2可以看出,利用Chebyshev多项式的零点为节点,可以显著减少插值误差,尤其对亚纯函数,这 种效果更明显. 24 湖州师范学院学报 第39卷 4 结语 利用Matlab实现对数值分析课程中重点、难点内容的教学,可以使抽象的数学公式直观化,使晦涩的 教学内容生动化;可以培养学生的求知欲,提高学生的科研能力;可以提高学生利用数学知识解决实际问 题的能力. 参考文献: [1]赵景军,吴勃英.关于数值分析教学的几点探讨EJ-].大学数学,2005,21(3):28—3O. [2]曾繁慧,高雷阜,胡引华.基于Matlab的《数值分析》教学改革研究[J].高教论坛,2008(3):60—61. [3]KINCAID D R,CHENEY E W.Numerical Analysis:Mathematics of Scientific Computing[M].California:Wadsworth, Inc,1991. [4]YANG W Y,CAO W,CHUNG T S,et a1.Applied Numerical Methods Using Matlab[M].New Jersey:John Wiley& Sons Inc,2015. A Practical Application of Matlab for Teaching:Newton Interpolation ZHENG Minling。0UYANG Cheng (School of Science,Hughou University,Huzhou 313000,China) Abstract:Matlab is an important mathematical software especially in dealing with problems in nu— merical computation fields.By analyzing the fundamental idea,performance and application of the New ton interpolation,we investigate how to improve the comprehension of the knowledge by using Matlab. Finally,we illustrate the correctness of the interpolation error theorem by numerical examples. Keywords:classroom teaching;numerical analysis;Matlab MSC 2010:65D05 [责任编辑高俊娥]