完全主元素消去法.docVIP

  • 296
  • 0
  • 约3.09千字
  • 约 9页
  • 2020-10-02 发布于浙江
  • 举报
2012-2013(1)专业课程实践论文 完全主元素消去法 董健 0818180101,R数学08-1班 陈泊宇 0818180116,R数学08-1班 一、算法理论 设方程组的增广矩阵为 首先在A中选取绝对值最大的元素作为主元素,例如,然后交换B的第一行与第行,第1列于第列,经第一次消元计算得 重复上述过程,设已完成第k-1步的选主元素,交换两行及交换两列,消元计算,(A,b)约化为 , 其中元素仍记作,元素仍记作 第K步选主元素(在右下角方框内选),即确定使 交换第k行与行元素交换第k列与列元素,将调到(k,k)位置,在进行消元计算,最后将原方程组化为 其中的次序为未知数调换后的次序。回代求解得 二、算法框图 开始 开始 输入N,a[i][j]的值,确定方程组 输入N,a[i][j]的值,确定方程组 变换出三角矩阵,并回代得到方程组的解将A中绝对值最大的元素通过行列变换到a[i][i] 令i=1确定方程组增广矩阵为 变换出三角矩阵,并回代得到方程组的解 将A中绝对值最大的元素通过行列变换到a[i][i] 令i=1 确定方程组增广矩阵为 YES NO 三、算法程序 #includestdio.h #includeiostream.h #includemath.h float a[100][101]; float x[10]; int N; //阶数 void shuchu() { for(int i=1;i=N;i++) { for(int j=1;j=N+1;j++) { couta[i][j]; cout ; } coutendl; } } void initdata() { cout请输入阶数N:; cinN; coutendl; cout请输入N*(N+1)个数endl; //输入矩阵中的数 for(int i=1;i=N;i++) for(int j=1;j=N+1;j++) { cina[i][j]; } coutendl; cout建立的矩阵为:endl; //打印出矩阵 shuchu(); } void main() { int z[10]; int maxi,maxj; initdata(); for(int i=1;i=N;i++) z[i]=i; for(int k=1;kN;k++) { maxi=k;maxj=k;float maxv=abs(a[k][k]); for(i=k;i=N;i++) for(int j=k;j=N;j++) if(abs(a[i][j])maxv) { maxv=abs(a[i][j]);maxi=i;maxj=j; } if(maxi!=k) //换行 { for(int j=1;j=N+1;j++) { float t=a[k][j];a[k][j]=a[maxi][j];a[maxi][j]=t; } } if(maxj!=k) //换列 { for(i=1;i=N;i++) { float t=a[i][k];a[i][k]=a[i][maxj];a[i][maxj]=t; } int t=z[k]; z[k]=z[maxj];z[maxj]=t; } for(int i=k+1;i=N;i++) //消元 { float l=a[i][k]/a[k][k]; for(int j=k;j=N+1;j++) {

文档评论(0)

1亿VIP精品文档

相关文档