c语言求基本关联矩阵

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

矿井通风网络论程序作业

学院:矿业学院专业:安全工程姓名:雷斌学号:********** 年级:2012 级任课教师:袁梅

2015年5 月 6 日

这是个5,7图,以树T={e2,e4,e6,e7}在前余树弦在后的顺序,求B1,C f , S f

下面是我所写程序,(是用C语言写的)

#include

#include

#include

#include

int m,n;

double **a,**b11,**b12,**zb11,**zb12,**nzb12,**c12,*C,*AA,*B,**sf,**s11,**cf,**B1; double *Q,*Z;

void Create_Omr(int m,int n);//创建原始矩阵变量函数

void Free_mr();

int brinv(double *a,int n);

void brmul(double a[], double b[],int m,int n,int k,double c[]);

void main()

{int i,j,M,k;

int t=0;

printf("输入m ");

scanf("%d",&m);

printf("输入n ");

scanf("%d",&n);

M=m-1;

Create_Omr(m,n);//调用创建动态数组函数

printf("输入起点Q[n]");

for (i=0;i

scanf("%lf",&Q[i]);

printf("输入终点Z[n]");

for (i=0;i

scanf("%lf",&Z[i]);

printf("<开始计算各个矩阵>\n");

for (i=0;i

for (j=0;j

a[i][j]=0.0;//初始化a的值全部置0

for(j=0;j

{ i=(int)Q[j]-1;

a[i][j]=1;

}

for(j=0;j

{ i=(int)Z[j]-1;

a[i][j]=-1;

}

printf("输出关联矩阵B\n");

for(i=0;i

{for(j=0;j

printf("%3d",(int)a[i][j]);

printf("\n");

}

printf("输入基本关联矩阵B");

scanf("%d",&k);

for(i=0;i

{

if(i==(k-1))

{ for(j=0;j

B1[i][j]=a[k][j];

t++;

}

else

for(j=0;j

B1[i][j]=a[i+t][j];

}

printf("输出基本关联矩阵B%d\n",k);

for(i=0;i

{for(j=0;j

printf("%3d",(int)B1[i][j]);

printf("\n");

}

for(i=0;i

for(j=0;j

b11[i][j]=B1[i][j];

for(i=0;i

for(j=n-m+1;j

b12[i][j-n+m-1]=B1[i][j];

for(i=0;i

for(j=0;j

zb11[j][i]=-(int)b11[i][j];

for(i=0;i

for(j=0;j

zb12[j][i]=b12[i][j];

/*从这里开始把二维数组接入一位数组,(因为动态二维数组分配的内存空间不是连续的,

所以用一个一维数组记录他的数据好传给逆矩阵的调用函数)*/

for (i=0; i

for(j=0;j

{

AA[i*(m-1)+j]=zb12[i][j];//这里必须给AA 和B赋值我把zb12赋值给它们不然是随机数

B[i*(m-1)+j]=zb12[i][j];

}

i=brinv(AA,M);//求逆矩阵调用函数

k=0;

for(i=0;i

for(j=0;j

{

nzb12[i][j]=AA[k];

k++;

}

for (i=0;i

for (j=0;j

c12[i][j]=0.0;

for (i=0;i

for (j=0;j

{

for (k=0;k

{

c12[i][j]=c12[i][j]+zb11[i][k]*nzb12[k][j];//矩阵的乘法}

}

}

for(i=0;i

for(j=0;j

if(i==j)

cf[i][j]=1.0;

else

cf[i][j]=0.0;

for(i=0;i

for(j=0;j

cf[i][j+n-m+1]=c12[i][j];

printf("独立回路矩阵cf:\n");//输出cf矩阵

for(i=0;i

{

for(j=0;j

printf("%3d",(int)cf[i][j]);

printf("\n");

}

for(i=0;i

for(j=0;j

s11[j][i]=-c12[i][j];

for(i=0;i

sf[i][i+n-m+1]=1;

for(i=0;i

for(j=0;j

sf[i][j]=s11[i][j];

printf("独立割集矩阵sf:\n");

for(i=0;i

{

for(j=0;j

printf("%3d",(int)sf[i][j]);

printf("\n");

}

相关文档
最新文档