📄 gauss.cpp
字号:
#include <iostream.h>
#include <math.h>
const int n=3;
void gauss(double a[n][n], double b[n])
{
int i,j,k;
double m;
for(i=0;i<n;i++)
{
m=a[i][i];
k=i;
for(j=i+1;j<n;j++) //在系数矩阵的第一列选取绝对值
//最大的元素为主元素
if(fabs(m)<fabs(a[j][i]))
{m=a[j][i]; k=j;}
if(k!=i) //若最大元素不在第一行则与第一行交换
{
for(j=i;j<n;j++)
{
m=a[i][j];
a[i][j]=a[k][j];
a[k][j]=m;
}
m=b[i];
b[i]=b[k];
b[k]=m;
}
for(j=i+1;j<n;j++) //每列元素除以该列的最大元
a[i][j]=a[i][j]/a[i][i];
b[i]=b[i]/a[i][i];
for(k=i+1;k<n;k++)
{
for(j=i+1;j<n;j++) //将最大元所在列其它元素消为0
{
a[k][j]=a[k][j]-a[k][i]*a[i][j];
}
b[k]=b[k]-a[k][i]*b[i];
}
}
for(i=n-2;i>=0;i--) //回代求解
for(j=i+1;j<n;j++)
b[i]=b[i]-a[i][j]*b[j];
}
void main()
{
int i;
double a[n][n]={{-3,2,6},{10,-7,0},{5,-1,5}};
double b[n]={4,7,6};
gauss(a,b);
cout << "The solutions is:"<<endl;
for(i=0;i<n;i++)
cout <<"x"<<i<<"="<<b[i]<<",";
cout <<endl;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -