欢迎来到天天文库
浏览记录
ID:38156155
大小:298.30 KB
页数:4页
时间:2019-05-29
《LDLT分解法解线性方程组》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、计算方法第三次上机作业沈欢北京大学工学院,北京1008712012年4月14日1问问问题题题描描描述述述编制系数矩阵为对称正定矩阵的线性方程组求解程序(LDLT分解),要求该程序能一次求解多个右端项,并用该程序求解方程组Ax=D.其中:235765676710877A=67(1)468109557910232392676321287D=67(2)433132531124图1:LDLT分解中的L矩阵和D矩阵形式2LDLT算算算法法法对于对称正定矩阵A,可以将A分解为A=LDLT.并且该分解是唯一的。其中L是单位下三角矩阵,D为对角线矩阵,且对角
2、线元素不为零。L与D的形式如图一所示。1LDLT分解的算法(伪代码)如下:d1=a11;(3)forj=2:n(按列计算):fork=1:j-1:kX¡1ukj=akj¡lkmumj(4)m=1ljk=ukj=dk(5)endXj¡1dj=ajj¡ljmumj(6)m=1end分解之后,回代求解。1、解¡!¡!Ly=b;(7)¡!得到y.2、解¡!¡!Dz=y;(8)¡!得到z.3、解T¡!¡!Lx=z;(9)¡!得到方程的解x3程程程序序序实实实现现现附件程序“LDLT-method"用上述LDLT方法实现了解对称正定矩阵的线性方程组的功能
3、。程序分为主程序main和子函数”voidLDLT(intn,intm,double**A,double**D)“两部分。主函数实现以下功能:1、用友好的语言提示用户输入矩阵A(n*n)矩阵D(n*m)。输入格式如图二所示。2、为矩阵A和矩阵D开辟动态存储空间,分别开(n+1)*(n+1)和(n+1)*(m+1)的大小。3、调用子函数”voidLDLT(intn,intm,double**A,double**D)“求解该问题并输出。子函数”voidLDLT(intn,intm,double**A,double**D)“实现如下功能:¡!¡!1
4、、为L矩阵(n+1*n+1)、U矩阵(辅助矩阵n+1*n+1)、d矩阵(n+1*1)和y(n+1*1)、z(n+1*1)、LDLT-solver(方程的解n*m)开辟存储空间。2图2:主函数实现的友好的输入界面。2、按照第2部分中的算法对A矩阵进行LDLT分解。得到L矩阵和D矩阵(在计算机中是一维数组n+1*1)3、利用第2部分中的回代算法,分别对D矩阵的每一列D(j)进行回代求解,并将结果保存在LDLT-solver的第j列中,得到方程组的解LDLT-solver(n*m)。4、顺序输出LDLT-solver(n*m)的第i行第j列的值,显
5、示出方程组的解。4计计计算算算结结结果果果利用本程序得到的计算结果如图三所示。3图3:计算结果显示4
此文档下载收益归作者所有