c语言求基本关联矩阵
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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"); }