计算机编程c语言求解线性代数方程组
安 徽 三 联 学 院本 科 专 业 学 年 论 文题 目:线性方程组求解方法比较姓 名 万里龙 专 业 计算机科学技术系 班 级 08 级本科(2)班 指导教师 刘 晓 娜 完成日期:2010 年 11 月 21 日题 目:线性方程组求解方法比较摘 要随社会的快速发展,随着科学和社会的发展,科学计算已经成为科学计算的重要方法之一,线性代数已经成为应用数学里非常重要的一门学科了,线性代数的研究问题已经直接关系到日常的生产问题,对于提高效率有很大作用。本文主要介绍了线性代数中的解方程组问题与计算机相结合的方法及实现的结果,由于计算机技术的飞速发展和普及应用,许多问题经过离散化处理后,需要借助数值计算,本文详细介绍了三种方法用计算机解决线性方程组的问题,在第二章中本文详细的介绍了线性代数方程组的三种解法的理论知识与证明过程。为了更加清晰的展现三种方法的不同点以及其各自的优越性,在第三章有以一个实例来证明三种算法所得的结果。最后,本文又以计算不出各种算法的时间复杂度来进一步说明三种算法的优缺点。关键字: 迭代 高斯消去 LU 分解 时间复杂度 线性方程组 雅克比 高斯-赛德尔目 录第一章 绪论……………………………………………………………1第二章 求解线性方程组常见算法的比较……………………………22.1 迭代法…………………………………………………………22.2 高斯消去法……………………………………………………42.3 LU 分解法.……………………………………………………5第三章 线性方程组的求根问题………………………………………73.1 迭代法………………………………………………………73.2 高斯消去法…………………………………………………93.3 LU 分解法……………………………………………………113.4 算法的比较……………………………………………………14 参考文献……………………………………………………………15计算机专业学年论文 线性方程组求解方法比较1第一章 绪 论线性代数问题不但是其他数学课程的基础,也是解决实际问题的工具。另外,由于计算机技术的飞速发展和普及应用,许多问题经过离散化处理后,需要借助数值计算,而数值计算离不开线性代数的基础知识。线性代数中许多数值计算与计算机结合,才能得到更很好,更快,更精准的结果。为了将计算机与线性代数方程组更好的结合在一起,本文做了比较全面的的解说。本文将线性方程组的求解过程用计算机实现,本文的编写由以下几个特点:对于难点问题从具体模型引入(即解决给定的方程组) ,淡化抽象的概念○ 1与定理,通俗易通;注重开放的思维,对于具体以模型本文给出了多种解题的思想及方法;○ 2把问题数学方法与数学思想单独提出来,并进行简洁易懂的理论证明,○ 3既突出了线性代数的理论和基本思想,又可以帮助读者对该数学方法的理解。基于了解数学的思想及方法后,本文基于 c 语言的基础上,给出了详细○ 4的算法以及流程图,以配合读者理解计算机实现该算法的全过程。最后,本文简要分析了这些算法的计算效果,稳定性 ,收敛效果,计算○ 5精度,时间复杂度,优劣性。、 计算机专业学年论文 线性方程组求解方法比较2第二章 求解线性方程组的三种常见算法2.1 迭代法迭代法的基本思想是将线性方程组转化为便于迭代的等价方程组,对任选一组初始值 (i=1,2…n) ,按某种计算规则,如:对于给定的线性方程组 Ax=b ,我们可以用不同的方法把它变为与之等价的,形为: x=Bx+f 的方程组。将上式改写成迭代式:选定初始值 ,不断地对所得到的值进行修正,最终获得满足精度要求的方程组的近似解。对线性方程组:Ax=b,其中,A=( ) 为奇异矩阵,将 A 分裂为: ijanR*A=M-N,其中,M 为非奇异矩阵,且要求线性代数方程组 Mx=d 容易求解,其中M 是 A 的分裂矩阵,于是就有 Ax=b 转化为 Mx=Nx+b,即Ax=b x= Nx+ b由此可构造一个迭代法(初始向量) (1))0(x=B +f (k=0, 1,2, 3, 4,5………) (2))1(k)(k其中,B= N= (M-A)=I- A, f= b,MM1通过选取不同的 M 矩阵,就可得 Ax=b 解的到不同迭代方法设 0(i=1,2,3…n) 将 A 分为三部分 :iaA= — —na.321 0011,2,1, 432nnnaafxBk1k)()()(0 x计算机专业学年论文 线性方程组求解方法比较3= 0.0.,1,21,2312 nnnaa雅克比迭代法(J—迭代法):选取 A 的分列矩阵 M 为对角阵,即M=D(对角阵) ,因此 A=D-N,由此得:(初始向量) )0(x ○ 1=B +f (k=0, 1,2, 3, 4,5………) )1(k)(k ○ 2令 =( ) ,由迭代公式得:)(kx)()(3)(2)(1.nxxTD =(L+D) +b = (L+U) + b)(k)(k)1(kD)(kx1即有:= — — + (i=1,2,3…n; ia)1(kx1ijia)(kxnij1ia)(kik=0,1,2……) 于是,得到解 Ax=b 得:雅克比的计算公式为: )(1,.1(1)()( )0(02)(0( nijkjijkjiki TxaxbaxX(k=0,1,2,……:i=1,2,3,……n)高斯—塞德尔迭代法(GS—迭代法):选 M 为 A 的下三角部分,即 M=D-L(下三角矩阵) ,因此 A=M-N,由此得:(初始向量) )0(x ○ 1=B +f (k=0, 1,2, 3, 4,5………) )1(k)(k ○ 2令 =( ) ,由迭代公式得:)(kx)()(3)(2)(1.nxxT(D-L) =U +b)1(k)(k即D = L +U +b = U + b)1(kx)1(k)(kx)1(k1)LD)(kx1)L得计算机专业学年论文 线性方程组求解方法比较4= — — (i=1,2,3…n; ia)1(kxib1)(ijkjxanij1ia)(kxk=0,1,2……) 于是,得到解 Ax=b 得:高斯-赛德尔的计算公式: )(1,.1(1)()( )0(02)(0( nijkjijkjiki TxaxbaxX(k=0,1,2,……:i=1,2,3,……n)2.2 高斯消去法高斯顺序消去法的基本思想对线性代数方程组所对应的增广矩阵(A|b)进行一系列“把某一行的非零常数倍加到另一行上”的初等变换,使得(A|b)中A 的对角线以下的元素全变为 0,从而使原方程组等价的转化为容易求解的上三角形线性代数方程组,再通过回代得到上三角形线性代数方程组的解,即可求得原方程组的解,对线性方程组:Ax=b ; 令增广矩阵为:……):(:()1()