本文整理汇总了Python中sage.combinat.root_system.cartan_type.CartanType.rows方法的典型用法代码示例。如果您正苦于以下问题:Python CartanType.rows方法的具体用法?Python CartanType.rows怎么用?Python CartanType.rows使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sage.combinat.root_system.cartan_type.CartanType
的用法示例。
在下文中一共展示了CartanType.rows方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: __classcall_private__
# 需要导入模块: from sage.combinat.root_system.cartan_type import CartanType [as 别名]
# 或者: from sage.combinat.root_system.cartan_type.CartanType import rows [as 别名]
def __classcall_private__(cls, data, base_ring=None, index_set=None):
"""
Normalize arguments to ensure a unique representation.
EXAMPLES::
sage: W1 = CoxeterGroup(['A',2], implementation="reflection", base_ring=UniversalCyclotomicField())
sage: W2 = CoxeterGroup([[1,3],[3,1]], index_set=(1,2))
sage: W1 is W2
True
sage: G1 = Graph([(1,2)])
sage: W3 = CoxeterGroup(G1)
sage: W1 is W3
True
sage: G2 = Graph([(1,2,3)])
sage: W4 = CoxeterGroup(G2)
sage: W1 is W4
True
Check with `\infty` because of the hack of using `-1` to represent
`\infty` in the Coxeter matrix::
sage: G = Graph([(0, 1, 3), (1, 2, oo)])
sage: W1 = CoxeterGroup(matrix([[1, 3, 2], [3,1,-1], [2,-1,1]]))
sage: W2 = CoxeterGroup(G)
sage: W1 is W2
True
sage: CoxeterGroup(W1.coxeter_graph()) is W1
True
"""
if isinstance(data, CartanType_abstract):
if index_set is None:
index_set = data.index_set()
data = data.coxeter_matrix()
elif isinstance(data, Graph):
G = data
n = G.num_verts()
# Setup the basis matrix as all 2 except 1 on the diagonal
data = matrix(ZZ, [[2] * n] * n)
for i in range(n):
data[i, i] = ZZ.one()
verts = G.vertices()
for e in G.edges():
m = e[2]
if m is None:
m = 3
elif m == infinity or m == -1: # FIXME: Hack because there is no ZZ\cup\{\infty\}
m = -1
elif m <= 1:
raise ValueError("invalid Coxeter graph label")
i = verts.index(e[0])
j = verts.index(e[1])
data[j, i] = data[i, j] = m
if index_set is None:
index_set = G.vertices()
else:
try:
data = matrix(data)
except (ValueError, TypeError):
data = CartanType(data).coxeter_matrix()
if not data.is_symmetric():
raise ValueError("the Coxeter matrix is not symmetric")
if any(d != 1 for d in data.diagonal()):
raise ValueError("the Coxeter matrix diagonal is not all 1")
if any(val <= 1 and val != -1 for i, row in enumerate(data.rows()) for val in row[i + 1 :]):
raise ValueError("invalid Coxeter label")
if index_set is None:
index_set = range(data.nrows())
if base_ring is None:
base_ring = UniversalCyclotomicField()
data.set_immutable()
return super(CoxeterMatrixGroup, cls).__classcall__(cls, data, base_ring, tuple(index_set))