c语言求矩阵乘积的问题
c语言求矩阵乘积,如下:
下面的这个是复矩阵求积的算法,应该是正确的。m是a矩阵的行数;n是a矩阵的列数,b矩阵的行数;k是b矩阵的列数。
void getvirtualmatrixmul(double ar[],double ai[],double br[],double bi[],int m,int n,int k,double cr[],double ci[])
{
int i,j,l,u,v,w;
double p,q,s;
for (i=0; i<=m-1; i++)
for (j=0; j<=k-1; j++)
{ u=i*k+j;
cr[u]=0.0; ci[u]=0.0;
for (l=0; l<=n-1; l++)
{
v=i*n+l; w=l*k+j;
p=ar[v]*br[w];
q=ai[v]*bi[w];
s=(ar[v]+ai[v])*(br[w]+bi[w]);
cr[u]=cr[u]+p-q;
ci[u]=ci[u]+s-p-q;
}
}
return;
}
这个是我用的时候:
//矩阵定义
complex<double> vfx[MT][1];
complex<double> vft0[MT][1];
double phi11_real[MT][MT],phi11_imag[MT][MT],vfx_real[MT][1],vfx_imag[MT][1],
vft0_real[MT][1],vft0_imag[MT][1],ac[MT][1],bd[MT][1],ad[MT][1],bc[MT][1];
//计算
getvirtualmatrixmul(*phi11_real,*phi11_imag,*vfx_real,*vfx_imag,global_nt,global_nt,1,*vft0_real,*vft0_imag);
调试中发现,前面的phi11(6维方阵)和vfx矩阵(6行1列)的的实部和虚部都有值(global_nt==6)。但计算中,发现得到的乘积矩阵vft0的实部和虚部只是计算出了第一行。试过多个算法,都是如此,不知道是什么问题,请各位高手指教啊!!!
分不多了,包涵啊!!!