我想和你聊聊好吗
#include<stdio.h>
#include<math.h>
#define N 3
/*N为矩阵的阶数*/
int maxlie(float a[N][N],int flag);
void huanhang(float a[N][N],int p,int q);
void xiaoyuan(float a[N][N],int flag);
int main()
{
int i,j,cur;
float a[N][N],b[N][N];
printf("请输入矩阵的各元素!\n");
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%f",&a[i][j]);
for(i=0;i<N;i++)
{
cur=maxlie(a,i);
if(cur!=i)
huanhang(a,cur,i);
xiaoyuan(a,i);
}
for(i=0;i<N;i++)
{
for(j=0;j<N;j++)
printf("%-5.6f ",a[i][j]);
printf("\n");
}
getch();
return 0;
}
int maxlie(float a[N][N],int flag)
{
int i,j;
float f;
f=fabs(a[i][flag]);
j=flag;
for(i=flag+1;i<N;i++)
{
if(f>=fabs(a[i][flag]))
continue;
else
{
f=fabs(a[i][flag]);
j=i;
}
}
return j;
}
void huanhang(float a[N][N],int p,int q)
{
int i;
float b[N];
for(i=0;i<N;i++)
{
b[i]=a[p][i];
a[p][i]=a[q][i];
}
for(i=0;i<N;i++)
{
a[q][i]=b[i];
}
}
void xiaoyuan(float a[N][N],int flag)
{
float chushu;
int i,j;
for(i=flag+1;i<N;i++)
{
chushu=a[i][flag]/a[flag][flag];
a[i][flag]=0;
for(j=flag+1;j<N;j++)
{
a[i][j]=a[i][j]-a[flag][j]*chushu;
}
}
}
时间不多写的不知道,满足你的要求不?真羡慕你们写这东西,我们直接考试,各种的矩阵变换及插值加速方法等等!
我又看了看,还以为是列主元的Gauss变换!我再看看吧,有时间的话给你回复!!
[此贴子已经被作者于2006-12-29 22:25:20编辑过]