当前位置: 首页>>代码示例>>Python>>正文


Python SparseMatrix._smat[(i,j)]方法代码示例

本文整理汇总了Python中sympy.matrices.SparseMatrix._smat[(i,j)]方法的典型用法代码示例。如果您正苦于以下问题:Python SparseMatrix._smat[(i,j)]方法的具体用法?Python SparseMatrix._smat[(i,j)]怎么用?Python SparseMatrix._smat[(i,j)]使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在sympy.matrices.SparseMatrix的用法示例。


在下文中一共展示了SparseMatrix._smat[(i,j)]方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: LDL

# 需要导入模块: from sympy.matrices import SparseMatrix [as 别名]
# 或者: from sympy.matrices.SparseMatrix import _smat[(i,j)] [as 别名]
def LDL(mat):
    """
    Algorithm for numeric LDL factization, exploiting sparse structure.

    This function is a modification of scipy.sparse.SparseMatrix._LDL_sparse,
    allowing mpmath.mpi interval arithmetic objects as entries.

    L, D are SparseMatrix objects. However we assign values through _smat member
    to avoid type conversions to Rational.
    """
    Lrowstruc = mat.row_structure_symbolic_cholesky()
    print 'Number of entries in L: ', np.sum(map(len, Lrowstruc))
    L = SparseMatrix(mat.rows, mat.rows,
                     dict([((i, i), mpi(0)) for i in range(mat.rows)]))
    D = SparseMatrix(mat.rows, mat.cols, {})
    for i in range(len(Lrowstruc)):
        for j in Lrowstruc[i]:
            if i != j:
                L._smat[(i, j)] = mat._smat.get((i, j), mpi(0))
                summ = 0
                for p1 in Lrowstruc[i]:
                    if p1 < j:
                        for p2 in Lrowstruc[j]:
                            if p2 < j:
                                if p1 == p2:
                                    summ += L[i, p1]*L[j, p1]*D[p1, p1]
                            else:
                                break
                    else:
                        break
                L._smat[(i, j)] = L[i, j] - summ
                L._smat[(i, j)] = L[i, j] / D[j, j]

            elif i == j:
                D._smat[(i, i)] = mat._smat.get((i, i), mpi(0))
                summ = 0
                for k in Lrowstruc[i]:
                    if k < i:
                        summ += L[i, k]**2*D[k, k]
                    else:
                        break
                D._smat[(i, i)] -= summ

    return L, D
开发者ID:siudej,项目名称:nodal-line-exclusion,代码行数:46,代码来源:ldl_mpi.py


注:本文中的sympy.matrices.SparseMatrix._smat[(i,j)]方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。