Python中的矩阵和逆矩阵

Python中的矩阵和逆矩阵,python,matrix,networkx,matrix-inverse,Python,Matrix,Networkx,Matrix Inverse,对于我正在做的项目,我使用NetworkX adj_matrix()函数将我使用NetworkX创建的图形分解为邻接矩阵。然而,我遇到的一个问题是,当我试图找到矩阵的逆矩阵时,我分解的每个图都会给我以下错误 str: Traceback (most recent call last): File "C:\eclipse\plugins\org.python.pydev.debug_1.4.7.2843\pysrc\pydevd_resolver.py", line 179, in _getP

对于我正在做的项目,我使用NetworkX adj_matrix()函数将我使用NetworkX创建的图形分解为邻接矩阵。然而,我遇到的一个问题是,当我试图找到矩阵的逆矩阵时,我分解的每个图都会给我以下错误

str: Traceback (most recent call last):
  File "C:\eclipse\plugins\org.python.pydev.debug_1.4.7.2843\pysrc\pydevd_resolver.py", line 179, in _getPyDictionary
    attr = getattr(var, n)
  File "C:\Python26\lib\site-packages\numpy\core\defmatrix.py", line 519, in getI
    return asmatrix(func(self))
  File "C:\Python26\lib\site-packages\numpy\linalg\linalg.py", line 355, in inv
    return wrap(solve(a, identity(a.shape[0], dtype=a.dtype)))
  File "C:\Python26\lib\site-packages\numpy\linalg\linalg.py", line 254, in solve
    raise LinAlgError, 'Singular matrix'
LinAlgError: Singular matrix

我试着从5个不同的图中生成邻接矩阵,当我试图找到邻接矩阵的逆矩阵时,它们都产生了相同的错误。我提出的问题是,是否有办法从NetworkX图形到矩阵。从这里开始,我最好的行动方案是什么?我意识到还有其他关于矩阵逆的问题,但我的问题有点受到限制,因为我需要图邻接矩阵

您是否需要一种方法来生成邻接矩阵非奇异的图?networkx或numpy的错误并不在于生成的图形具有没有逆的邻接矩阵。

邻接矩阵是。在这个问题上有很多不同的观点;我不确定对应的图是否有任何简单的特征。一种实用的方法是捕获代码中的LinalError异常(尝试…除非…),并在邻接矩阵不可逆时发出警告(否则继续执行计算)。

我不知道networkx是如何生成邻接矩阵的,但绝对没有理由让它可逆。例如,考虑完整的图(所有节点都相互连接),它的相容矩阵是满的,并且矩阵具有明显的0作为特征值(只要节点的数目是>2,当然…)。或有N个节点且无边的图,其邻接矩阵为0

你想做什么?我不必考虑邻接矩阵的倒数,但经常是对某些(小)x值的<代码> i -x a < /代码>的逆。它的反面是

(I - x A) ^(-1) = I + xA + x^2 A2 + ... (I-xA)^(-1)=I+xA+x^2a2+。。。
这对于x的某个值是可逆的(事实上,我认为只要| x |我所做的事情需要邻接表的倒数。我试图找到一个图中的路径集合的总和(Katz测度),它可以通过利用图的邻接矩阵来找到。公式如下。Katz=((I-xA)^-1)-有趣。如果两点之间有无限多条路径(当图形中有循环时会发生),那么我猜您无法执行反转(结果是无限的)。也许这就是你遇到的问题?例如,你可以用一个非循环图来尝试你的例程。顺便说一句,你提供的公式实际上与我要做的非常相似。我试图找到一个图中的路径集合的总和(Katz测度),它可以通过利用图的邻接矩阵来找到。公式如下。Katz=((I-xA)^-1)-I(其中I是逆矩阵,'x'是一个小常数)。正如我所说的,如果x足够低,它(I-xA)是可逆的。为了确保这一点,您可以对A的特征值进行分类,并相应地选择x。请注意,这与尝试反转A本身并不是一回事……我正在使用Networkx standard Graph()对象,然后使用add_Edge()和add_node()慢慢地开始向其添加节点。顺便说一句,真棒的阿凡达。