📄 leqn.c
字号:
//解线性方程组的主元消去法(无回代过程)。
// 5阶线性方程组如下:
// 3x+2y + w-2t=-3
// x- y+2z+3w+5t= 5
// 3y +2w+ t=-6
// -x + z+ w =-1
// 4x+ y+2z- w- t= 8
#define N 5 //线性方程组的阶数
float A[N][N+1]={{3,2,0,1,-2,-3},{1,-1,2,3,5,5},{0,3,0,2,1,-6},
{-1,0,1,1,0,-1},{4,1,2,-1,-1,8}} ; //5阶线性方程组的增广系数矩阵
float X[N]; //5阶线性方程组的解:X=1.0,Y=-1.0,z=2.0,w=-2.0,t=1.0
void findmain (int i)////寻找第i列的主元,并将其所在行交换到当前处理行位置上
{
int j,k;
float c;
c=A[i][i];k=i;//初始化主元在第i行
for (j=i+1;j<N;j++) if (A[j][i]>c) {c=A[j][i];k=j;}//寻找主元所在行
if (k!=i) for (j=0;j<=N;j++) //将主元所在行交换到当前处理行位置上
{c=A[k][j];A[k][j]=A[i][j];A[i][j]=c;}
}
void divmain (int i)//将主元所在行的各个系数除以主元,使主元为1
{
int j;
float c;
c=A[i][i];
A[i][i]=1.0;
for (j=i+1;j<=N;j++) A[i][j]/=c;
}
void del (int i) //进行第i列的消元处理
{
int j,k;
float c;
for (j=0;j<N;j++) if (j!=i && A[j][i]) {
c=A[j][i];A[j][i]=0;
for (k=i+1;k<=N;k++) A[j][k] -= c*A[i][k];
}
}
main ( )
{
int i;
for (i=0;i<N;i++) { //按行处理
if (i<N-1) findmain (i);//寻找主元,并将其所在行交换到当前处理行位置上
divmain (i) ; //将当前处理行的各个系数除以主元,使主元为1
del (i); //进行消元处理
}
for (i=0;i<N;i++) X[i]=A[i][N]; //保存n阶线性方程组的解
while (1) ; //在这一行设置断点,中止程序运行,以便观察程序运行的结果
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -