C语言求一个高斯行列式的运算

来源:百度知道 编辑:UC知道 时间:2024/05/28 18:56:17
高斯消元法求行列式的:

X1+X2+X3=6
X1+X3-2X3=1
2X1-2X2+X3=1
用高斯消元法,列出系数行列式:
1 1 1 6
1 3 -2 1
2 -2 1 1
①再行列式运算:1-2行:
1-1/1*1=0; 3-1/1*1=2;.....
2-2/1*1=0;-2-2/1*1=-4;.....
....

等到:
1 1 1 6
0 2 -3 -5
0 -4 -1 -11
②2-3两行再进行消元:
-4-(-4)/2*2=0; (-1)-(-4)/2*(-3)=-7; -11-(-4)/2*(-5)=-21;

最后先进到行列式:
1 1 1 6
0 2 -3 -5
0 0 -7 21
我的程序是:
#include "stdio.h"
#define HAN 3
#define LIE 4
gao_si(float **a,int han, int lie)
{
float m;
int i,j,k;
for(i=0;i<han-1;i++)
{
for(j=i+1;j<han;j++)
{
m=a[j][i]/a[i][i];
for(k=i;k<lie;k++)
a[j][k]=a[j][k]-m*a[i][k];
}
}
}
void main()
{
float a[HAN][LIE],nouse;
int i,j;
scanf("%f",&nouse);
printf("input the data\n");
for(i=0;i<HAN;i++)

#include "stdio.h"
#define HAN 3
#define LIE 4
gao_si(float a[HAN][LIE],int han, int lie)
{
float m;
int i,j,k;
for(i=0;i<han-1;i++)
{
for(j=i+1;j<han;j++)
{
m=a[j][i]/a[i][i];
for(k=i;k<lie;k++)
a[j][k]=a[j][k]-m*a[i][k];
}
}
}
void main()
{
float a[HAN][LIE];
int i,j;
printf("input the data\n");
for(i=0;i<HAN;i++)
for(j=0;j<LIE;j++)
scanf("%f",&a[i][j]);
gao_si(a,HAN,LIE);
printf("\nnow:\n");
for(i=0;i<HAN;i++)
{
for(j=0;j<LIE;j++)
printf("%f\t",a[i][j]);
printf("\n");
}
}
不知道你要设nouse干嘛,我把它删掉了