C1 = circle((0,0),1)
C2 = circle((0,0),2)
D3 = point([(cos(theta),sin(theta)) for theta in srange(0,2*pi,2*pi/3)],color='red')
D4 = point([(2*cos(theta),2*sin(theta)) for theta in srange(0,2*pi,2*pi/5)])
P4 = point([(cos(2*pi*4/3),sin(2*pi*4/3)), (2*cos(2*pi*4/5),2*sin(2*pi*4/5))],color='green',size=30)
C6 = circle((6,0),3)
D7 = point([(6+3*cos(theta),3*sin(theta)) for theta in srange(0,2*pi,2*pi/15)],color='red')
P8 = point([(6+3*cos(2*pi*4/15),3*sin(2*pi*4/15))], color='green',size=30)
(C1+C2+D3+D4+P4+C6+D7+P8).show()
# Cycle graphs
# Ignore code until images
def circulae(L):
n=len(L)
return [L[j:j+2] for j in range(n-1)] + [[L[-1],L[0]]]
def circulaf(L,j):
li = circulae(L)
return [v+[j] for v in li]
G= CyclicPermutationGroup(4).direct_product(CyclicPermutationGroup(4))[0]; G
def GraphOfCycles(G):
CYCLES = []
for g in G:
c = g.powers(g.order())
CYCLES.append(Set(c))
SC = Set(CYCLES)
REDUNDANT = []
for A in SC:
for B in SC:
if A.issubset(B) and A.cardinality() < B.cardinality():
REDUNDANT.append(A)
SR = Set(REDUNDANT)
IRRCYC = SC.difference(SR)
VERT = G.list()
EDG = []
for s in IRRCYC:
EDG= EDG + circulae(s)
return Graph([VERT,EDG])
def Cdirprod(L):
G = CyclicPermutationGroup(1)
for b in L:
H = CyclicPermutationGroup(b)
G = G.direct_product(H)[0]
return G