c语言实现方阵的lu分解

c语言实现方阵的lu分解

ID:9805320

大小:144.28 KB

页数:4页

时间:2018-05-10

c语言实现方阵的lu分解_第1页
c语言实现方阵的lu分解_第2页
c语言实现方阵的lu分解_第3页
c语言实现方阵的lu分解_第4页
资源描述:

《c语言实现方阵的lu分解》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、对n阶方阵A的LU分解实验目的掌握对n阶方阵A的LU分解方法,并用C语言编程实现;观察L、U矩阵的特征,并在此基础上得出求解方程方程组AX=b的方法。实验原理设矩阵的各阶顺序主子式均不为零,即:,则由定理:设n阶方阵A的顺序主子式均不为零,则A的LU分解存在且唯一。可得:A有分解式=LU(1)对比等式左边和右边乘积矩阵LU的第r行主对角元(含主对角元)的对应元素,得(2)再对比等式两边第r列主对角元以下(不含主对角元)的对应元素,得(3)当r=1时,由(2)和(3)式分别解出(4)(5)假设已求出U的第1至r-1行,L的第1至r-

2、1列,由式(2)和式(3)分别得出计算U的第r行、L的第r列元素的计算公式:(6)(7)称由(4)~(7)式所表示的矩阵分解为Doolittle分解,也称为LU分解。程序实现过程以下均为程序的关键部分:1、输入矩阵Afor(i=1;i

3、[1][1];t

4、(r=2;r

5、i][r]=(c[i][r]-y)/U[r][r];%计算L的第r列元素}}实验结果及分析1、运行程序后,输入待分解矩阵A(44)A=,得到如下结果:2、重新运行程序,输入待分解矩阵B(44)B=,得到如下结果:1、从上述两个不同矩阵的分解,可以看出:1)只有矩阵为方阵且其各阶顺序主子式不为0(即为非奇异矩阵),才可以进行LU分解,并且分解式是唯一的;否则,不能进行LU分解。2)分解的L矩阵为单位下三角矩阵,U矩阵为上三角矩阵。2、实验简单心得:1)C语言中矩阵的存储同二维数组,均采用行优先原则;本程序调用了两个函数IsA()和D

6、isA()分别判断A矩阵是否为奇异矩阵和分解A矩阵。2)判断矩阵A是否为奇异矩阵时,若第一个元素为0则其必为奇异矩阵,进行每次消元循环时,必须计算出每一行的行列式,而且必须设一个中间变量n记录每次消元后的主对角元素,最后通过每个主对角元素连乘k判断是否为0。3)进行矩阵LU分解时,必须同时计算U的第r行和L的第r列,在计算具体行或列式则需先计算出U的第r行,才能计算出L的第r列。4)本程序没有考虑部分选主元,若考虑则必须在每次分解前判断主元进行行交换,增加了程序的设计难度。5)程序不能实现矩阵大小的实时改变,若要改变则必须在源程序

7、代码中修改宏定义的N值,是一个缺陷。6)通过程序的设计增强了我编程的意识,采用模块化,若出现错误则只需修改某个函数即可,及时修改一些隐蔽错误,会使程序的修改比较容易。参考文献1.《计算机数值方法》——第二版施吉林刘淑珍陈桂芝高等教育出版社2.《工程数学线性代数》——第三版同济大学数学教研室高等教育出版社3.《计算机高论与C语言》耿国华邢为民董卫军电子工业出版社

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。