收藏 分享(赏)

高斯列主元消元法.doc

上传人:jmydc 文档编号:9311678 上传时间:2019-08-01 格式:DOC 页数:16 大小:126.50KB
下载 相关 举报
高斯列主元消元法.doc_第1页
第1页 / 共16页
高斯列主元消元法.doc_第2页
第2页 / 共16页
高斯列主元消元法.doc_第3页
第3页 / 共16页
高斯列主元消元法.doc_第4页
第4页 / 共16页
高斯列主元消元法.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、 课 程 设 计学 号:班 级 :姓 名 :指导教师 : 2008 年 6 月 26 日课 程 设 计 任 务 书一、课程设计题目:用高斯列主元消元法解线性方程二、课程设计工作自 2008 年 6 月 23 日起至 2008 年 6 月 27 日止三、课程设计内容:运用所学的 C 语言知识,编制和调试程序 ,具有如下功能:请用高斯列主元消元法解下列方程组: 533674352221 31 xxxxxx四、课程设计要求:程序质量: 用模快化程序设计方法;在程序界面,以菜单的形式调用各功能函数:程序可读性强,界面友好;输出形式尽量美观。 用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。

2、用户界面中的菜单至少应包括“输入数据” 、 “开始计算” 、 “退出”3 项。代码应适当缩进,并给出必要的注释,以增强程序的可读性。附:高斯列主元消元法求解线性方程组 AX=b 的简要步骤(高斯消元过程) AX=b: nnnnbxaa 21212112方法说明(以 4 阶为例) 第一步消元在增广矩阵(A ,b)第一列中找到绝对值最大的元素,将其所在行与第一行交换,再对(A ,b)做初等行变换使原方程组转化为如下形式:*04321x 第二步消元在增广矩阵(A ,b)中的第二列中(从第二行开始)找到绝对值最大的元素,将其所在行与第二行交换,再对(A,b)做初等行变换使原方程组转化为: *04321

3、x 第三步消元在增广矩阵(A ,b)中的第三列中(从第三行开始)找到绝对值最大的元素,将其所在行与第二行交换,再对(A,b)做初等行变换使原方程组转化为: *0*4321x按 x4 x3 x2 x1 的顺序回代求解出方程组的解。课程设计说明书:课程结束后,上交课程设计说明书(打印稿和电子稿) ,其内容如下: 封面 课程设计任务书 目录 需求分析(分析题目的要求) 程序流程图(总体流程图和主要功能模块流程图) 核心技术的实现说明及相应程序段 个人总结 参考资料 源程序及适当的注释指导教师:_ 学生签名:_目录一、需求分 析 1二、程序流程图 2三、核心技术的实现说明及相应程序段 8四、个人总结

4、6五、参考文献 .11六、源程序 .11xxxxxxxxxxxxxxxx1一、需求分析经过对程序设计题目的分析可知,整个程序的设计实现大致分为三个模块,分别是:输入方程组,计算方程组,继续运算/退出。计算方程组模块对应三个函数,其函数名和功能如下:一、菜单(menu):使用户界面友好,操作方便。二、调换(swap):实现两个传递系数之间调换。三、输入数据函数(input):其功能是输入方程系数四、计算函数:( count): 核心部分,列主元消元法,并输出。二、程序流程图1、程序总体结构图图 1: 程序总体结构图2、具体功能框图输出: 调用菜单(manu)函数显示菜单输入:所须选择的序号.1:

5、输入系数 2 开始计算 3:退出xxxxxxxxxxxxxxxx21:SWAP 函数定义:实数 t将 a 赋值给 t将 b 赋值给 a将 t 赋值给 b2:INPUT 函数输出:a1X1 + b1X2 + c1X3 = d1a2X1 + b2X2 + c2X3 = d2a3X1 + b3X2 + c3X3 = d3输出:! 以逗号隔开 ,回车结束 !!输出:input three num for a1,a2,a3:输入:a1,a2,a3输出:input three num for b1,b2,b3:输入:b1,b2,b3输出:input three num for c1,c2,c3:输入:c1

