本文整理汇总了Python中sage.combinat.root_system.root_system.RootSystem.from_vector方法的典型用法代码示例。如果您正苦于以下问题:Python RootSystem.from_vector方法的具体用法?Python RootSystem.from_vector怎么用?Python RootSystem.from_vector使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类sage.combinat.root_system.root_system.RootSystem
的用法示例。
在下文中一共展示了RootSystem.from_vector方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: energy_function
# 需要导入模块: from sage.combinat.root_system.root_system import RootSystem [as 别名]
# 或者: from sage.combinat.root_system.root_system.RootSystem import from_vector [as 别名]
#.........这里部分代码省略.........
sage: c.energy_function()
1
sage: [c.energy_function() for c in sorted(LS.list())]
[0, 1, 0, 0, 0, 1, 0, 1, 0]
The next test checks that the energy function is constant on classically connected components::
sage: R = RootSystem(['A',2,1])
sage: La = R.weight_space().basis()
sage: LS = CrystalOfProjectedLevelZeroLSPaths(2*La[1]+La[2])
sage: G = LS.digraph(index_set=[1,2])
sage: C = G.connected_components()
sage: [all(c[0].energy_function()==a.energy_function() for a in c) for c in C]
[True, True, True, True]
sage: R = RootSystem(['D',4,2])
sage: La = R.weight_space().basis()
sage: LS = CrystalOfProjectedLevelZeroLSPaths(La[2])
sage: J = R.cartan_type().classical().index_set()
sage: hw = [x for x in LS if x.is_highest_weight(J)]
sage: [(x.weight(), x.energy_function()) for x in hw]
[(-2*Lambda[0] + Lambda[2], 0), (-2*Lambda[0] + Lambda[1], 1), (0, 2)]
sage: G = LS.digraph(index_set=J)
sage: C = G.connected_components()
sage: [all(c[0].energy_function()==a.energy_function() for a in c) for c in C]
[True, True, True]
sage: R = RootSystem(CartanType(['G',2,1]).dual())
sage: La = R.weight_space().basis()
sage: LS = CrystalOfProjectedLevelZeroLSPaths(La[1]+La[2])
sage: G = LS.digraph(index_set=[1,2])
sage: C = G.connected_components()
sage: [all(c[0].energy_function()==a.energy_function() for a in c) for c in C]
[True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]
sage: ct = CartanType(['BC',2,2]).dual()
sage: R = RootSystem(ct)
sage: La = R.weight_space().basis()
sage: LS = CrystalOfProjectedLevelZeroLSPaths(2*La[1]+La[2])
sage: G = LS.digraph(index_set=R.cartan_type().classical().index_set())
sage: C = G.connected_components()
sage: [all(c[0].energy_function()==a.energy_function() for a in c) for c in C]
[True, True, True, True, True, True, True, True, True, True, True]
sage: R = RootSystem(['BC',2,2])
sage: La = R.weight_space().basis()
sage: LS = CrystalOfProjectedLevelZeroLSPaths(2*La[1]+La[2])
sage: G = LS.digraph(index_set=R.cartan_type().classical().index_set())
sage: C = G.connected_components()
sage: [all(c[0].energy_function()==a.energy_function() for a in c) for c in C]
[True, True, True, True, True, True, True, True, True, True, True, True, True, True, True,
True, True, True, True, True, True, True, True, True, True, True, True, True, True, True, True]
"""
weight = self.parent().weight
P = weight.parent()
c_weight = P.classical()(weight)
ct = P.cartan_type()
cartan = ct.classical()
Qv = RootSystem(cartan).coroot_lattice()
W = WeylGroup(cartan,prefix='s')
J = tuple(weight.weyl_stabilizer())
L = self.weyl_group_representation()
if ct.is_untwisted_affine() or ct.type() == 'BC':
untwisted = True
G = W.quantum_bruhat_graph(J)
else:
untwisted = False
cartan_dual = cartan.dual()
Wd = WeylGroup(cartan_dual, prefix='s')
G = Wd.quantum_bruhat_graph(J)
Qd = RootSystem(cartan_dual).root_lattice()
dualize = lambda x: Qv.from_vector(x.to_vector())
L = [Wd.from_reduced_word(x.reduced_word()) for x in L]
def stretch_short_root(a):
# stretches roots by translation factor
if ct.dual().type() == 'BC':
return ct.c()[a.to_simple_root()]*a
return ct.dual().c()[a.to_simple_root()]*a
#if a.is_short_root():
# if cartan_dual.type() == 'G':
# return 3*a
# else:
# return 2*a
#return a
paths = [G.shortest_path(L[i+1],L[i]) for i in range(len(L)-1)]
paths_labels = [[G.edge_label(p[i],p[i+1]) for i in range(len(p)-1) if p[i].length()+1 != p[i+1].length()] for p in paths]
scalars = self.scalar_factors()
if untwisted:
s = sum((1-scalars[i])*c_weight.scalar( Qv.sum(root.associated_coroot()
for root in paths_labels[i]) ) for i in range(len(paths_labels)))
if ct.type() == 'BC':
return 2*s
else:
return s
else:
s = sum((1-scalars[i])*c_weight.scalar( dualize (Qd.sum(stretch_short_root(root) for root in paths_labels[i])) ) for i in range(len(paths_labels)))
if ct.dual().type() == 'BC':
return s/2
else:
return s