我们从Python开源项目中,提取了以下1个代码示例,用于说明如何使用sympy.diag()。
def construct_explicit_matrix(name, n, m, symmetric=False, diagonal=0, dynamic=False, **kwass): """ construct a matrix of symbolic elements Parameters ---------- name : string Base name for variables; each variable is name_ij, which admitedly only works clearly for n,m < 10 n : int Number of rows m : int Number of columns symmetric : bool, optional Use to enforce a symmetric matrix (repeat symbols above/below diagonal) diagonal : bool, optional Zeros out off diagonals. Takes precedence over symmetry. dynamic : bool, optional Whether to use sympy.physics.mechanics dynamicsymbol. If False, use sp.symbols kwargs : dict remaining kwargs passed to symbol function Returns ------- matrix : sympy Matrix The Matrix containing explicit symbolic elements """ if dynamic: symbol_func = dynamicsymbols else: symbol_func = sp.symbols if n != m and (diagonal or symmetric): raise ValueError("Cannot make symmetric or diagonal if n != m") if diagonal: return sp.diag( *[symbol_func( name+'_{}{}'.format(i+1, i+1), **kwass) for i in range(m)]) else: matrix = sp.Matrix([ [symbol_func(name+'_{}{}'.format(j+1, i+1), **kwass) for i in range(m)] for j in range(n) ]) if symmetric: for i in range(1, m): for j in range(i): matrix[i, j] = matrix[j, i] return matrix