当前位置:文档之家› 线性方程组的矩阵求解算法

线性方程组的矩阵求解算法

线性方程组的矩阵求解算法摘要 线性方程组的矩阵求解算法,只需在约当消元法的基础上,再对方程组的增广矩阵的行最简形进行行(列)删除和增加行,交换行等运算即可得到方程组的解,并且这种方法既可求解有唯一解的方程组.因而算法简单,易于实现.关键词 线性方程组;解向量;解法;约当消元法1 矩阵求解算法设有线性方程组m n A X b ⨯=,其增广矩阵())(1,m n A A b ⨯+=,算法的步骤如下: 第一步:利用约当消元法,把增广矩阵A 化为行最简形,设行最简形为()1m n B ⨯+.若()t i (),r A r =则方程组无解;否则设(),r A R =并执行以下步骤;第二步:删除B 中的所有零行和每一行第一个非零元素(这个非零元素一定是1)所在的列,得到矩阵()1,r n r D ⨯-+并记录每行的第一个非零元所在的列标,放在一维数组()1,,t r L 中,如第i 行的第一个非零元在第j 列,则()t i j =;第三步:构造矩阵()1m n r D H F ⨯-+⎛⎫= ⎪⎝⎭,其中 ()()1100001000010n r n r F -⨯-+-⎛⎫⎪-⎪= ⎪⎪-⎝⎭L L L L L L L L第四步:对矩阵H 中的行作交换运算:把H 中的第i 行(,1,1,i r r =-L 即从第r 行开始直到第一行)依次与其下一行交换,使之成为第()t i 行,交换运算结果后的矩阵记为G ,则G 中的前n r -个n 维列向量即为方程组的一个基础解系,最后一列向量即为方程组的一个特解; 第五步:写出方程组的通解.2 算法证明先证一个特殊情形,增广矩阵A 的行最简形矩阵B 的左上角为一r 阶的单位矩阵,即第i 行的第一个非零元的列标为i ,即()()1t i i i r =≤≤,所以设B 为1,1112,122,1100010001000r n r n r r rn r c c d c c d B c c d +++⎛⎫ ⎪ ⎪ ⎪=⎪ ⎪ ⎪ ⎪ ⎪⎝⎭L L L L LL L L L L L L L LL L L L L L L L LL 则1,1112,122,1r n r n r r rnr c c d c c d D c c d +++⎛⎫ ⎪ ⎪= ⎪ ⎪ ⎪⎝⎭L L L L L L L由上述算法可得H 为1,11,1112,12,222,1,2100001000010r r n r r n r r r r rn r c c c d c c c d c c c d H ++++++⎛⎫⎪ ⎪ ⎪⎪ ⎪=⎪-⎪- ⎪ ⎪ ⎪ ⎪-⎝⎭LL L L L L L L L L L L L L L L 由于()()1t i i i r =≤≤,故从H 得到G 时,H 中的行不需交换位置,即.G H = 那么矩阵B 的增广矩阵的线性方程组为111,111,222,112,1,.r r n n r r n nr r r r rn n x d c x c x x d c x c x x d c c x +++++=--⎧⎪=--⎪⎨⎪⎪=---⎩L L L L L L L L L L L令1,12,11,1100r r c c cr r α++⎛⎫ ⎪ ⎪ ⎪ ⎪+ ⎪= ⎪- ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭M M , 1,22,22,2011r r c c cr r α++⎛⎫ ⎪ ⎪ ⎪ ⎪+ ⎪= ⎪ ⎪- ⎪ ⎪ ⎪ ⎪-⎝⎭M M , ,L 12,001n n rn n r c c c α-⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪= ⎪ ⎪ ⎪ ⎪ ⎪ ⎪-⎝⎭M M 12000r d d d η⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪= ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭M M可以验证1,2,n r ααα-L 是方程组(1)所对应的齐次线性方程组的解,η是方程组(1)的特解,又12,,n r ααα-L 的后n r -个分量构成的向量组100-⎛⎫ ⎪ ⎪ ⎪ ⎪⎝⎭M ,001,,.01⎛⎫⎛⎫ ⎪ ⎪- ⎪ ⎪ ⎪ ⎪ ⎪ ⎪-⎝⎭⎝⎭LM M 线性无关,把它扩充成维向量组后也线性无关,所以12,,,n r ααα-L 线性无关,又因为()r A r =,所以方程组(1)的基础解系中有()n r A n r -=-个向量,因此12,,,n r ααα-L 即为方程组(1)的基础解系,特殊情形得证.对于行最简形矩阵B 为一般情形时,可以通过若干次列交换把它变形为上述特殊情形,但是,列交换将会导致最后结果中对应未知数的次序混乱,即在进行第i 列与第j 列的交换后,最后结果中i x 与j x 次序也就被交换了,因此,在这过程中,必须记住所进行的一切列交换,以便在最后结果中恢复,但若使用本矩阵求解算法,则可避免上述麻烦,为了叙述方便,还是只证一种特殊情形.设 121,2112,222,210000100010*******0r n r n r r rn r c c c d c c d B c c d +++⎛⎫ ⎪ ⎪ ⎪⎪= ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭L L L L L L L O L L L L L L L L L L L L L L L L L L L L LLL即()()()11,12,t t i i i r ==+≤≤则121,2112,222,200r n r n r r rnr c c c d c c d D c c d +++⎛⎫ ⎪⎪= ⎪ ⎪ ⎪⎝⎭L L L LL L L L,121,2112,222,200100001000010r n r n r r rn r c c c d c c d c c d H +++⎛⎫⎪ ⎪ ⎪⎪⎪= ⎪-⎪- ⎪ ⎪ ⎪ ⎪-⎝⎭LL L L L L L L L L L L L L L L , 121,2112,222,210000001000010r n r n r r rn r c c c d c c d G c c d +++⎛⎫ ⎪- ⎪ ⎪ ⎪⎪= ⎪ ⎪- ⎪ ⎪ ⎪ ⎪-⎝⎭LL L L LL L L L L L LL L L L 现在证明G 的前n r -个列向量是B 所对应的方程的基础解系,G 的最后一列是该方程组的特解,把矩阵B 的第2列依次与第3列,第4列,第列交换,得到矩阵'B121,2112,222',21000100001r n r n r r rnr c c c d c c d B c c d +++⎛⎫ ⎪⎪= ⎪ ⎪ ⎪⎝⎭L L L L L L L L L LL L L LL设矩阵所对应的方程组的解向量为12(,,,)T n x x x K ,'B 所对应的方程组的解向量为12(,,,)T n y y y K ,则有112132122,,,,,,,r r r r r n n x y x y x y x y x y x y ++++======L L即若1,2(,,)T n y y y L 是'B 所对应的方程组的解向量,则112,,2(,,,,,)T r r r n y y y y y y ++L L 是矩阵C 所对应的方程组的解向量,而由上述所证的特殊情形,'B 所对应的方程组的基础解系和一个特解分别为12'100,100c α⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪= ⎪- ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭M M 1,22,2,2'2010r r r r c c c α+++⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪= ⎪ ⎪- ⎪ ⎪ ⎪ ⎪⎝⎭M M , ,L 12'001n n rn n r c c c α-⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪= ⎪ ⎪ ⎪ ⎪ ⎪ ⎪-⎝⎭M M , 2000r d d d η⎛⎫⎪ ⎪ ⎪ ⎪ ⎪= ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭M M 由此可得矩阵所对应的方程组的基础解系和特解为110000c α⎛⎫ ⎪- ⎪ ⎪ ⎪ ⎪= ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭M M , 1,22,22,2010r r r r c c c α+++⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪= ⎪ ⎪- ⎪ ⎪ ⎪ ⎪⎝⎭M M , L , 12001n n n r rn c c c α-⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪= ⎪ ⎪ ⎪ ⎪ ⎪ ⎪-⎝⎭M M , 12000r d d d η⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪= ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭M M 而12,,,n r ααα-L ,η即为G 的列向量组,这一情形得证若B 为起它任意情形,只要重复上上述证明过程,即可得到证明.3 举例例 设有线性方程组12456712345671234567123456712345672322232612422436292551062411242x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x x -+-+-=⎧⎪--+-++=⎪⎪-+-++-=⎨⎪--+-+-=⎪--+-+-=⎪⎩求其通解.解方程组的增广矩阵A 为121312212321611241121243629255106121411242A ---⎛⎫ ⎪--- ⎪ ⎪=--- ⎪---- ⎪ ⎪----⎝⎭A 的行最简形矩阵B 为12013122001381201391000104480000000000000B ---⎛⎫⎪-- ⎪ ⎪=--⎪ ⎪ ⎪ ⎪⎝⎭划掉B 中的最后两个零行和每行的第一个非零元所在的第一列,第三列,第四列,得矩阵D ,并且()()()11,23,34t t t ===2312208120139100448D ⎛⎫---⎪ ⎪=-⎪ ⎪--⎝⎭构造矩阵H231220812013910044810000010000010000010H ---⎛⎫⎪- ⎪ ⎪--⎪= ⎪-⎪- ⎪ ⎪- ⎪ ⎪-⎝⎭由于()34t =,所以应把中第3行依次与其后的行交换,使之成为第4行,然后因为()23t =,所以把H 中第2行依次与其后的行交换,使之成为第3行最后因()11t =,故第1行不需与任何行交换,这样变得到矩阵G ,23122100000812013910044810000010000010G ---⎛⎫⎪- ⎪ ⎪-⎪=-- ⎪⎪- ⎪ ⎪- ⎪ ⎪-⎝⎭所以方程组的通解为1234231220001028100913100484000100010000001k k k k ξ--⎛⎫⎛⎫⎛⎫-⎛⎫⎛⎫ ⎪ ⎪ ⎪ ⎪ ⎪- ⎪ ⎪ ⎪ ⎪⎪ ⎪ ⎪ ⎪- ⎪⎪ ⎪ ⎪ ⎪ ⎪ ⎪=+++-+- ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪- ⎪ ⎪ ⎪ ⎪⎪ ⎪ ⎪ ⎪ ⎪⎪- ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪ ⎪⎝⎭⎝⎭-⎝⎭⎝⎭⎝⎭ 4.算法分析事实上,本算法是约当消元法的推广,因为若()()r A r A n ==时,最简形矩阵B的前n列为n阶单位矩阵,所以由B得D时,D为1n⨯矩阵,且为B的最后一列所构造成的矩阵,由D构造H时,不断增加行,由H得到G时,不需交换行,即G H D==,因而方程组的解向量为G,这也是约当消元法的结果也就是说约当()()==消元法是本r A r A n算法当时的特殊情形,由于本算法的所有加法和乘法都在把增广矩阵化为行最简形矩阵的着一过程中,所以有以下结论:1)算法的计算量与约当消元法的计算量相等;2)算法所需的存贮空间略多于约当消元法所需的存贮空间;3)在求方程组的通解时,其稳定性与精度和约当消元法的完全一致.另外,由于本算法从输入方程组到输出通解(或唯一解),中间的所有运算都是对矩阵进行的,所以算法简单,容易在计算机上实现,当然,由于本算法包含约当消元法,因而它除了有与约当消元法相同的缺点以外,它还有一个缺点:有时需要移动大量的元素,特别是当未知数的个数与方程的个数都很大时,元素的移动量可能更大.总之,本算法在约当消元法的基础上,不需增加乘法和加法运算,即可得到方程组的通解,因而本算法有一定的适用价值.参考文献[1]徐士良计算机常用算法[M] 北京: 清华大学出版社,1995.12[2]同济大学线性代数[M] 北京: 高等教育出版社, 2002.1[3]邓建中等计算方法[M] 西安: 西安交通大学出版社,2001.8[4]刘仲奎高等代数[M] 北京: 高等教育出版社,2003.8[5]浙江大学线性代数[M] 北京: 科学出版社,2001作者简介:王雪娇(1984.10.03) ,女,现就读于陇东学院数学系04级专科(1)班。

相关主题