C13 100429 求线性代数方程的解(高斯消去法)_高斯法解线性方程组
C13 100429 求线性代数方程的解(高斯消去法)由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“高斯法解线性方程组”。
编号:13 河北工业大学计算机软件技术基础(VC)课程设计报告
学院 机械学院 班级 机设104 姓名王杰学号 100429 成绩 __
一、题目:
求线性代数方程组的解(高斯消去法)
二、设计思路
1、总体设计
1)分析程序的功能
通过高斯消去法求解中小规模线性方程组(即阶数不要太高,例如不超过1000)的解 2)系统总体结构:设计程序的组成模块,简述各模块功能 a.输入:方程组系数矩阵和常数矩阵的输入函数 b.消元和回代:高斯消去法的算法函数 c.输出:输出方程组的解函数
2、各功能模块的设计:说明各功能模块的实现方法 a.执行主函数调用输入函数,输入系数矩阵和常数矩阵 b.输入后主函数调用算法矩阵进行验证解情况和消元 c.消元后主函数调用回代函数计算方程组的解 d.计算后主函数调用输出函数输出方程组的解
3、设计中的主要困难及解决方案
在这部分论述设计中遇到的主要困难及解决方案。困难:
函数的消元和回代的算法的处理 解决方案:
消元过程中采用列主元消去法,为使方程组的解具有较小的误差计算,必须是系数矩阵主对角线上的元素的绝对值为最大。可单独用一个函数来完成。
4、你所设计的程序最终完成的功能 1)说明你编制的程序能完成的功能 求解线性代数方程组的解,阶数不太高的 2)准备的测试数据及运行结果 数据一:有解的情况 方程组的阶数:3 系数矩阵:3 2 1 1 1 1 2 3-1 常数矩阵:14 10 1 方程组的解:x1=1 X2=2 X3=7 数据二:无解的情况
编号:13 方程组的阶数:3 系数矩阵:1 1 1 1 1 1 1 1 1 常数矩阵:1 1 1 方程无解
三、程序清单
1、vc++.cpp文件清单 #include #include #include“tiger.h” void main()//主函数的定义 {
double a[s][s],b[s],x[s];//变量数组的定义 int n;cout>n;shuru(a,b,n);//调用函数输入
xiaoyuan(a,b,n);//调用函数消元
huidai(a,b,x,n);//调用函数回带
} shuchu(x,n,a);//调用函数输出
2、tiger.h文件清单
const int s=100;void shuru(double a[s][s],double b[s],int n);//函数输入原型声明
void xiaoyuan(double a[s][s],double b[s],int n);//函数消元原型声明
void huidai(double a[s][s],double b[s],double x[s],int n);//函数回带原型声明 void shuchu(double x[s],int n,double a[s][s]);//函数输出原型声明
3、shuru.cpp文件清单 #include #include void shuru(double a[100][100],double b[100],int n)//函数输入的定义 {
int i,j;cout
j=0;while(j>a[i][j];//输入矩阵到系数矩阵 j++;
编号:13
} i++;} cout
} 4.xiaoyuan.cpp文件清单 #include #include void xiaoyuan(double a[100][100],double b[100],int n)//函数消元的定义 {
int i,j,l;double p,q,max;for(l=0;l
max=fabs(a[i][l]);j=i;//J是max所在的行
} cin>>b[i];//输入矩阵到常数矩阵 i++;{
} for(i=l;i
p=a[l][i];a[l][i]=a[j][i];a[j][i]=p;} p=b[l];//交换常数行 b[l]=b[j];b[j]=p;for(i=l+1;i
q=a[i][l]/a[l][l];for(j=1;j
编号:13 } } } 5.huidai.cpp文件清单 include #include void huidai(double a[100][100],double b[100],double x[100],int n)//函数回代的定义 { double p;int i,j;x[n-1]=b[n-1]/a[n-1][n-1];i=n-2;while(i>=0){
p=0;
j=i+1;
while(j
{
p+=a[i][j]*x[j];
x[i]=(b[i]-p)/a[i][i];
j++;
}
i--;} } 6.shuchu.cpp文件清单
#include #include void shuchu(double x[100],int n,double a[100][100])//{ int i;if(a[n-1][n-1]==0)
cout
else
{
cout
i=0;
while(i
{
cout
i++;
} }
函数输出的定义 编号:13 }
四、对该设计题目有何更完善的方案
1、对自己完成程序进行自我评价
学会了用高斯消去法求线性代数方程的解,学会了使用多文件的形式
2、对课题提出更完善的方案
高斯消去法的程序求线性代数方程的解的过程过于繁琐,可以选择更简单的程序例如克拉默法则
五、收获及心得体会
1、通过本次课程设计,自己在哪些方面的能力有所提高。
通过本次课程设计,自己对函数的理解更明了。还有c++中对于多文件的使用方面。能够通过自己所学的知识来解决问题是很好的事,而且在解决问题的同时也提高了自己的能力。
2、收获和心得体会
以后要更用心的去学习