C++课程设计高斯消元法求线性代数方程组的解_高斯消元解线性方程组
C++课程设计高斯消元法求线性代数方程组的解由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“高斯消元解线性方程组”。
河北工业大学计算机软件技术基础(VC)课程设计报告
学院 管理 班级 管理104班 姓名 杨立宝 __ 学号 101707____ 成绩 __ ____
一、题目:
求线性代数方程组的解(高斯消去法)(C13)
二、设计思路
1、总体设计
1)分析程序的功能
第一:编写输入程序,通过键盘先输入对应的已知量及函数的大小n和系数a[i]和得数b[i]。
第二:编写中间程序,通过函数的调用先定义线性代数方程,然后通过程序求出方程的梯形矩阵系数,并最终得出结果。
第三编写输出程序,输出最终结果。
2)系统总体结构:设计程序的组成模块,简述各模块功能。模块一:各函数的具体内容
A:三个输入函数,分别输入n,一维数组,二维数组。即输入已知量。
B:中间运算函数,计算是使得方程系数所成的矩阵成梯形矩阵,未知数的结果。即计算中间变量及结果。
C:最后输出函数,输出最后计算结果。模块二:各函数原型的声明 a写头文件。
b变量声明:存放输入数据的数组的声明,存放中间变量的数组的声明,存放运算结果的数组的声明。分别存放对应数据。c输入有关操作的文字
d函数调用,在运算中自动调用对应的函数解决对应问题。模块三:主函数
2、各功能模块的设计:说明各功能模块的实现方法 模块一:各个函数的声明,直接声明。
模块二:各函数都通过for循环来实现各个数组之间的基本运算。
3、设计中的主要困难及解决方案
在这部分论述设计中遇到的主要困难及解决方案。1)困难1 函数调用是怎么用? 解决方案:
仔细阅读课本,以及同学之间的讨论,和老师的帮助。
4、你所设计的程序最终完成的功能 1)说明你编制的程序能完成的功能
输入线性代数的系数后,运行程序即可得到梯形矩阵和结果。2)准备的测试数据及运行结果
三、程序清单
如果是使用一个文件完成的程序,只需列出程序代码。如果是使用多文件完成的程序,首先说明程序中的代码存放在哪些文件中,说明文件名(例如:本程序包含first.cpp、second.cpp、third.cpp和all.h四个文件);然后依次给出每个文件名及该文件清单,例如:
#include const N= 10;//设定矩阵大小范围 /* * 使用已经求出的x,向前计算x(供getx()调用)* double a[][] 系数矩阵 * double x[] 方程组解 * int i 解的序号 * int n 矩阵大小 * return 公式中需要的和 */ double getm(double a[N][N], double x[N], int i, int n){ double m = 0;int r;for(r=i+1;r
result = double(b[n-1]/a[n-1][n-1]);else //计算其他x值(对于公式中的求和部分,需要调用getm()函数)result = double((b[i]-getm(a,x,i,n))/a[i][i]);
return result;} void main(){ //double a[N][N] = {{2},{1,3,2},{1,2,2}};//double b[N] = {4,6,5};double a[N][N];//系数矩阵 double b[N];//右端项 double x[N];//方程组解 int i,j,k;int n=N;//矩阵大小 /*用户手工输入矩阵*/ cout>n;cout>a[i][j];} cout>b[i];} /*显示原始矩阵*/ cout
/*进行高斯消去*/ for(j=0;j
/*显示处理后矩阵*/ cout
/*回代方式解方程组*/ for(i=n-1;i>=0;i--){ x[i] = getx(a,b,x,i,n);}
/*显示方程组解*/ cout
四、对该设计题目有何更完善的方案
1、对自己完成程序进行自我评价。设计过程中遇到很多问题,但经过和同学讨论,以及老师的解答和查阅资料加上我的努力最终写出了程序。
五、收获及心得体会
1、通过本次课程设计,自己在哪些方面的能力有所提高。
通过对该程序的编写,使我对数组,for循环以及函数的调用有了深刻的认识,锻炼了自己对c++更深一步的了解。
2、收获和心得体会。
明确的知道了数组,for循环以及函数的调用有的运用。明白了编程是一种严谨的工作,锻炼了自己的思维能力,并将努力培养自己严谨的思维。
日期: 2011年
6月
23日