欢迎来到天天文库
浏览记录
ID:36499235
大小:121.50 KB
页数:5页
时间:2019-05-11
《高斯列主元消去法解线性方程组VC课程设计报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、课程设计报告一.课程设计目的:采用高斯列主元消去法解线性方程组。用C语言或C++设计一个程序来通过高斯列主元消去法解线性方程组AX=b的解。二.课程设计的内容1.课程设计的题目及简介题目:高斯列主元消去法解线性方程组。简介:对线性方程组AX=b等价于方法说明(以4阶为例):(1)第1步消元——在增广矩阵(A,b)第一列中找到绝对值最大的元素,将其所在行与第一行交换,再对(A,b)做初等行变换使原方程组的第一列元素除了第一行的全变为0;(2)第2步消元——在增广矩阵(A,b)中的第二列中(从第二行开始)找到绝对值最大的元素,将其
2、所在行与第二行交换,再对(A,b)做初等行变换使原方程组转化为:注:*代表非零的数。(3)第3步消元——在增广矩阵(A,b)中的第三列中(从第三行开始)找到绝对值最大的元素,将其所在行与第二行交换,再对(A,b)做初等行变换使原方程组转化为:(4)按x4àx3àx2àx1的顺序回代求解出方程组的解。此方法即高斯列主元消去法,若在变换的过程中没有选出绝对值最大的数放在最前面进行消元而求出未知数的方法就叫高斯消去法。高斯消去法有一很明显的缺点,即在消元的过程中可能出现小主元,这种小主元可能导致解的不稳定,为了避免小主元的出现正是高
3、斯列主元消去法的主要目的。而通过每次消元之前的调换方程的次序也正是计算机实现高斯列主元消去法的关键。2.设计说明我用的是C++面向对象程序设计进行这个程序的设计的。定义一个求方程解的类,只需用户将所需求解的方程的各个系数输入即可求出此方程的解。很方便,而且程序很简洁。先设定了一个类,也就是说是面向对象的。此类的作用就是解用户输入的方程组,并输出结果。此类里面定义了两个函数,voidinitialize()和voidglz::solve()。第一个函数的作用是初始化类中的变量,以便计算机知道方程中未知数的个数,便于运算和输出。而
4、后一个函数的作用这是解方程组,并输出结果。此函数的解方程组功能的思路由上面课程设计的简介设计而出。主函数中增加了循环,此循环可以解多个方程组。1.流程图程序开始显示欢迎页面输入数据,开始运算输出结果结束2.程序清单#include//文件包含#include#include#includeclassglz//定义类{public:introw,col,i,j,k,t;doublemat[100][100];doubletmp;public:void
5、initialize();voidsolve();};voidglz::initialize()//函数初始化{cout<<"欢迎使用我的小程序来解方程组,本程序是利用高斯列主元消去法解方程组的,祝您使用愉快"<>row;cout<<"输入未知数的个数加一"<>col;cout<<"按行输入各未知数前的系数和等号右边的常数"<>mat[i]
6、[j];}voidglz::solve(){doublex[100];//解方程的函数for(i=0;iabs(mat[k][i])){max=mat[j][i];k=j;}}if(k!=i){for(j=i;j7、(j=i+1;j=0;i--){for(j=col-2;j>=i+1;j--)mat[i][col-1]-=x[j]*mat[i][j];x[i]=mat[i][col-1]/mat[i][i];}cout<<"此方程组的8、解为:";//输出解for(inti=0;i
7、(j=i+1;j=0;i--){for(j=col-2;j>=i+1;j--)mat[i][col-1]-=x[j]*mat[i][j];x[i]=mat[i][col-1]/mat[i][i];}cout<<"此方程组的
8、解为:";//输出解for(inti=0;i
此文档下载收益归作者所有