> So I have this SAGE code which takes in two integers q and n and it
> generates ~ (q^3)^(n^2) 0/1 matrices and does a sum of their characteristic
> polynomials.
>
> I got answers for (q = 3, n = 2), (q =2 , n = 3) and (q=2, n=2)
>
> For any higher number the code runs for ~1hr and then it says,
>
> "
>
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> File "_sage_input_2.py", line 10, in <module>
> exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8
> -*-\\n" +
> _support_.preparse_worksheet_cell(base64.b64decode("UA=="),globals())+"\\n");
> execfile(os.path.abspath("___code___.py"))
> File "", line 1, in <module>
>
> File "/tmp/tmpPiPIoq/___code___.py", line 2, in <module>
> exec compile(u'P
> File "", line 1, in <module>
>
> "
>
>
> Can someone help understand what is going on?
>
> Like any suggestion about how to go about it?
>
I cannot reproduce this error:
q=2; n =2
rep = [ matrix ([[1, 0, 0, 0], [0, 0, 0, 1], [0, 1, 0, 0], [0, 0, 1,
0]] ), matrix ([[1, 0, 0, 0], [0, 0, 0, 1], [0, 0, 1, 0], [0, 1, 0,
0]] ) , matrix ([[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0, 1], [0, 0, 1,
0]] ) , matrix ( [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 1, 0], [0, 0, 0,
1]] ) , matrix ( [[1, 0, 0, 0], [0, 0, 1, 0], [0, 0, 0, 1], [0, 1, 0,
0]]) , matrix ([[1, 0, 0, 0], [0, 0, 1, 0], [0, 1, 0, 0], [0, 0, 0,
1]] ) ]
Edge = [(0, 2), (0, 3), (1, 2), (1, 3)]
P = 0
from itertools import product
from itertools import izip
for X in product(rep,repeat = len (Edge)):
k = izip(Edge,X)
M = [[matrix(q^2, q^2, 0)]*(2*n) for _ in range(2*n)]
for ((a,b),Y) in k:
M[a][b] = Y
M[b][a] = Y.inverse()
Z = block_matrix(M)
P = P + Z.charpoly(x)
print P
gives
1296*x^16 - 20736*x^14 + 129600*x^12 - 393984*x^10 + 584496*x^8 -
362880*x^6 + 62208*x^4
>
>
> EDIT:
>
> This is basically the main time-consuming step.
>
> At this point "rep" comes in as a ~q^3 size list of q^2 dimensional 0/1
> permutation matrices.
> And "Edge" is a list of integer tuples where each tuple is of the form (a,b)
> with a,b being from the set {0,1,2,3...,(2n-1)}
>
> P = 0
> from itertools import product
> from itertools import izip
>
> for X in product(rep,repeat = len (Edge)):
> k = izip(Edge,X)
> M = [[matrix(q^2, q^2, 0)]*(2*n) for _ in range(2*n)]
> for ((a,b),Y) in k:
> M [a][b] = Y
> M [b][a] = Y.inverse()
> Z = block_matrix(M)
> P = P + Z.charpoly(x)
>
> The polynomial P is the final expected answer.
>
> (and for any larger value of q and n than the 3 cases mentioned the program
> basically stops with no output for P and with the above pasted message)
>