📄 高斯消元法(选主元).txt
字号:
//高斯消元法(选主元)
#include <iostream.h>
#include <math.h>
int main()
{
int i,j,k,n,t,r;
double matrix[50][50],temp;
cout<<"请输入方程阶数:";
cin>>n;
for (i=1;i<=n;i++) //输入矩阵
{
for (j=1;j<=n+1;j++)
{
cout<<"a["<<i<<"]["<<j<<"]";
cin>>matrix[i][j];
}
}
for(k=1;k<=n-1;k++) //迭代
{
t=fabs(matrix[k][k]); //选主元
r=k;
for(i=k+1;i<=n;i++)
{
if (t<fabs(matrix[i][k])) {r=i;t=fabs(matrix[i][k]);}
}
if(r!=k)
{
for(j=k;j<=n+1;j++)
{
temp=matrix[r][j];
matrix[r][j]=matrix[k][j];
matrix[k][j]=temp;
}
}
if (matrix[k][k]==0) {cout<<"对角元为零,消元失败。";return 0;}
for(i=k+1;i<=n;i++)
{
matrix[i][k]=matrix[i][k]/matrix[k][k]; //l[i][k]=matrix[i][k]
for (j=k+1;j<=n+1;j++)
{
matrix[i][j]=matrix[i][j]-matrix[i][k]*matrix[k][j];
}
}
}
for(k=n;k>=1;k--) //回代
{
temp=0;
for(i=k+1;i<=n;i++)temp=temp+matrix[k][i]*matrix[i][n+1];
matrix[k][n+1]=(matrix[k][n+1]-temp)/matrix[k][k];
}
cout<<"方程组的解为:"<<endl;
for(k=1;k<=n;k++)
{
cout<<"a["<<k<<"]="<<matrix[k][n+1]<<" ";
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -