⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cmatrmul.c

📁 提供大量C代码来实现不同功能
💻 C
字号:

#include "stdio.h"

void CMatrixMul(ar,ai,br,bi,m,n,k,cr,ci) /*复矩阵相乘*/
int m,n,k; /*m是矩阵A的行数,n是矩阵B的行数,k是矩阵B的列数*/
/*ar,br,cr分别是矩阵A,B,C的实部,ai,bi,ci分别是矩阵A,B, C的虚部*/
double ar[],ai[],br[],bi[],cr[],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;
}
main()
{
	int i,j;
	static double cr[3][4],ci[3][4];
	static double ar[3][4]={ {1.0,2.0,3.0,-2.0}, /*矩阵A的实部*/
							{1.0,5.0,1.0,3.0},
							{0.0,4.0,2.0,-1.0}};
	static double ai[3][4]={ {1.0,-1.0,2.0,1.0}, /*矩阵A的虚部*/
							{-1.0,-1.0,2.0,0.0},
							{-3.0,-1.0,2.0,2.0}};
	static double br[4][4]={ {1.0,4.0,5.0,-2.0}, /*矩阵B的实部*/
							{3.0,0.0,2.0,-1.0},
							{6.0,3.0,1.0,2.0},
							{2.0,-3.0,-2.0,1.0}};
	static double bi[4][4]={ {-1.0,-1.0,1.0,1.0}, /*矩阵B的虚部*/
							{2.0,1.0,0.0,5.0},
							{-3.0,2.0,1.0,-1.0},
							{-1.0,-2.0,1.0,-2.0}};
	CMatrixMul(ar,ai,br,bi,3,4,4,cr,ci); /*进行计算*/
	/*输出乘积结果的实部*/
	printf("C的实部:\n");
	for (i=0; i<=2; i++)
	{ 
		for (j=0; j<=3; j++)
			printf("%13.7f\t",cr[i][j]);
		printf("\n");
	}
	printf("\n\n");
	/*输出乘积结果的虚部*/
	printf("C的虚部:\n");
	for (i=0; i<=2; i++)
	{ 
		for (j=0; j<=3; j++)
			printf("%13.7f\t",ci[i][j]);
		printf("\n");
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -