高斯消元法解线性方程组(选主元)

王朝other·作者佚名  2006-01-09
宽屏版  字体: |||超大  

/**

***高斯消元法解线性方程组***

《数值分析简明教程》-2 Editon -高等教育出版社- page 177 消元回代算法流程图

- page 180 选主元素算法流程图

描述:(1)选择主元

(2)消元过程

(3)回代过程

代码维护:2005.6.14 DragonLord

**/

#include<iostream.h>

#include<math.h>

int main()

{

float a[10][10],b[10],d=0,t=0,sum=0;

int k=1,l=0,i=0,j=0,m,n;

cout<<"输入方程组组数:"<<endl;

cin>>n;

cout<<"输入方程组未知数:"<<endl;

cin>>m;

cout<<"输入方程组各项系数:"<<endl;

for(int ii=1;ii<=n;ii++)

{

cout<<"第 "<<ii<<" 组数据"<<endl;

for(int jj=1;jj<=m;jj++)cin>>a[ii][jj];

cin>>b[ii];

}

while(k<=n)

{

//*****选主元素*****

d=a[k][k];

l=k;

for(i=k+1;i<=n;i++)

{

if(fabs(a[i][k])>fabs(d))

{

d=a[i][k];

l=i;

}

}

if(l!=k)

{

for(j=k;j<=n;j++)

{

t=a[l][j];a[l][j]=a[k][j];a[k][j]=t;

}

t=b[k];b[k]=b[l];b[l]=t;

}

//**************

//*****消元*****

for(j=k+1;j<=n;j++)

{

a[k][j]=a[k][j]/a[k][k];

}

b[k]=b[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];

}

j=1;

b[i]=b[i]-a[i][k]*b[k];

}

k++;

//**************

}

//*****回代*****

for(i=n-1;i>=1;i--)

{

sum=0;

for(j=i+1;j<=n;j++)

{

sum=sum+a[i][j]*b[j];

}

b[i]=b[i]-sum;

}

//**************

cout<<endl

<<endl

<<"最后结果:"<<endl;

for(int loop=1;loop<=n;loop++)

{

cout<<"x"<<loop<<"="<<b[loop]<<endl;

}

return 0;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有