本文整理汇总了Python中sympy.matrices.SparseMatrix._smat[(i,i)]方法的典型用法代码示例。如果您正苦于以下问题:Python SparseMatrix._smat[(i,i)]方法的具体用法?Python SparseMatrix._smat[(i,i)]怎么用?Python SparseMatrix._smat[(i,i)]使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sympy.matrices.SparseMatrix
的用法示例。
在下文中一共展示了SparseMatrix._smat[(i,i)]方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: LDL
# 需要导入模块: from sympy.matrices import SparseMatrix [as 别名]
# 或者: from sympy.matrices.SparseMatrix import _smat[(i,i)] [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