|
#2
2010-05-05 15:06
|
帮俺检查一下啊 谢谢!!!
复矩阵求逆
#define M 60
juzhenqiuni(float *g,float*b,int n1)/*要求逆的矩阵为(g+jb)是n1*n1阶矩阵,得到的逆矩阵仍然由(g+jb)带回*/
{
static float Re,Im,t,d;
static float E[M][M]={0.0},g1[M][2*M]={0.0},b1[M][2*M]={0.0};
for(i=1;i<=n1;i++) E[i][i]=1;
for(i=1;i<=n1;i++)
for(j=1;j<=n1;j++)
{
g1[i][j]=g[i][j];g1[i][j+n1]=E[i][j];
b1[i][j]=b[i][j];b1[i][j+n1]=E[i][j];
}
do{
k=1;
Re=g1[k][k]/(g1[k][k]*g1[k][k]+b1[k][k]*b1[k][k]);
Im=-b1[k][k]/(g1[k][k]*g1[k][k]+b1[k][k]*b1[k][k]);
for(j=k+1;j<=2*n1;j++)
{t=g1[k][j];d=b1[k][j];
g1[k][j]=t*Re-d*Im;
b1[k][j]=d*Re+t*Im;
}
for(i=k+1;i<=n1;i++)
for(j=k+1;j<=2*n1;j++)
{
g1[i][j]=g1[i][j]-g1[i][k]*g1[k][j]+b1[i][k]*b1[k][j];
b1[i][j]=b1[i][j]-g1[i][k]*b1[k][j]-b1[i][k]*g1[k][j];
}
k++;
}while(k<=n1);
for(i=1;i<=n1;i++)
for(j=1;j<=n1;j++)
{
g[i][j]=g1[i][j];
b[i][j]=b1[i][j];
}
}
矩阵乘法
juzhenchengfa(float *A1,float *A2,float *B1,float *B2,float *C1,float *C2,int a,int b)
/*为矩阵(A1*jA1)(a*b阶)与矩阵(B1*jB1)(b*a阶)的乘法结果为(C1*jC1)(a*a阶)*/
{
static float d=0.0,t=0.0;
for(i=1;i<=a;i++)
{
for(j=1;j<=b;j++)
for(k=1;k<=a;k++)
{
d=d+A1[i][k]*B1[k][j]-A2[i][k]*B2[k][j];
t=t+A1[i][k]*B2[k][j]-A2[i][k]*B1[k][j];
}
C1[i][j]=d;
C2[i][j]=t;
}
}