下载此文档

实验一高斯消元法.doc


文档分类:中学教育 | 页数:约5页 举报非法文档有奖
1/5
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/5 下载此文档
文档列表 文档介绍
GAUSS 消元法解线性方程组学院:计算机与信息工程学院班级: 计算机科学与技术师范汉班学号: 20081121107 姓名: 黄志强指导老师: 马季驌 1. alborithm analysis: 本程序采用高斯消元法解线性方程组。其主要思想是将增广矩阵中的系数矩阵先化为三角矩阵的形式, 再通过迭代或者化为对角矩阵求出方程的根。本程序时先将系数矩阵化为上三角形式,再化成对角矩阵求解。 2. code: #include<iostream> using namespace std; float a[20][20]; int main() { int n,i,j,p,x,y,f;float k,t; cout<<" 请输入线性方程组系数矩阵的阶(按 0 退出): "; while(cin>>n&&n>0) { int judge=1;// 作为系数矩阵对应行列式是否为 0 的标识; cout<<" 请输入系数行列式的各行各列的元素: "<<endl; for(i=1;i<=n;i++) for(j=1;j<=n;j++) {cin>>a[i][j];} // 输入行列式的各行各列元素 cout<<" 请输入线性方程组的常数列: "<<endl; for(i=1;i<=n;i++) cin>>a[i][n+1]; /********************* 增 广矩阵输入完毕以 下进行划上三角矩阵操作*************************************************************************************/ for(j=1;j<=n;j++) //j 代表一大步{ cout<<" 第"<<j<<" 大步: "<<endl; f=n; while(a[j][j]==0&&f>j) // 在此处附加一个判断行列式 a[j][j] 元是否为零的语句。{ for(p=1;p<=n;p++) { t=a[j][p]; a[j][p]=a[f][p]; a[f][p]=a[j][p]; } cout<<" 第"<<j<<" 行和第"<<f<<" 行发生互换"<<endl; f--; }//当 a[j][j] 元为零时,消元主元无效;第 j 行和第 f 行(从当前处理行依次往上寻找非零可作为消元主元的行)互换; if(a[j][j]==0) { cout<<" 该线性方程组解不唯一或者无解(提前结束) :"<<0<<endl; judge=0; //judge 为预先结束符; 由于行列式出现零较多, 可以提前判断行列式为零; break; } for(i=n;i>j&&judge!=0;i--) //i 代表第 J 大步的第 i 小步,若 judge 为0 ,说明{ // 消元元素为零时的换行处理. 通过换行来得到有效消元媒介 k=-a[i][j]/a[j][j]; for(p=1;p<=n+1;p++) a[i][p]+=a[j][p]*k; // 依次消去 a[i][j] 元,构造上三角行列式 cout<<" 下一个小步的行乘系数 k为:"<<k<<endl; for(x=1;x<=n;x++) { for(y=1;y<=n+1;y++) {cout<<a[x][y]<<" ";}//xy 原来是沿

实验一高斯消元法 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数5
  • 收藏数0 收藏
  • 顶次数0
  • 上传人yzhfg888
  • 文件大小79 KB
  • 时间2017-02-24