Fortran Coder

标题: 请教关于点、边关联矩阵到边、边邻接矩阵的转化问题 [打印本页]

作者: goodlose    时间: 2015-1-13 15:29
标题: 请教关于点、边关联矩阵到边、边邻接矩阵的转化问题
问题描述:节点数为6(包括起始及终止节点,节点处管路可以有分支),管路数为5

矩阵A为
-1   0  0  0  0
1  -1  0  0  0
0   1 -1  0  0
0   0  1 -1 -1
0   0  0  1  0
0   0  0  0  1
上面这个为点边关联矩阵A(6X5),行号是节点号,列号是管路号(简单讲就是对一个有串并联管网的描述),边与节点相连,且边中流体流向节点,则矩阵元素为1,边与节点相连,且边中流体流离节点,则矩阵元素为-1,边与节点不相连,矩阵元素为0。对应的邻接矩阵为B(5X5)是管路之间关系的描述。只有当管路i流到管道j时对应B的元素B(i,j)=1,没有连通关系对应的元素值为0(如B(j,i),B(i,i),B(j,j)都为零),在每行中,元素为1对应的管路流到元素为-1对应的管路,
矩阵B为
0 1 0 0 0
0 0 1 0 0
0 0 0 1 1
0 0 0 0 0
0 0 0 0 0
最终实现从矩阵A到B的转化。我这样描述不知道清楚不,请大神帮忙看看,万分感激!

作者: goodlose    时间: 2015-1-13 15:33
自己顶一下
作者: li913    时间: 2015-1-13 20:29
[Fortran] 纯文本查看 复制代码
Program Test
  Implicit None
  Integer, Parameter :: M = 6, N = 5
  Integer G(N, M), W(N, N), I, J, K
G = reshape( (/ -1,   0,  0,  0,  0,&
                1,  -1,  0,  0,  0,&
                0,   1, -1,  0,  0,&
                0,   0,  1, -1, -1,&
                0,   0,  0,  1,  0,&
                0,   0,  0,  0,  1/), (/n,m/) )
  W = 0
  Do I = 1, N
    Do J = 1, M
      If (G(I,J)==1) Then
        Do K = 1, N
          If (G(K,J)==-1) W(K, I) = 1
        End Do
        Exit
      End If
    End Do
  End Do
  Write (*, '(5i4)') W
!   0   1   0   0   0
!   0   0   1   0   0
!   0   0   0   1   1
!   0   0   0   0   0
!   0   0   0   0   0

End Program Test

作者: goodlose    时间: 2015-1-17 20:08
li913 发表于 2015-1-13 20:29
[mw_shl_code=fortran,true]Program Test
  Implicit None
  Integer, Parameter :: M = 6, N = 5

3Q!已解决




欢迎光临 Fortran Coder (http://bbs.fcode.cn/) Powered by Discuz! X3.2