📄 guass.cpp
字号:
#include<iostream.h>
#include<math.h>
#define NUMBER 4
float A[NUMBER][NUMBER+1] ,ark;
int flag,n;
/*1*/void exchange(int &r,int &k) /*交换行的矩函数*/
{
int i;
for(i=1;i<=n+1;i++)
A[0][i]=A[r][i];
for(i=1;i<=n+1;i++)
A[r][i]=A[k][i];
for(i=1;i<=n+1;i++)
A[k][i]=A[0][i];
}
/*2*/float max(int k) /*比校系数大小的函数*/
{
int i;
float temp=0;
for(i=k;i<=n;i++)
if(fabs(A[i][k])>temp)
{
temp=(float)fabs(A[i][k]);
flag=i;
}
return temp;
}
void main()
{
cout.setf(ios::fixed);
cout.precision(5);
float x[NUMBER]; /*此数组用于存放方程解*/
int k,i,j;
cout<<"********************用Gauss列主元消元法解线性方程组***************************";
cout<<"\n输入方程组的维数:n=";
cin>>n;
for(i=0;i<n;i++)
{
cout<<"请输入第"<<i+1<<"行的数据:\n";
/*实现将每一行中的系数和向量一次性输入,数之间用空格格开,输完后回车确定*/
for(j=0;j<n+1;j++) /*将刚才输入的数存入数组*/
cin>>A[i][j];
for(k=0;k<=n-1;k++)
{
ark=max(k);
if(ark==0) /*判断方程是否为线性方程,即是否合法*/
{
cout<<"\n此方程组不合法!";
}
else if(flag!=k)
exchange(flag,k);
for(i=k+1;i<=n;i++)
for(j=k+1;j<=n+1;j++)
A[i][j]=A[i][j]-A[k][j]*A[i][k]/A[k][k];
}
x[n]=A[n][n+1]/A[n][n];
for( k=n-1;k>=0;k--)
{
float me=0;
for(j=k+1;j<=n;j++)
{
me=me+A[k][j]*x[j];
}
x[k]=(A[k][n+1]-me)/A[k][k];
}
for(i=0;i<=n;i++)
{
cout<<'x'<<i<<"=x["<<i<<']='<<x[i]<<'\t';
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -