伊莉空間
分享純C語言:[工程數學]任意矩陣相乘
如主題,以下為相關程式碼
/*
求M*N階矩陣A與N*K階矩陣B乘積矩陣C
*/
#include <stdio.h>
void trmul(double *a,double *b,int m,int n,int k,double *c)
//int m,n,k;
//double a[],b[],c[];
{
int i,j,l,u;
for (i=0; i<=m-1; i++)
for (j=0; j<=k-1; j++)
{ u=i*k+j; c=0.0;
for (l=0; l<=n-1; l++)
c=c+a[i*n+l]*b[l*k+j];
}
return;
}
main()
{ int i,j;
static double a[4][5]={ {1.0,3.0,-2.0,0.0,4.0},
{-2.0,-1.0,5.0,-7.0,2.0},
{0.0,8.0,4.0,1.0,-5.0},
{3.0,-3.0,2.0,-4.0,1.0}};
static double c[4][3],b[5][3]={ {4.0,5.0,-1.0},
{2.0,-2.0,6.0},{7.0,8.0,1.0},
{0.0,3.0,-5.0},{9.0,8.0,-6.0}};
double *ptra,*ptrb,*ptrc;
ptra=(double *)a;
ptrb=(double *)b;
ptrc=(double *)c;
trmul(ptra,ptrb,4,5,3,ptrc);
for (i=0; i<=3; i++)
{ for (j=0; j<=2; j++)
printf("%13.7e ",c[j]);
printf("\n");
}
printf("\n");
} |