第2卷第1期 智能系统学报 Vol.2 Ng 1 2007年2月 CAAI Transactions on Intelligent Systems Fcb.2007 矩阵的Doolittle递归分解算法及符号程序设计 智东杰1,智慧来2 (1.河南理工大学计算机学院,河南焦作454150:2.西华大学能源与环境学院,四川成都610039) 摘要:将矩阵Axm的Doolittle分解推广到Amx上,并在常规的迭代算法上加以创新,给出了递归的分解算法.在实 现算法的过程中,对数据进行了巧妙处理,使中间数据及最终计算结果都具有分数形式,提高了结果的精确度而且 更符合人们阅读的习惯.经过运行测试,算法设计合理,程序运行高效准确.程序是对MathSoft公司的交互式的数学 文字软件Mathcad的矩阵分解的数值计算扩充到符号运算. 关键词:矩阵;Doolittle分解;算法 中图分类号:TP311.1文献标识码:A文章编号:16734785(2007)01-009004 Recursive algorithm and symbolic programming for matrix Doolittle's factorization ZHI Dongjie',ZHI Hui-lai2 (1.School of Computer Science Technology,Henan Polytechnic University,Jiaozuo 454150,China;2.School of Energy and Environment,Xihua University,Chengdu 610039,China) Abstract :Apply Doolittle's factorization of matrix Ax to matrix Amxthat has m rows and n columns,and conceive a new recursive algorithm of Doolittle's factorization of matrix on the basis of traditional iterative algorithm.In the realization of algorithm,the data is skillfully dealt,so the interim data and the result have the form of fraction.These merits improve the result's exactness.And above that it conforms to readers'reading habit compared to double or float forms.After running it,the result proves that the algo- rithm is reasonably designed and the program is running with high proficiency and exactness.The program is an augmentation of matrix factorization in the MathSoft's interactive mathematic language software, which promotes matrix factorization from numerical computation to symbolic computation. Keywords:matrix;Doolittle's factorization;algorithm 将矩阵分解为形式比较简单或具有某种特性的 文中对任意矩阵用分块的思想进行Doolittle分解 一些矩阵的乘积,在矩阵理论的研究与应用中都显 的研究,给出更简单的递归分解算法及程序实现: 得十分重要.文献[1]对通用的基本线性代数子程序 1矩阵Doolittle分解的定义 (basic linear algebra subprograms BLAS)20 世纪70年代的Leve-1的BLAS开始到Leve-3 定义设A∈Cx.如果A可分解成A=LR,其 BLAS,LAPACK(linear algebra package)的发展过 中L是对角元素为1的下三角矩阵称为单位下三 程进行了详细介绍,并对矩阵的Cholesky分解进行 角矩阵),R是上三角矩阵,则称之为A的Doolittle 研究和改进,给出递归算法及Fortran90程序.文献 分解 [2]对m行n列(m>)矩阵的LU分解进行了研 根据定义获得的计算公式 究;文献[3]给出了Crout方法在解线性方程组中的 ny=amj=1,2,…W, 应用.文献[4]给出了Crout递归分解算法及实现. lh=aa/n1(i=2,3,,l, k.1 收稿日期:200604-27 r为=ah- lk *rg(j=k,k+1,.n:k=2, 1994-2008 China Academic Journal Electronic Publishing House.All rights reserved. http://www.cnki.net
第 2 卷第 1 期 智 能 系 统 学 报 Vol. 2 №. 1 2007 年 2 月 CAA I Transactions on Intelligent Systems Feb. 2007 矩阵的 Doolittle 递归分解算法及符号程序设计 智东杰1 ,智慧来2 (1. 河南理工大学 计算机学院 ,河南 焦作 454150 ;2. 西华大学 能源与环境学院 ,四川 成都 610039) 摘 要 :将矩阵 An×n的 Doolittle 分解推广到 Am ×n上 ,并在常规的迭代算法上加以创新 ,给出了递归的分解算法. 在实 现算法的过程中 ,对数据进行了巧妙处理 ,使中间数据及最终计算结果都具有分数形式 ,提高了结果的精确度 ,而且 更符合人们阅读的习惯. 经过运行测试 ,算法设计合理 ,程序运行高效准确. 程序是对 MathSoft 公司的交互式的数学 文字软件 Mathcad 的矩阵分解的数值计算扩充到符号运算. 关键词 :矩阵 ;Doolittle 分解 ;算法 中图分类号 : TP31111 文献标识码 :A 文章编号 :167324785 (2007) 0120090204 Recursive algorithm and symbolic programming for matrix Doolittle ’ s factorization ZHI Dong2jie 1 , ZHI Hui2lai 2 (1. School of Computer Science & Technology , Henan Polytechnic University , Jiaozuo 454150 , China ; 2. School of Energy and Environment , Xihua University , Chengdu 610039 , China) Abstract :Apply Doolittle’s factorization of matrix An×n to matrix Am ×n t hat has m rows and n columns , and conceive a new recursive algorit hm of Doolittle’s factorization of matrix on the basis of traditional iterative algorit hm. In t he realization of algorit hm , t he data is skillf ully dealt , so t he interim data and t he result have the form of fraction. These merits improve t he result’s exactness. And above t hat it conforms to readers’reading habit compared to double or float forms. After running it , t he result proves t hat the algo2 rit hm is reasonably designed and t he program is running wit h high proficiency and exact ness. The program is an augmentation of matrix factorization in t he Mat hSoft’s interactive mat hematic language software , which promotes matrix factorization from numerical comp utation to symbolic comp utation. Keywords : matrix ; Doolittle’s factorization ; algorit hm 收稿日期 :2006204227. 将矩阵分解为形式比较简单或具有某种特性的 一些矩阵的乘积 ,在矩阵理论的研究与应用中都显 得十分重要. 文献[1 ]对通用的基本线性代数子程序 库(basic linear algebra subprograms ,BLAS) ,从 20 世纪 70 年代的 Level21 的 BLAS 开始到 Level23 BLAS ,LAPACK(linear algebra package) 的发展过 程进行了详细介绍 ,并对矩阵的 Cholesky 分解进行 研究和改进 ,给出递归算法及 Fortran90 程序. 文献 [2 ]对 m 行 n 列 ( m > n) 矩阵的 L U 分解进行了研 究 ;文献[3 ]给出了 Crout 方法在解线性方程组中的 应用. 文献[ 4 ]给出了 Crout 递归分解算法及实现. 文中对任意矩阵用分块的思想进行 Doolittle 分解 的研究 ,给出更简单的递归分解算法及程序实现. 1 矩阵 Doolittle 分解的定义 定义 设 A ∈C n×n . 如果 A 可分解成 A = LR,其 中 L 是对角元素为 1 的下三角矩阵 (称为单位下三 角矩阵) , R是上三角矩阵 ,则称之为 A 的 Doolittle 分解[5 ] . 根据定义获得的计算公式 r1 j = a1 j ( j = 1 ,2 , …, n) , li1 = ai1 / r11 ( i = 2 ,3 , …, n) , rkj = akj - ∑ k- 1 t = 1 lkt 3 rtj ( j = k , k + 1 , …, n; k = 2
第1期 智东杰,等:矩阵的Doolittle递归分解算法及符号程序设计 ·91· 3,…刊, 刑), lk=ak/a做(i=k十1,…,m;k=1,2,,min i=k+1, (m,), n;k=2,3,…W. ay=ay-lauy (i=k+1,.m;j=k+1,...n; 由定义知,Doolittle分解是在n行n列的矩阵 k=1,2,,min(m,). 上进行的,由公式知道当i,j,k较大时,k,%的计 1)由上述公式得到A的Doolittle分解算法 算量是比较大的,当矩阵的行数与列数不相同时是 for(k=0:k<m B k<n:k++) 无法进行Doolittle分解的,为克服这些缺陷,从分 (for(j=k;j<n;j++)a; 块的角度出发研究Doolittle分解.使Doolittle分解 lkk+1; 能够适合可分解的任何矩阵 for(i=k+1;i<m;i++)lak +ak/axk 2 Doolittle分解递归算法的推导 for(i=k+1;i<m;i++) for(j=k+1;j<njj++) 设A是m行n列的矩阵,L是m行p列矩阵 aij-lku U是p行n列矩阵,可以进行Doolittle分解,则 矩阵L和U的其他元素为0 Am为=LmxpUpxr,p=min(m, A1ldxd A12dx(n.d 2)对上述算法优化,得到紧凑的Doolittle分解 A1(m通aA22m0Wmd 算法 Lndxd O12dxin.d for(k=0;k<m k<n;k++) L211m:X划L22(m-d山×刘m Uilaxd U12dxind for(i=k+1;i<m;i++)la +aik/akk O21fam.动xaU22am为中 for(i=k+l;i<m;i++) A1=L11U11, 1) for(j=k+1;j<njj++) A21=L21U11, (2) ajaij-likuk; A2=L11U12, (3) } A22=L21U12+L22U22 (4 算法中i<j时,画是矩阵U的元素,否则为L A11 由式(1)、(2)→ (U,即对 进 的元素,且la=1. A 行Doolittle分解 4 Doolittle分解递归算法的程序实现 1)可解出L1,L21,Un 由算法知,数值计算程序相当简单,这里从略。 2)由式(3U12=LA12 在程序中用gcd()函数求公约数,从而避免了 3)由式(4)令A2=A2-L21U12, 在2个数相除时产生的积累误差,使计算结果的精 A2=L22U22. 确度得到提高」 即对A2进行Doolittle分解 Doolittle()函数完成对矩阵的Doolittle分解, 3算法求精 在Doolittle()函数又调用了Doolittle()函数,使得 算法的结构更加严谨而容易理解 由上述推导知,若矩阵可进行Doolittle分解, main()函数为顺序结构,内容依次为输入要分 使用一次分解就可求出L的前d行与U的前d行, 解的矩阵,调用Doolittle分解矩阵,输出分解结果 接下来对(m-d行(n-d列矩阵A2进行Doolit- (L,U矩阵).关于矩阵是否能进行LU分解6刀的 tle分解即可.在求U2的过程中要计算L1的逆矩 判断这里从略.若想添加上该内容,所需行列式的计 阵,为简化计算取d=1,可得到比较简单的计算公 算函数可参看文献[8] 式 define N 7 ls=1(k=1,2,min(m,W), struct fraction (int n,d;); =a(j=k,k+1..n;k=1,2...min(m, /*用结构体存储数据的分子和分母*/ 1994-2008 China Academic Journal Electronic Publishing House.All rights reserved.http://www.cnki.net
3 , …, n) , lik = 1/ rkk 3 aik - ∑ k- 1 t = 1 lit 3 rtk ( i = k + 1 , …, n; k = 2 ,3 , …, n) . 由定义知 ,Doolittle 分解是在 n 行 n 列的矩阵 上进行的 ,由公式知道当 i , j , k 较大时 , lik , rkj 的计 算量是比较大的 ,当矩阵的行数与列数不相同时是 无法进行 Doolittle 分解的 ,为克服这些缺陷 ,从分 块的角度出发研究 Doolittle 分解. 使 Doolittle 分解 能够适合可分解的任何矩阵. 2 Doolittle 分解递归算法的推导 设 A 是 m 行 n 列的矩阵 , L 是 m 行 p 列矩阵 , U 是 p 行 n 列矩阵 ,可以进行 Doolittle 分解 ,则 Am×n = L m×pU p×n , p = min ( m , n) . A11 d×d A12 d×( n- d) A21 ( m- d) ×d A22 ( m- d) ×( n- d) = L11 d×d O12 d×( n- d) L21 ( m- d) ×d L22 ( m- d) ×( n- d) . U11 d×d U12 d×( n- d) O21 ( m- d) ×d U22 ( m- d) ×( n- d) . A11 = L11U11 , (1) A21 = L21U11 , (2) A12 = L11U12 , (3) A22 = L21U12 + L22U22 . (4) 由式 (1) 、(2) ] A11 A21 = L11 L21 U11 , 即对 A11 A21 进 行 Doolittle 分解 1) 可解出 L11 ,L21 ,U11 . 2) 由式(3) ] U12 = L 1 11 A12 . 3) 由式(4) 令 A22 = A22 - L21U12 , A22 = L22U22 . 即对 A22进行 Doolittle 分解 3 算法求精 由上述推导知 ,若矩阵可进行 Doolittle 分解 , 使用一次分解就可求出 L 的前 d 行与 U 的前 d 行 , 接下来对( m - d) 行 ( n - d) 列矩阵 A′22进行 Doolit2 tle 分解即可. 在求 U12 的过程中要计算 L11 的逆矩 阵 ,为简化计算取 d = 1 ,可得到比较简单的计算公 式 : lkk = 1 ( k = 1 ,2 , …,min ( m , n) ) , ukj = akj ( j = k , k + 1 , …, n; k = 1 ,2 , …, min ( m , n) ) , lik = aik / akk ( i = k + 1 , …, m; k = 1 , 2 , …, min ( m , n) ) , aij = aij - lik ukj ( i = k + 1 , …, m; j = k + 1 , …, n; k = 1 ,2 , …,min ( m , n) ) . 1) 由上述公式得到 A 的 Doolittle 分解算法 for (k = 0 ;k < m 且 k < n ;k + + ) {for (j = k ;j < n ;j + + ) rkj ←akj ; lkk ←1 ; for (i = k + 1 ;i < m ;i + + ) lik ←aik / akk ; for (i = k + 1 ;i < m ;i + + ) for (j = k + 1 ;j < n ;j + + ) aij ←aij - lik ukj ; 矩阵 L 和 U 的其他元素为 0. } 2) 对上述算法优化 ,得到紧凑的 Doolittle 分解 算法 for (k = 0 ;k < m 且 k < n ;k + + ) { for (i = k + 1 ;i < m ;i + + ) lik ←aik / akk ; for (i = k + 1 ;i < m ;i + + ) for (j = k + 1 ;j < n ;j + + ) aij ←aij - lik ukj ; } 算法中 i < j 时 , aij 是矩阵 U 的元素 ,否则为 L 的元素 ,且 lii = 1. 4 Doolittle 分解递归算法的程序实现 由算法知 ,数值计算程序相当简单 ,这里从略. 在程序中用 gcd () 函数求公约数 ,从而避免了 在 2 个数相除时产生的积累误差 ,使计算结果的精 确度得到提高. Doolittle () 函数完成对矩阵的 Doolittle 分解 , 在 Doolittle () 函数又调用了 Doolittle () 函数 ,使得 算法的结构更加严谨而容易理解. main ( ) 函数为顺序结构 ,内容依次为输入要分 解的矩阵 ,调用 Doolittle 分解矩阵 ,输出分解结果 (L ,U 矩阵) . 关于矩阵是否能进行 L U 分解[6 - 7 ] 的 判断这里从略. 若想添加上该内容 ,所需行列式的计 算函数可参看文献[ 8 ]. # define N 7 struct fraction {int n ,d ;} ; / 3 用结构体存储数据的分子和分母 3 / 第 1 期 智东杰 ,等 :矩阵的 Doolittle 递归分解算法及符号程序设计 · 19 ·
·92· 智能系统学报 第2卷 struct fraction a[N ][N ] scanf("%d",&a[i][j].n); int gcd(int u,int v) a[i[j].d=1;} printf(A:\n);/*输出*/ int r ,t =v;if(u0)return u;else return -u; for(j=0;j=m)(k>=n))return; /*调用Doolittle函数*/ /*计算*/ printf("Ln);/*输出L矩阵*/ else for(i=0:i<m:i++) (for(i=k+1;i<m;i++) {forG=0;G<=i)&&G<n)j++) *aik=aik/akk * if(j==i)printf("1); (a[i][k].n=a[i][k].n *a[k][k].d; else if(a[i][j].d==1) a[i][k].d=a[i][k].d*a[k][k].n; printf("%d\t",a[i][j].n); g=gcd(a[i][k].n,a[i][k].d); else a[i][k].n=a[i][k].n/g; printf("%d/%d\t",a[i][j].n, a[i][k].d=a[i][k].d/g; a[i]j].d); printf(\n); for(i=k+1;i<m;i++) /*A22=A22-L21U12*/ printf("U:ln);/*输出U矩阵*/ for(j=k+1;j<n;j++) for(i=0:i<m:i++) (a[i][j].n=a[i][j].n *a[i][k].d* { a[k][j].d-a[i][j].d *a[i][k].n *a[k][j].n; for(j=0;j<i;j++)printf(\t") a[i][j].d=a[i][j].d *a[i][k].d* for(j=i;j<n;j++) a[k][d].d; if(a[i][j].d==1) g=gcd(a[i][j].n,a[i][j].d); printf("%d\t",a[i][j].n); a[i][j].n=a[i][j].n/g; else printf("%d/%d\t",a[i]].n, ai][j].d); a[i][j].d=a[i][j].d/g; )*aij =aij-lik ukj * printf(\n); } Doolittle (k+1,m,n); /*对Doolittle函数的递归调用*/ printf("A =LU\n") }/*计算*/ *main * /*Doolittle * 5程序运行示例 main ( 42] [1 0〉 (int ijj ,k,m ,n; 31 3/4 1 4 printf("m=);scanf("%d",&m) 6 -8 -1/2 printf("n=");scanf("%d",&n); 8 L L2 6] for(i=0;i<m;i++)/*输入*/ for(j=0;j<n;j++) (printf("a %d %d="i+1j+1) 1994-2008 China Academic Journal Electronic Publishing House.All rights reserved.http://www.cnki.net
struct fraction a[ N ][ N ] ; int gcd (int u ,int v) { int r ,t = v ; if (u 0) return u ; else ret urn - u ; }/ 3 gcd 3 / void Doolittle (int k ,int m ,int n) / 3 Doolittle 分解的递归实现 3 / {int i ,j ,g ; if ( (k > = m) | | (k > = n) ) ret urn ; / 3 计算 3 / else {for (i = k + 1 ;i < m ;i + + ) / 3 aik = aik/ akk 3 / {a[i][ k ]. n = a[i ][ k ]. n 3 a[ k ][ k ]. d ; a[i][ k ]. d = a[i][ k ]. d 3 a[ k ][ k ]. n ; g = gcd (a[i ][ k ]. n , a[i ][ k ]. d) ; a[i][ k ]. n = a[i ][ k ]. n/ g ; a[i][ k ]. d = a[i][ k ]. d/ g ; } for (i = k + 1 ;i < m ;i + + ) / 3 A22’ = A22 - L21 U12 3 / for (j = k + 1 ;j < n ;j + + ) {a[i][j ]. n = a[i ][j ]. n 3 a[i ][ k ]. d 3 a[k][j]. d - a[i][j]. d 3 a[i][k]. n 3 a[k][j]. n ; a[i ][j ]. d = a[i ][j ]. d 3 a[i ][ k ]. d 3 a[ k ][j]. d ; g = gcd (a[i ][j ]. n ,a[i ][j ]. d) ; a[i ][j ]. n = a[i ][j ]. n/ g ; a[i ][j ]. d = a[i ][j ]. d/ g ; }/ 3 aij = aij - lik ukj 3 / Doolittle (k + 1 ,m ,n) ; / 3 对 Doolittle 函数的递归调用 3 / }/ 3 计算 3 / }/ 3 Doolittle 3 / main ( ) {int i ,j ,k ,m ,n ; printf (″m =″) ; scanf (″%d″, &m) ; printf (″n =″) ; scanf (″%d″, &n) ; for (i = 0 ;i < m ;i + + ) / 3 输入 3 / for (j = 0 ;j < n ;j + + ) {printf (″a %d %d =″,i + 1 ,j + 1) ; scanf (″%d″, &a[i ][j ]. n) ; a[i][j]. d = 1 ;} printf (A :″\ n″) ;/ 3 输出 3 / for (i = 0 ;i < m ;i + + ) { for (j = 0 ;j < n ;j + + ) printf (″%d\ t″,a[i][j]. n) ; printf (″\ n″) ; } Doolittle (0 ,m ,n) ; / 3 调用 Doolittle 函数 3 / printf (″L :\ n″) ;/ 3 输出 L 矩阵 3 / for (i = 0 ;i < m ;i + + ) {for (j = 0 ; (j < = i) & &(j < n) ;j + + ) if (j = = i) printf (″1″) ; else if (a[i][j ]. d = = 1) printf (″%d\ t″,a[i ][j]. n) ; else printf (″%d/ %d\ t″,a[i ][j ]. n , a[i][j]. d) ; printf (″\ n″) ; } printf (″U :\ n″) ;/ 3 输出 U 矩阵 3 / for (i = 0 ;i < m ;i + + ) { for (j = 0 ;j < i ;j + + ) printf (″\ t″) ; for (j = i ;j < n ;j + + ) if (a[i][j ]. d = = 1) printf (″%d\ t″,a[i ][j ]. n) ; else printf (″%d/ %d\ t″,a[i][j]. n , a[i][j]. d) ; printf (″\ n″) ; } printf (″A = L U\ n″) ; }/ 3 main 3 / 5 程序运行示例 1) 4 2 3 1 4 6 8 1 = 1 0 3/ 4 1 1 - 8 2 6 · 4 2 0 - 1/ 2 . · 29 · 智 能 系 统 学 报 第 2 卷
第1期 智东杰,等:矩阵的Doolittle递归分解算法及符号程序设计 ·93· [21 11 [4]智慧来,张礼达.矩阵的Cout递归分解算法及程序设 45 计U].西华大学学报(自然科学版),2006,25(3):48- 2) 45/2 =2 8 4 50. L 6J 3J ZHI Huilai,ZHANG Lida.Recursive algorithm and 6 2 programming for matrix Crout's factorization [J ]Journal 1 2 of Xihua University (natural science),2006,25(3):48- 1 0 3) 50. 1 1 4 -1 [5]徐仲,张凯院,陆全,等.矩阵论简明教程[M].北 L-10 -13J 京:科学出版社,2002 1 2 1 -1 [6]RICHARD L,BURDEN J,FAIRES D.Numerical anal- 13 1 10W3 2J3 V3 ysis 7th Edition[M].Thomson Learning,2001. 16 1/5 37/10 -9/1d [7JAIN S K GUNAWARDENA A D.Linear algebra:an L-/6V10-9/37 191/74 interactive approach M].Beijing:China Machine Press,2003. 6 结束语 [8]智东杰.按定义计算行列式及余子式的C语言递归程序 文中是将矩阵分解由数值运算推广到符号运 设计[U].中国教育教学研究杂志,2004,3(12):79.80. 算,希望将来能推广到复数矩阵的分解 ZHI Dongjie.C language recursive programming of com- puting determinant and complement minor according to 参考文献: their definitions [J].The Research Magazine of Educa- tion and Teach in China,2004,3(12):79-80. [I]陈建平JERZY W.Cholesky分解递归算法与改进[U]. [9]郑桂水.Mathcad2000实用教程[M].北京:国防工业出 计算机研究与发展,2001,38(8):923.926. 版社,2000 CHEN Jianping,JERZY W.Recursive algorithm and 作者简介: improvement for cholesky factorization [J].Journal of 智东杰,男,1952年生,中国科技研 Computer Research and Development,2001,38(8):923 究交流中心研究员,主要研究方向为人 .926. 工智能、符号计算 [2]陈建平.矩阵三角分解的递归算法U].南通工学院学报 (自然科学版)2003,2(4):1·3. Emai:zhidongjie @126.com. CHEN Jianping.Recursive algorithm for matrix triangu lar factorization [J ]Journal of Nantong Institute of Technology (natural science),2003,2(4):1-3. [3]LIU Mode.The structured programming of Crout 智慧来,男,1981年生,硕士研究 method solving linear equation [J ]Journal of Sanming 生,主要研究方向为计算智能在水电站 College,2003,20(2):62-66. 经济运行中的应用。 1994-2008 China Academic Journal Electronic Publishing House.All rights reserved.http://www.cnki.net
2) 2 45 8 6 = 2 1 45/ 2 4 3 . 3) 6 2 1 - 1 2 4 1 0 1 1 4 - 1 - 1 0 - 1 3 = 1 1/ 3 1 1/ 6 1/ 5 1 - 1/ 6 1/ 10 - 9/ 37 1 · 6 2 1 - 1 10/ 3 2/ 3 1/ 3 37/ 10 - 9/ 10 191/ 74 . 6 结束语 文中是将矩阵分解由数值运算[9 ]推广到符号运 算 ,希望将来能推广到复数矩阵的分解. 参考文献 : [1 ]陈建平 ,J ERZY W. Cholesky 分解递归算法与改进[J ]. 计算机研究与发展 ,2001 ,38 (8) :923 - 926. CHEN Jianping , J ERZY W. Recursive algorithm and improvement for cholesky factorization [J ]. Journal of Computer Research and Development , 2001 ,38 (8) : 923 - 926. [2 ]陈建平. 矩阵三角分解的递归算法[J ]. 南通工学院学报 (自然科学版) ,2003 ,2 (4) :1 - 3. CHEN Jianping. Recursive algorithm for matrix triangu2 lar factorization [J ]. Journal of Nantong Institute of Technology (natural science) ,2003 , 2 (4) :1 - 3. [3 ] L IU Mode. The structured programming of Crout∞s method solving linear equation [J ]. Journal of Sanming College ,2003 ,20 (2) :62 - 66. [4 ]智慧来 ,张礼达. 矩阵的 Crout 递归分解算法及程序设 计[J ]. 西华大学学报 (自然科学版) ,2006 ,25 (3) : 48 - 50. ZHI Huilai , ZHAN G Lida. Recursive algorithm and programming for matrix Crout′s factorization [J ].Journal of Xihua University (natural science) ,2006 ,25 (3) :48 - 50. [5 ]徐 仲 ,张凯院 ,陆 全 ,等. 矩阵论简明教程[ M ]. 北 京 :科学出版社 ,2002. [ 6 ]RICHARD L , BURDEN J , FAIRES D. Numerical anal2 ysis :7th Edition[ M]. Thomson Learning ,2001. [7 ]J AIN S K , GUNAWARDENA A D. Linear algebra : an interactive approach [ M ]. Beijing : China Machine Press ,2003. [8 ]智东杰. 按定义计算行列式及余子式的 C 语言递归程序 设计[J ]. 中国教育教学研究杂志 ,2004 ,3 (12) : 79 - 80. ZHI Dongjie. C language recursive programming of com2 puting determinant and complement minor according to their definitions [J ]. The Research Magazine of Educa2 tion and Teach in China ,2004 ,3 (12) :79 - 80. [9 ]郑桂水. Mathcad 2000 实用教程[ M]. 北京 :国防工业出 版社 ,2000. 作者简介 : 智东杰 ,男 ,1952 年生 ,中国科技研 Emai : zhidongjie @126. com 究交流中心研究员 ,主要研究方向为人 工智能、符号计算. . 智慧来 ,男 , 1981 年生 ,硕士研究 生 ,主要研究方向为计算智能在水电站 经济运行中的应用. 第 1 期 智东杰 ,等 :矩阵的 Doolittle 递归分解算法及符号程序设计 · 39 ·