1、2010年第 1期总第 154期林区教学Teach ing of Fo re stry RegionNo. 1 2010General No. 154拉格朗日插值法在工程应用中的算法实现徐 小 丽(苏州工业职业技术学院 ,江苏 苏州 215104)摘 要 :“学以致用 ”是每一门学科都致力追求的境界 ,数学自然也不例外 。可人们往往淹没于一堆高深的数学理论及烦琐的分析 、论证之中 ,早已失去了数学的乐趣 ! 特别是用数学来解决实际的问题更是感到无所适从 。介绍拉格朗日插值法在现实分析中的应用 ,并通过 C语言程序来实现这一数学分析法的自动化 ,为复杂的工程分析研究提供了一条数学算法的捷径 。关
2、键词 :插值法 ;拉格朗日多项式 ;算法实现 ; C语言中图分类号 : O29 文献标志码 : A 文章编号 : 1008 - 6714 ( 2010) 01 - 0017 - 03y1- y0一 、插值算法原理 p ( x) = y0+ x1- x0 ( x - x0) ;由前式整理得 :在科学研究和实际工程设计中 ,几乎所有的问题都可以用函数 y = f ( x)来表示其某种内在规律的数量关系 。但 p ( x) =x - x1x0- x1 y0+x - x0x1- x0 y1; 记 : l0( x )=x-x1x0- x1, l1( x )理想化的函数关系在实际的工程应用中是很难奢求的
3、。 = x - x0 。由一次函数的性质有 :对于那些没有明显解析式的函数关系表达式则只能通过实验或观测得到 y = f ( x)在某区间 a, b 上的一系列点的函数值 yi=f ( xi ) , ( i = 0, 1, 2, , n) , 即一张表 ( x , yi ) , ( i= 0, 1, 2, , n) 。根据给定的函数表构造一个既能反映函数 f ( x)的特性 , 又便于计算的简单函数 p ( x)来近似 f ( x) ,并使得 p ( xi) = f ( xi) , ( i = 0, 1, 2, , n) ,这就是插值法 。设函数 y = f ( x) 在区间 a, b 上有定
4、义 , x0, x1, xn是 a, b 上取定的 n + 1个互异节点 ,且在这些点处的函数值 f ( x0) , f ( x1) , , f ( xn)为已知 ,即 yi= f ( x ) , ( i = 0, 1, 2, n) 。若存在一个和 f ( x)近似的函数 ( x) ,满足x1- x0l ( x0) = l ( x1) = 1, l0( x1) = l ( x0) = 0; l0( x) + l ( x)= 1其中 l ( x) , l1( x)称为线性插值基函数 。当 n = 2时即为抛物插值 , 这也是一种常用的代数插值 。根据给定函数 f ( x ) 在三个互异节点 x0
5、, x1, x2的值f ( x0) , f ( x1) , f ( x2) ,构造次数不超过二次的多项式 P ( x) =a2x2+ a1x + a0, 使满足二次插值条件 P ( xi) = f ( x ) , ( i =0, 1, 2) 。 P ( x)的参数直接由插值条件决定 , 并满足下面的代数方程组 :2( xi) = f ( xi ) , ( i = 0, 1, 2, , n) ( 1 - 1) a0+ a1x0+ a2x0= y0则称 ( x)为 f ( x ) 的一个插值函数 , 点 xi 为插值节点 , 式( 1 - 1)称为插值条件 , 区间 a, b 称为插值区间 , 而
6、误差函数 R ( x) = f ( x) - ( x)称为插值余项 。由于代数多项式具有数值计算和理论分析方便的特点 ,故在工程实际应用中我们多选代数插值 。即求一个次数不超过 n次的多项式P ( x) = anxn+ an- 1xn - 1+ + a1x + a0( 1 - 2)满足 p ( xi) = f ( xi) , ( i = 0, 1, 2, , n) , 则称 P ( x )为 f ( x)a0+ a1x1+ a2x21=y1a0+ a1x2+ a2x22=y2仿线性插 值 , 用基 函 数 的 方法 求 解 方 程 组 。求 二 次 式l ( x0) = 1, l0( x1)
7、= l ( x2) = 0。因 x1, x2是 l0( x)的两个零点 ,于是 l ( x) = c ( x - x1) ( x - x2) ,且 l ( x0) = 1, 确定系1数 c = , 从 而 导 出 l0( x ) =( x0- x1) ( x0- x2)( x - x1) ( x - x2)的 n次插值多项式 。 ( x0- x1) ( x0- x2) 。同理 , 构造 出满 足 条 件 l ( x1) = 1,二 、拉格朗日插值多项式 l ( x0) = l ( x2) = 0 的 插 值 多 项 式 l ( x ) =( x - x0) ( x - x2)当 n = 1时即
8、为线性插值 , 这也是代数插值最简单的 ( x1- x0) ( x1- x2) 以 及 满 足 条 件 l ( x2) = 1, l2( x0) =形式 。根据给定函数 f ( x ) 在两个互异节点 x0, x1的值f ( x0) , f ( x1) ,用线性函数 p ( x) = ax + b来近似代替 f ( x) 。l ( x1) = 0的插值多项式 l ( x) = ( x-x0) ( x - x1)( x2- x0) ( x2- x1)。这样由点斜式直线方程可得 :收稿日期 : 2009 - 11 - 26作者简介 :徐小丽 (1978 - ) ,女 ,江苏苏州人 ,助教 ,硕士研
9、究生 ,从事高等教育学研究 。构造出来的 l ( x) , l1( x) , l2( x)称为抛物插值基函数 , 相应的有P ( x) = l ( x) y0+ l ( x) y1+ l ( x) y2当插值点增加到 n + 1个时 , 就可以通过 n + 1个不同的已知点 xi, yi= f ( xi) 来构造一个次数为 n的代数多项 17 式 P ( x) 。类似抛物插值 , 先构造一个特殊的 n 次多项式l ( x) ,使其在各节点 xi上满足lk( x0) = = lk( xk- 1)= 0, lk( xk) = 1, lk( xk+ 1)= =lk( xn)= 0因 x0, x1,
10、, xk - 1, xk + 1, xn 都是 n次 l ( x)的零点 ,故可法尤为必要 。(一 ) 计算步骤( 1) 输入 n, xi, yi( i = 0, 1, 2, , n) ,给出初始值 P ( x)= 0;n x - xj( 2) 对 i = 0, 1, 2, , n,计算 l ( x) = ; P ( x)设 : lk( x) =Ak( x - x0) ( x - x1) ( x - xk- 1 ) ( x - xk+ 1) ( x- xn) ( 2 - 1)其中 Ak为待定常数 , 由条件 lk( xk) = 1可求得 Ak=1n( xk- xj)j =0jkn( x - x
11、j)j =0 n= p ( x) + li( x) yi;( 3) 输出 P ( x) 。(二 )拉格朗日插值算法流程图j =0ji xi- xj代入式 ( 2 - 1) ,得 l( x) =jkn( xk- xj)j =0jk= j =0jkx - xjxk- xj,称lk( x) 为关于基点 xi的 n次插值基函数 。事实上 , 由于每个插值基函数 lk( x) 都是 n次多项式 ,它们的线性组合 P ( x)n= lk ( x) yk称为 n 次拉格朗 日插 值 多 项 式 , 并记 做k =0Ln( x) 。下面我们来看拉格朗日插值法的实际应用问题 。设 y = f ( x) 为某项工
12、程的数学模型函数 , 其观测数据为xkyk- 25014- 351试构造三次拉格朗日插值多项式 , 并计算 f ( - 1) 的近似值 。解 :基函数为 :l 0( x) = ( x - 0) ( x - 4) ( x - 5)( - 2 - 0) ( - 2 - 4) ( - 2 - 5)= -1x3+3x2-5x84 28 21l ( x) = ( x + 2) ( x - 4) ( x - 5)=1 3x -7 2x + 1x + 1(0 + 2) (0 - 4) (0 - 5) 40l 2( x) = ( x + 2) ( x - 0) ( x - 5) = - 140x3+ 120x
13、2+ 5 x( 4 + 2) ( 4 - 0) ( 4 - 5)l 3( x) = ( x + 2) ( x - 0) ( x - 4)( 5 + 2) ( 5 - 0) ( 5 - 4)拉格朗日插值多项式为 :3=241x3-3582x2-35128x35四 、C语言程序源代码L3( x) = yklk( x) = 5l ( x) + l1( x) - 3l ( x) +k =0531 255l ( x) = x - x - x + 142 14 21f ( - 1) =5( - 1)3-1( - 1)2-55( - 1) + 1 =2442 14 21 7三 、拉格朗日插值算法实现流程通过
14、上面的例题分析可以看出 ,应用拉格朗日插值算法可以在不知道具体函数表达式的情况下得出近似解 , 这对工程的设计和施工具有非常重要的意义 。但当工程浩大 ,需要处理大量的观测数据时 , 完全人工的分析计算就难以实施了 。此时引入拉格朗日插值法的计算机自动化算 18 根据上述算法流程图 ,对前面的例题用 C语言编程实现 。拉格朗日插值多项式 C程序源代码 :# include # include # include # include # define n 3 /3 插值节点的最大下标 3/double x1 n + 1 = - 2, 0, 4, 5;double y1 n + 1 = 5, 1,
15、 - 3, 1; / 3 数组 x和 y存放节点和对应的函数值 3/main ( )2010年第 1期总第 154期林区教学Teach ing of Fo re stry RegionNo. 1 2010General No. 154求 解 逆 矩 阵 的 四 种 常 见 方 法杨 欢(哈尔滨铁道职业技术学院 ,哈尔滨 150081)摘 要 :研究并总结了求解逆矩阵的四种常见方法 ,并对这四种方法的应用加以探究 ,以便更灵活地解决逆矩阵的问题 。关键词 :矩阵 ;逆矩阵 ;方法中图分类号 : O151. 21 文献标志码 : A 文章编号 : 1008 - 6714 ( 2010) 01 -
16、0019 - 02矩阵是代数研究的主要对象和工具 ,它在数学的其他 解 :由 A2- A - 2E = 0,得 A (A - E) = 2E分支以及自然科学 、现代经济学 、工程技术领域等方面具有广泛的应用 ,而求解逆矩阵又在矩阵理论中占有重要地AA - E2= EA A-E2 = 1 A0位 ,它的解题思路灵活 ,求解方法多样 。对逆矩阵的四种常见求解方法加以总结 ,并对其应用进行探究 。1 利用逆矩阵的定义求逆矩阵对于一个 n阶方阵 A,如果存在一个 n阶方阵 B ,使得AB =BA = E, 则称 A 矩阵是可逆矩阵 , 并称 B 是 A 的逆矩阵 ,简称 A 的逆 ,记作 A- 1。例
17、 :设方程 A 满足方程 A2- A - 2E = 0,证明 : A, A + 2E都可逆 ,并求它们的逆矩阵 。收稿日期 : 2009 - 10 - 30作者简介 :杨欢 ( 1980 - ) ,女 , 黑龙江哈尔滨人 , 助理讲师 。double Lagrange ( double x1 n + 1 , double y1 n + 1 , floatt) ;int m , k; float x, y; float X; double z;p rintf (“ n The nuber of the interpolation points is m = ”) ;scanf (“% d”, /
18、3 输入插值点的个数 3/for( k = 1; k = m; k + + )Printf (“ ninput X % d = “, k ) ;scanf (“% f ”, /3 输入插值点 3/z = Lagrange ( x1, y1, X) ;p rintf (“P ( % f) = % f n”, X, z) ;getch ( ) ;return ( 0) ;Double Lagrange ( double x n + 1 , double y n + 1 , float X)故 A 可逆 ,且 A- 1=1(A - E)22又由 A - A - 2E = 0 ( A + 2E ) (
19、 A - 3E ) + 4E = 0 ( A + 2E )-1(A - 3E) = E4A+ 2E -1(A - 3E) = 14故 A + 2E可逆 , 且 (A + 2E)- 1= -1(A - 3E)4说明 : ( 1)方阵 A 可逆的充分必要条件是 A 非奇异 ,即 A 0。( 2)设 A 为 n阶矩阵 , 如果存在 n 阶矩阵 B , 使得 AB= E,则 BA = E,即在计算或证明时 ,只要由 AB = E或 BA = int i, j; double L , P; /3 拉格朗日插值多项式函数 3/P = 0. 0;For( i = 0; i = n; i + + ) /3 计算 P ( x) 3/L = 1. 0;for( j = 0; j = n; j + + )if ( j! = i) L = L3 (X - x j ) / ( x i - x j ) ;P = P + y i 3L;Return (p) ;参考文献 : 1 徐士良. 数值方法与计算机实现 M . 北京 :清华大学出版社 , 2006. 2 施妙根 ,顾丽珍. 科学和工程计算基础 M . 北京 :清华大学出版社 , 1999.责任编辑 :李海波 19