欢迎来到天天文库
浏览记录
ID:40561345
大小:54.50 KB
页数:7页
时间:2019-08-04
《n维线性方程组的求解程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言程序设计课程设计总结报告设计题目:n维线性方程组的求解程序。姓名:朱战威学号:111411249同组人员:谢忠建闫俊宇卿帅军尚亚军指导教师:张芳芳、王康平、薛冰2012年6月21日一.设计题目生物工程系《C语言程序设计》n维线性方程组的求解二.设计时间及地点设计时间:6月21日设计地点:3#A506三、题目内容要求能正确的求解n维线性方程的答案四、设计部分:1.掌握C语言程序设计的基本思想.概念.方法和技能;2.初步学会利用c语言编制一些程序以解决一般实际应用问题;3.培养学生分析问题和解决问题的能力;五.设计部分设计程序的主要步骤:1.了解n维线性方程的求解步骤,可根据高斯
2、消元法进行运算。2.按消元规则进行运算后,再进行元素回代3.矩阵在c语言中可用二维数组表示4.循环使用for语句表示此程序运用高斯消元法:(1)按消元规则进行运算后,对角线以下元素为0,故运算中对角线以下的元素不作计算。(2)对角线下的元素回代无影响,将乘数放在该处。既 a[i][k]=a[i][k]/a[k][k],i=k+1,k+2,...,n;(3)对角线以上的元素和常数项采用“原地”工作方式,既经变换后的元素仍放在原来的位置上a[i][j]=a[i][j]-a[i][k]*a[k][j]; b[i]=b[i]-a[i][k]*b[k]; i,j=
3、k+1,k+2,...,n; 目的是为了节省存储单元(4)回代后的值仍放在常数项存储单元 b[n]=b[n]/a[n][n]; b[i]-=a[i][j]*b[j]; b[i]=(1/a[i][i])*b[i]; 这样,数组b中单元存放的就是未知数的解。 ****************************************************************#includeusingnamespacestd;voidmain(){ inti=0,j=0,k,n,sum=0; cout<<"输入未知数个数:"; cin
4、>>n; //输入线性方程未知数的个数 double**a=newdouble*[n+1]; //分配存储系数矩阵的二维数组(动态分配) for(i=0;i<=n;i++) { a[i]=newdouble[n+1]; } double*b=newdouble[n+1]; //分配存储方程组右侧常数项的一维数组 cout<<"输入线性方程的系数矩的每一行和等号右侧结果:"<>a[i][j];
5、 //输入系数矩阵的元素,没有的项输入0 } cin>>b[i]; //输入方程组每个等式的等号右边的常数项 } k=1; while(1) { for(i=k+1;i<=n;i++) { a[i][k]=a[i][k]/a[k][k]; //对角线下的元素回代无影响,将乘数放在该处。 } for(i=k+1;i<=n;i++) { for(j=k+1;j<=n;j++) { a[i][j]=a[i][j]-a[i][k]*a[k][j];//对角线以上的元素和常数项采用“原地”工作方式,既经变换后的元素仍放在原来的位置上
6、 } b[i]=b[i]-a[i][k]*b[k]; } if(k!=(n-1)) k++; elsebreak; } b[n]=b[n]/a[n][n]; for(i=n-1;i>=1;i--) { for(j=i+1;j<=n;j++) { b[i]-=a[i][j]*b[j]; } b[i]=(1/a[i][i])*b[i]; //回代后的值仍放在常数项存储单元 sum=0; } for(i=1;i<=n;i++) { cout<<"x"<
7、]a[i]; } delete[]a; delete[]b;}六.程序代码#includeusingnamespacestd;voidmain(){inti=0,j=0,k,n,sum=0;cout<<"输入未知数个数:";cin>>n;double**a=newdouble*[n+1];for(i=0;i<=n;i++){a[i]=newdouble[n+1];}double*b=newdouble[n+1];cout<<"输入线性方程的系数矩的
此文档下载收益归作者所有