网站大量收购独家精品文档,联系QQ:2885784924

200704033020用高斯列主元消元法解线性方程组.doc

200704033020用高斯列主元消元法解线性方程组.doc

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
200704033020用高斯列主元消元法解线性方程组

沈 阳 航 空 工 业 学 院 课程设计 学 号200704033020 班 级 7403301 姓 名 刘阳 指导教师 王晓岩 2009年 3月 6日 沈阳航空工业学院 课程设计任务书 院系:航空宇航工程学院 专业:飞行器设计与工程 班级:7403301 学号:200704033020 题目:用高斯列主元消元法解线性方程组 一、课程设计时间 2008~09第2学期第1周,共计1周,20学时。 二、课程设计内容 用C语言编写程序完成以下任务: 请用高斯列主元消元法解下列线性方程组: 三、课程设计要求 1. 程序质量: 贯彻结构化的程序设计思想。 用户界面友好,功能明确,操作方便。 用户界面中的菜单至少应包括“输入数据”、“开始计算”、 “退出”3项。 代码应适当缩进,并给出必要的注释,以增强程序的可读性。 2. 课程设计说明书: 课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。 高斯消元法解题步骤:(AX=b): 方法说明(以4阶为例) 第一步消元——在增广矩阵(A,b)第一列中找到绝对值最大的元素,将其所在行与第一行交换,再对(A,b)做初等行变换使原方程组转化为如下形式: 第二步消元——在增广矩阵(A,b)中的第二列中(从第二行开始)找到绝对值最大的元素,将其所在行与第二行交换,再对(A,b)做初等行变换使原方程组转化为: 第三步消元——在增广矩阵(A,b)中的第三列中(从第三行开始)找到绝对值最大的元素,将其所在行与第二行交换,再对(A,b)做初等行变换使原方程组转化为: 按x4 ( x3( x2( x1 的顺序回代求解出方程组的解。 指导教师:________ 学生签名:________ 五、说明书成绩: 六、教师评语: 目录 一、需求分析 1 二、程序流程图 2 三、核心技术的实现说明及相应程序段 8 四、个人总结 11 五、参考文献 11 六、源程序 11 一、需求分析 经过对程序设计题目的分析可知,整个程序的设计实现大致分为三个模块,分别是:输入方程组系数及结果,计算方程组,继续运算或退出。 计算方程组模块对应如下: 一、添加 图1程序总体结构图 2、具体功能框图 (1)菜单函数 图1 添加系数: Putin函数,输入行列式系数和结果 图2 图3 (3)guass 图4 三、核心技术的实现说明及相应程序段 本程序一共由两个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,运算函数是程序中较为核心的部分,下面分别进行说明。 1、运算函数 运算函数是本程序的主要部分,首先输入系数和向量后存入数组,判断方程是否合法,不合法则返回菜单,然后通过循环解二维数组,最后输出结果x[i],具体程序段如下: void gauss() { //double a[n][n]; //double b[n]; double x[n]; for(int k=0;k(n-1);k++) { double amax=abc(a[k][k]); int l=k; for(int i=k+1;in;i++) { if(amaxabc(a[i][k])) { amax=abc(a[i][k]); l=i; } } if(amax==0) {printf(无根或根大于二个\n); return; } if(l!=k) { double t=0; for(int j=k;jn;j++) { t=a[k][j];a[k][j]=a[l][j];a[l][j]=t; } t=b[k];b[k]=b[l];b[l]=t; } for(i=k+1;in;i++) {a[i][k]=a[i][k]/a[k][k]; b[i]=b[i]-a[i][k]*b[k]; for(int j=k+1;jn;j++) { a[i][j]=a[i][j]-a[i][k]*a[k][j]; } } } if(a[n-1][n-1]==0) {printf(无根或根大于二个\n); return; } else { b[n-1]=x[n-1]=b[n-1]/a[n

文档评论(0)

cj80011 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档