matrices.py 文件源码

python
阅读 33 收藏 0 点赞 0 评论 0

项目:Python-iBeacon-Scan 作者: NikNitro 项目源码 文件源码
def _matrix_pow_by_jordan_blocks(self, num):
        from sympy.matrices import diag, MutableMatrix
        from sympy import binomial

        def jordan_cell_power(jc, n):
            N = jc.shape[0]
            l = jc[0, 0]
            if l == 0 and (n < N - 1) != False:
                raise ValueError("Matrix det == 0; not invertible")
            elif l == 0 and N > 1 and n % 1 != 0:
                raise ValueError("Non-integer power cannot be evaluated")
            for i in range(N):
                for j in range(N-i):
                    bn = binomial(n, i)
                    if isinstance(bn, binomial):
                        bn = bn._eval_expand_func()
                    jc[j, i+j] = l**(n-i)*bn

        P, jordan_cells = self.jordan_cells()
        # Make sure jordan_cells matrices are mutable:
        jordan_cells = [MutableMatrix(j) for j in jordan_cells]
        for j in jordan_cells:
            jordan_cell_power(j, num)
        return self._new(P*diag(*jordan_cells)*P.inv())
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号