6、,c2,c3输出:input three num ford1,d2,c3:输入:d1,d2,d3输出:input three num for c1,c2,c3:xxxxxxxxxxxxxxxx33COUNT 函数真 a1 * a1 a2 * a2 假swap(a1,a2);swap(b1,b2);swap(c1,c2);swap(d1,d2);真 a1 * a1 a3 * a3 假swap(a1,a3);swap(b1,b3);swap(c1,c3);swap(d1,d3);b2=b1*(a2/a1*(-1)+b2;b3=b1*(a3/a1*(-1)+b3;c2=c1*(a2/a1*(-1)+

7、c2;c3=c1*(a3/a1*(-1)+c3;d2=d1*(a2/a1*(-1)+d2;d3=d1*(a3/a1*(-1)+d3;真 b2 * b2 b3 * b3 假swap(b2,b3);swap(c2,c3);swap(d2,d3);c3 = c2 * ( b3/b2 * (-1) + c3 ;d3 = d2 * ( b3/b2 * (-1) + d3 ;xxxxxxxxxxxxxxxx4x3 = d3 / c3;x2 = ( d2 - (x3 * c2) )/b2;x1 = (d1 - (x2 * b1) - (x3 * c1)/a1;printf(“x1 = %.3fnx2 = %

8、.3fnx3 = %.3fn“,x1,x2,x3);三、核心技术的实现说明及相应程序段本程序一共由三个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,交换函数,运算函数是程序中较为核心的部分,其他的函数为辅,整个程序运行的主界面如下:xxxxxxxxxxxxxxxx5下面作分布解说:1、交换赋值函数void swap(float a = b;b = t;2、输入函数,为方程赋予初值void input()printf(“a1X1 + b1X2 + c1X3 = d1na2X1 + b2X2 + c2X3 = d2na3X1 + b3X2 +

9、c3X3 = d3n“);printf(“!以逗号隔开,回车结束!n“);xxxxxxxxxxxxxxxx6printf(“input three num for a1,a2,a3:“);scanf(“%f,%f,%f“,printf(“input three num for b1,b2,b3:“);scanf(“%f,%f,%f“,printf(“input three num for c1,c2,c3:“);scanf(“%f,%f,%f“,printf(“input three num for d1,d2,d3:“);scanf(“%f,%f,%f“,3、运算函数 运算函数是本程序的主要

10、部分,首先列第一列主元(找到第一列的最大系数)然后通过调用 SWAP 函数,掉到第一行,依此类推。求出 Xn 然后回带,最后打印xxxxxxxxxxxxxxxx7出来 void count()if(a1 * a1 a2 * a2)swap(a1,a2);swap(b1,b2);swap(c1,c2);swap(d1,d2);if(a1 * a1 a3 * a3)swap(a1,a3);swap(b1,b3);swap(c1,c3);swap(d1,d3);b2=b1*(a2/a1*(-1)+b2;b3=b1*(a3/a1*(-1)+b3;c2=c1*(a2/a1*(-1)+c2;c3=c1*(

11、a3/a1*(-1)+c3;d2=d1*(a2/a1*(-1)+d2;d3=d1*(a3/a1*(-1)+d3;if(b2 * b2 b3 * b3)swap(b2,b3);swap(c2,c3);swap(d2,d3);c3 = c2 * ( b3/b2 * (-1) + c3 ;d3 = d2 * ( b3/b2 * (-1) + d3 ;x3 = d3 / c3;xxxxxxxxxxxxxxxx8x2 = ( d2 - (x3 * c2) )/b2;x1 = (d1 - (x2 * b1) - (x3 * c1)/a1;printf(“x1 = %.3fnx2 = %.3fnx3 = %

12、.3fn“,x1,x2,x3);四、个人总结这次课设让我更熟悉的掌握了通过 C 语言运用高斯定理解方程组,也使我对二维数组的认识更加深入了解,在完成程序中,遇到过较大的困难,但通过重新深入教材和对资料理解的基础逐步完成。xxxxxxxxxxxxxxxx9五、参考文献1 谭浩强 C 程序设计 北京:清华大学出版社,20062 刘成等 C 语言程序设计实验指导与习题集 北京:中国铁道出版社,2007六、源程序#include “stdio.h“#include “conio.h“/其中定义了 getch()函数。void menu()puts(“1. 数据输入“);puts(“2. 开始计算“);

13、puts(“3. 退出“);float a1,a2,a3,b1,b2,b3,c1,c2,c3,d1,d2,d3;float t;float x1,x2,x3;void swap(float a = b;b = t;void input()xxxxxxxxxxxxxxxx10printf(“a1X1 + b1X2 + c1X3 = d1na2X1 + b2X2 + c2X3 = d2na3X1 + b3X2 + c3X3 = d3n“);printf(“!以逗号隔开,回车结束!n“);printf(“input three num for a1,a2,a3:“);scanf(“%f,%f,%f“

14、,printf(“input three num for b1,b2,b3:“);scanf(“%f,%f,%f“,printf(“input three num for c1,c2,c3:“);scanf(“%f,%f,%f“,printf(“input three num for d1,d2,d3:“);scanf(“%f,%f,%f“,void count()if(a1 * a1 a2 * a2)swap(a1,a2);swap(b1,b2);swap(c1,c2);swap(d1,d2);if(a1 * a1 a3 * a3)swap(a1,a3);swap(b1,b3);swap(c

15、1,c3);swap(d1,d3);b2=b1*(a2/a1*(-1)+b2;b3=b1*(a3/a1*(-1)+b3;c2=c1*(a2/a1*(-1)+c2;xxxxxxxxxxxxxxxx11c3=c1*(a3/a1*(-1)+c3;d2=d1*(a2/a1*(-1)+d2;d3=d1*(a3/a1*(-1)+d3;if(b2 * b2 b3 * b3)swap(b2,b3);swap(c2,c3);swap(d2,d3);c3 = c2 * ( b3/b2 * (-1) + c3 ;d3 = d2 * ( b3/b2 * (-1) + d3 ;x3 = d3 / c3;x2 = ( d2 - (x3 * c2) )/b2;x1 = (d1 - (x2 * b1) - (x3 * c1)/a1;printf(“x1 = %.3fnx2 = %.3fnx3 = %.3fn“,x1,x2,x3);void main()char choice;menu();choice=getch();while(1)switch(choice)case 1:input();break;case 2:count();break;case 3:return;break;choice=getch();xxxxxxxxxxxxxxxx12

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报