LU解线性方程组(共12页).docx

上传人:飞****2 文档编号:13941347 上传时间:2022-05-02 格式:DOCX 页数:12 大小:167.87KB
返回 下载 相关 举报
LU解线性方程组(共12页).docx_第1页
第1页 / 共12页
LU解线性方程组(共12页).docx_第2页
第2页 / 共12页
点击查看更多>>
资源描述

《LU解线性方程组(共12页).docx》由会员分享,可在线阅读,更多相关《LU解线性方程组(共12页).docx(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上LU分解法解线性方程组一 实验目的1.熟练运用已学计算方法求解方程组2.加深对计算方法技巧,选择正确的计算方法来求解各种方程组3.培养使用电子计算机进行科学计算和解决问题的能力二实验环境 VC+6.0 语言:C+三实验内容 编写一个解线性方程组的算法。算法包括:1. 矩阵的输入输出2. 判断矩阵是否奇异3. 进行分解4. 输出、5. 回带解出y、x四实验原理 1.若一个线性方程组系数矩阵为阶方阵且各阶顺序主子式均不为零,则的分解存在且唯一。 2.在满足1的条件下可推导得出以下公式 (1): (2): 3.公式(1)用于求解矩阵、,公式(2)用于回带求解y、x。从公式中

2、可以看出:对角线上元素为1,第一行与第一行相同。4. 分解的具体过程和计算顺序如下:(1)第一步分解:(2)第二步分解: (3)第三步分解: (n).第n步分解: 依次计算: 五.实验流程图1.程序总的流程图2.考虑主要目的这里只给出分解的流程图:六VC+源程序 #includeusing namespace std;double Fun(int n1,double a11111); /声明求矩阵行列式的递归函数函数double Fun(int n1,double a11111) int i_1,j_1,c; /c为数组b的行 double b1111; /用于存放余子式 int p=0,q=

3、0; int sum=0; if(n1=1) return a111; for(i_1=1;i_1=n1;i_1+) for(c=1;c=n1-1;c+) if(ci_1) p=0; else p=1; for(j_1=1;j_1=n1-1;j_1+) bcj_1=a1c+pj_1+1; if(i_1-1)%2=0) q=1; else q=(-1); sum=sum+a1i_11*q*Fun(n1-1,b); return sum;/主程序,用于矩阵输入输出,判断,分解,回带void main() int n,i,j,k; double temp=1.0; double a1111=0; d

4、ouble L1111=0; doubleU1111=0; double b11=1; double x11=1; double m=0.0; double y11=1; double temp1=0.0; double temp2=0.0; /完成系数矩阵与右端项的输入与输出 cout!请输入待解方程组未知数的个数: n n; cout!请输入待解方程组的系数endl; for(i=1;i=n;i+) for(int j=1;jaij; cout!请输入待解方程组的系数矩阵如下:endl; for(i=1;i=n;i+) for(j=1;j=n;j+) coutaij ; coutendl;

5、 cout!请输入待解方程组的右端项endl; /初始化LU for(int p=1;p=n;p+) Lpp=1; for(p=1;p=n;p+) U1p=a1p; coutendl; for(i=1;ibi;coutb=endl;for(i=1;i=n;i+)coutbiendl;for(i=2;i=n;i+)temp=Fun(i,a);if(temp=0) coutendlendl;coutendloutput:temp =tempendl;cout矩阵奇异;break;coutendl;/LU分解if(temp!=0) for(i=1;i=n;i+) for(j=1;j=i-1;j+)

6、if(ajj=0) cout请重新输入系数矩阵与右端项:endl; else m=0.0; for(k=1;k=j-1;k+) m=m+Lik*Ukj; Lij=(aij-m)/Ujj; for(j=1;j=i;j+) m=0.0; for(k=1;k=j-1;k+) m=m+Ljk*Uki; Uji = aji - m; if(temp!=0)coutL=endl; for(i=1;i=n;i+) for(j=1;j=n;j+) coutLij ; coutendlendl; coutendlendlU=endl; for(i=1;i=n;i+) for(j=1;j=n;j+) coutUi

7、j ; coutendlendl; /回带求解y couty=endl;for(int s=1;s=n;s+) for(int t=1;t=s-1;t+) temp1=temp1+Lst*yt; ys=bs-temp1; cout ys endl; temp1=0.0; cout=1;s-) for(int t=s+1;t=n;t+) temp2=temp2+Ust*xt; xs=(ys-temp2)/Uss; temp2=0.0; coutx=endl; for(i=1;i=n;i+) cout xiendl;七程序执行结果1.系数矩阵主子式有为0时,随便输入一个矩阵结果如下:2. 系数矩阵各阶主子式不为0时,输入课本70页习题12所示矩阵系数与右端项,顺序执行程序,结果经matlab验证无误,结果如下:验证:七实验优缺点 此算法可以一定程度上判断是否可解并解出其解,但由于未添加主元选取的步骤,导致对于有的方程组会判断失误并认为方程无解。八参考文献1.张军等编著.数值计算 .清华大学出版社2008年7月第一版2.罗建军等编著.C+程序设计教程(第二版).高等教育出版社2007年8月第二版3.施吉林 刘淑珍 陈桂芝.计算机数值方法M.北京:高等教育出版社,1999专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