simutil.py 文件源码

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

项目:hylaa 作者: stanleybak 项目源码 文件源码
def make_banded_jacobian(self):
        '''returns a banded jacobian list (in odeint's format), along with mu and ml parameters'''

        assert not self.sparse

        if self.dense_a_matrix is None:
            self.dense_a_matrix = self.sparse_a_matrix.toarray()

        matrix = self.dense_a_matrix

        # first find the values of mu and ml
        dims = matrix.shape[0]
        assert dims == matrix.shape[1]
        mu = 0
        ml = 0

        for row in xrange(dims):
            for col in xrange(dims):
                if matrix[row][col] != 0:
                    if col > row:
                        dif = col - row
                        mu = max(mu, dif)
                    else:
                        dif = row - col
                        ml = max(ml, dif)

        banded = []

        for yoffset in xrange(-mu, ml+1):
            row = []

            for diag in xrange(dims):
                x_index = diag
                y_index = diag + yoffset

                if y_index < 0 or y_index >= dims:
                    row.append(0.0)
                else:
                    row.append(matrix[y_index][x_index])

            banded.append(row)

        return (banded, mu, ml)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号