Koopmann Project

1252 days ago by cama5144

In this cell we generate a list of the points in an M by N grid.

# Set the values of M and N. These are the number of rows and columns in the grid. M=9 N=M xMin = 1 xMax = xMin+M-1 yMin = xMin yMax = yMin+N-1 # Generate a list of points in the grid, following a diagonal numbering scheme. gridList = [] for diagSum in range(xMin+yMin, xMax+yMax+1): x = max(xMin, diagSum-xMax) y = diagSum-x while x <= xMax and y >= yMin: gridList.append(vector([x,y])) x += 1 y -= 1 print gridList 
       
[(1, 1), (1, 2), (2, 1), (1, 3), (2, 2), (3, 1), (1, 4), (2, 3), (3, 2),
(4, 1), (1, 5), (2, 4), (3, 3), (4, 2), (5, 1), (1, 6), (2, 5), (3, 4),
(4, 3), (5, 2), (6, 1), (1, 7), (2, 6), (3, 5), (4, 4), (5, 3), (6, 2),
(7, 1), (1, 8), (2, 7), (3, 6), (4, 5), (5, 4), (6, 3), (7, 2), (8, 1),
(1, 9), (2, 8), (3, 7), (4, 6), (5, 5), (6, 4), (7, 3), (8, 2), (9, 1),
(2, 9), (3, 8), (4, 7), (5, 6), (6, 5), (7, 4), (8, 3), (9, 2), (3, 9),
(4, 8), (5, 7), (6, 6), (7, 5), (8, 4), (9, 3), (4, 9), (5, 8), (6, 7),
(7, 6), (8, 5), (9, 4), (5, 9), (6, 8), (7, 7), (8, 6), (9, 5), (6, 9),
(7, 8), (8, 7), (9, 6), (7, 9), (8, 8), (9, 7), (8, 9), (9, 8), (9, 9)]
[(1, 1), (1, 2), (2, 1), (1, 3), (2, 2), (3, 1), (1, 4), (2, 3), (3, 2), (4, 1), (1, 5), (2, 4), (3, 3), (4, 2), (5, 1), (1, 6), (2, 5), (3, 4), (4, 3), (5, 2), (6, 1), (1, 7), (2, 6), (3, 5), (4, 4), (5, 3), (6, 2), (7, 1), (1, 8), (2, 7), (3, 6), (4, 5), (5, 4), (6, 3), (7, 2), (8, 1), (1, 9), (2, 8), (3, 7), (4, 6), (5, 5), (6, 4), (7, 3), (8, 2), (9, 1), (2, 9), (3, 8), (4, 7), (5, 6), (6, 5), (7, 4), (8, 3), (9, 2), (3, 9), (4, 8), (5, 7), (6, 6), (7, 5), (8, 4), (9, 3), (4, 9), (5, 8), (6, 7), (7, 6), (8, 5), (9, 4), (5, 9), (6, 8), (7, 7), (8, 6), (9, 5), (6, 9), (7, 8), (8, 7), (9, 6), (7, 9), (8, 8), (9, 7), (8, 9), (9, 8), (9, 9)]

In this cell we define two useful functions for scaling vectors and rounding their coordinates. These functions should work for vectors in any dimension.

# This function allows us to get the unique unit vector which points in the same direction as v. If v=0, this returns the zero vector. def normOne(v): vNew = vector([0,0]) if v.norm() == 0: vNew = v else: vNew = v / v.norm() return vNew # This function scales a vector to have norm about 1000 and then rounds to integer coordinates with the original values modulo M. def scaleModM(v): scaleV = 1000*normOne(v) # Round to nearest multiple of M, then add on the desired value modulo M. vNew = vector([ M*floor(scaleV[i]/M) + ZZ(mod(v[i],M)) for i in range(v.length()) ]) return vNew 
       

In this cell I compute all of the matrices needed for the final impedance function.

# These are the fields we will need. The abstract field UCF is better for computations, but final results will print as complex numbers. C = ComplexField(12) # The number in parentheses indicates the precision in bits. UCF = UniversalCyclotomicField() zeta = UCF.gen(M) # This is a primitive Mth root of 1. # Compute the dot product (=p*m+q*n) over all pairs of points (p,q) and (m,n) in the M by N grid. # This gives the same result modulo M as if we had used the adjusted (scaled and rounded) grid, so it's the same DFT. dotMatrix = matrix(ZZ, M*N, M*N, lambda i, j: gridList[i].dot_product(gridList[j])) # Discrete Fourier Transform matrices. gMatrix = matrix(UCF, M*N, M*N, lambda i, j: zeta^(-dotMatrix[i,j])/M) ghMatrix = matrix(UCF, M*N, M*N, lambda i, j: gMatrix[i,j].conjugate()) # Rescale the points of the grid so that each has norm one. adjustedGrid = [scaleModM(point) for point in gridList] unitAdjustedGrid = [normOne(point) for point in adjustedGrid] unitAdjustedGridC = [C(point[0], point[1]) for point in unitAdjustedGrid] #unitGridList = [normOne(point) for point in gridList] #unitGridListC = [C(point[0], point[1]) for point in unitGridList] waveMatrix = diagonal_matrix(unitAdjustedGridC) # Impedance function. zMatrix = gMatrix*waveMatrix*ghMatrix 
       
# Test the impedance function on an acoustic field with a known analytic solution. velocities = vector([.707]*M^2) zMatrix*velocities 
       

                                
                            

                                

In this cell I save all of the relevant matrices to .csv files so that they can be viewed in spreadsheets. I also print the final impedance function.

# Rewrite the entries of the matrix using their coordinates in the complex plane. gMatrixC = matrix(C, M^2, M^2, lambda i, j: C(gMatrix[i,j])) waveMatrixC = matrix(C, M^2, M^2, lambda i,j: C(waveMatrix[i,j])) zMatrixC = matrix(C, M^2, M^2, lambda i, j: C(zMatrix[i,j])) # Save the matrices to comma-separated-value (CSV) files. import csv with open('dotmatrix.csv', 'w') as f: c = csv.writer(f) c.writerows(dotMatrix) with open('gmatrix.csv', 'w') as f: c = csv.writer(f) c.writerows(gMatrixC) with open('wavematrix.csv', 'w') as f: c = csv.writer(f) c.writerows(waveMatrixC) with open('zcmatrix.csv', 'w') as f: c = csv.writer(f) c.writerows(zMatrixC) zMatrixC 
       
WARNING: Output truncated!  
full_output.txt



WARNING: Output truncated!  
full_output.txt



This cell contains computations of scaled grid values which give the correct DFT matrix. It is not used in the computations above.

R = RealField(22) # Number in parentheses indicates bits of precision. for i in range(len(gridList)): print(gridList[i]) print(scaleModM(gridList[i])) print(normOne(scaleModM(gridList[i]))-normOne(gridList[i])) print "---" 
       
WARNING: Output truncated!  
full_output.txt



(1, 1)
(703, 703)
(0, 0)
---
(1, 2)
(442, 893)
(442/992813*sqrt(992813) - 1/5*sqrt(5), 893/992813*sqrt(992813) -
2/5*sqrt(5))
---
(2, 1)
(893, 442)
(893/992813*sqrt(992813) - 2/5*sqrt(5), 442/992813*sqrt(992813) -
1/5*sqrt(5))
---
(1, 3)
(316, 948)
(0, 0)
---
(2, 2)
(704, 704)
(0, 0)
---
(3, 1)
(948, 316)
(0, 0)
---
(1, 4)
(235, 967)
(235/990314*sqrt(990314) - 1/17*sqrt(17), 967/990314*sqrt(990314) -
4/17*sqrt(17))
---
(2, 3)
(551, 831)
(551/994162*sqrt(994162) - 2/13*sqrt(13), 831/994162*sqrt(994162) -
3/13*sqrt(13))
---
(3, 2)
(831, 551)
(831/994162*sqrt(994162) - 3/13*sqrt(13), 551/994162*sqrt(994162) -
2/13*sqrt(13))
---
(4, 1)
(967, 235)
(967/990314*sqrt(990314) - 4/17*sqrt(17), 235/990314*sqrt(990314) -
1/17*sqrt(17))
---
(1, 5)
(190, 977)
(190/990629*sqrt(990629) - 1/26*sqrt(26), 977/990629*sqrt(990629) -
5/26*sqrt(26))
---
(2, 4)
(443, 895)
(443/997274*sqrt(997274) - 1/5*sqrt(5), 895/997274*sqrt(997274) -
2/5*sqrt(5))
---
(3, 3)
(705, 705)
(0, 0)
---
(4, 2)
(895, 443)
(895/997274*sqrt(997274) - 2/5*sqrt(5), 443/997274*sqrt(997274) -
1/5*sqrt(5))
---
(5, 1)
(977, 190)
(977/990629*sqrt(990629) - 5/26*sqrt(26), 190/990629*sqrt(990629) -
1/26*sqrt(26))

...

(5, 9)
(482, 873)
(482/994453*sqrt(994453) - 5/106*sqrt(106), 873/994453*sqrt(994453) -
9/106*sqrt(106))
---
(6, 8)
(600, 800)
(0, 0)
---
(7, 7)
(709, 709)
(0, 0)
---
(8, 6)
(800, 600)
(0, 0)
---
(9, 5)
(873, 482)
(873/994453*sqrt(994453) - 9/106*sqrt(106), 482/994453*sqrt(994453) -
5/106*sqrt(106))
---
(6, 9)
(555, 828)
(185/110401*sqrt(110401) - 2/13*sqrt(13), 276/110401*sqrt(110401) -
3/13*sqrt(13))
---
(7, 8)
(664, 755)
(664/1010921*sqrt(1010921) - 7/113*sqrt(113), 755/1010921*sqrt(1010921)
- 8/113*sqrt(113))
---
(8, 7)
(755, 664)
(755/1010921*sqrt(1010921) - 8/113*sqrt(113), 664/1010921*sqrt(1010921)
- 7/113*sqrt(113))
---
(9, 6)
(828, 555)
(276/110401*sqrt(110401) - 3/13*sqrt(13), 185/110401*sqrt(110401) -
2/13*sqrt(13))
---
(7, 9)
(619, 783)
(619/39850*sqrt(1594) - 7/130*sqrt(130), 783/39850*sqrt(1594) -
9/130*sqrt(130))
---
(8, 8)
(710, 710)
(0, 0)
---
(9, 7)
(783, 619)
(783/39850*sqrt(1594) - 9/130*sqrt(130), 619/39850*sqrt(1594) -
7/130*sqrt(130))
---
(8, 9)
(665, 747)
(665/1000234*sqrt(1000234) - 8/145*sqrt(145), 747/1000234*sqrt(1000234)
- 9/145*sqrt(145))
---
(9, 8)
(747, 665)
(747/1000234*sqrt(1000234) - 9/145*sqrt(145), 665/1000234*sqrt(1000234)
- 8/145*sqrt(145))
---
(9, 9)
(702, 702)
(0, 0)
---
WARNING: Output truncated!  
full_output.txt



(1, 1)
(703, 703)
(0, 0)
---
(1, 2)
(442, 893)
(442/992813*sqrt(992813) - 1/5*sqrt(5), 893/992813*sqrt(992813) - 2/5*sqrt(5))
---
(2, 1)
(893, 442)
(893/992813*sqrt(992813) - 2/5*sqrt(5), 442/992813*sqrt(992813) - 1/5*sqrt(5))
---
(1, 3)
(316, 948)
(0, 0)
---
(2, 2)
(704, 704)
(0, 0)
---
(3, 1)
(948, 316)
(0, 0)
---
(1, 4)
(235, 967)
(235/990314*sqrt(990314) - 1/17*sqrt(17), 967/990314*sqrt(990314) - 4/17*sqrt(17))
---
(2, 3)
(551, 831)
(551/994162*sqrt(994162) - 2/13*sqrt(13), 831/994162*sqrt(994162) - 3/13*sqrt(13))
---
(3, 2)
(831, 551)
(831/994162*sqrt(994162) - 3/13*sqrt(13), 551/994162*sqrt(994162) - 2/13*sqrt(13))
---
(4, 1)
(967, 235)
(967/990314*sqrt(990314) - 4/17*sqrt(17), 235/990314*sqrt(990314) - 1/17*sqrt(17))
---
(1, 5)
(190, 977)
(190/990629*sqrt(990629) - 1/26*sqrt(26), 977/990629*sqrt(990629) - 5/26*sqrt(26))
---
(2, 4)
(443, 895)
(443/997274*sqrt(997274) - 1/5*sqrt(5), 895/997274*sqrt(997274) - 2/5*sqrt(5))
---
(3, 3)
(705, 705)
(0, 0)
---
(4, 2)
(895, 443)
(895/997274*sqrt(997274) - 2/5*sqrt(5), 443/997274*sqrt(997274) - 1/5*sqrt(5))
---
(5, 1)
(977, 190)
(977/990629*sqrt(990629) - 5/26*sqrt(26), 190/990629*sqrt(990629) - 1/26*sqrt(26))

...

(5, 9)
(482, 873)
(482/994453*sqrt(994453) - 5/106*sqrt(106), 873/994453*sqrt(994453) - 9/106*sqrt(106))
---
(6, 8)
(600, 800)
(0, 0)
---
(7, 7)
(709, 709)
(0, 0)
---
(8, 6)
(800, 600)
(0, 0)
---
(9, 5)
(873, 482)
(873/994453*sqrt(994453) - 9/106*sqrt(106), 482/994453*sqrt(994453) - 5/106*sqrt(106))
---
(6, 9)
(555, 828)
(185/110401*sqrt(110401) - 2/13*sqrt(13), 276/110401*sqrt(110401) - 3/13*sqrt(13))
---
(7, 8)
(664, 755)
(664/1010921*sqrt(1010921) - 7/113*sqrt(113), 755/1010921*sqrt(1010921) - 8/113*sqrt(113))
---
(8, 7)
(755, 664)
(755/1010921*sqrt(1010921) - 8/113*sqrt(113), 664/1010921*sqrt(1010921) - 7/113*sqrt(113))
---
(9, 6)
(828, 555)
(276/110401*sqrt(110401) - 3/13*sqrt(13), 185/110401*sqrt(110401) - 2/13*sqrt(13))
---
(7, 9)
(619, 783)
(619/39850*sqrt(1594) - 7/130*sqrt(130), 783/39850*sqrt(1594) - 9/130*sqrt(130))
---
(8, 8)
(710, 710)
(0, 0)
---
(9, 7)
(783, 619)
(783/39850*sqrt(1594) - 9/130*sqrt(130), 619/39850*sqrt(1594) - 7/130*sqrt(130))
---
(8, 9)
(665, 747)
(665/1000234*sqrt(1000234) - 8/145*sqrt(145), 747/1000234*sqrt(1000234) - 9/145*sqrt(145))
---
(9, 8)
(747, 665)
(747/1000234*sqrt(1000234) - 9/145*sqrt(145), 665/1000234*sqrt(1000234) - 8/145*sqrt(145))
---
(9, 9)
(702, 702)
(0, 0)
---

Here I am starting to get ready similar computations in 3D.

# Generate a list of points in the grid, following a diagonal numbering scheme. zMin = xMin zMax = xMax xyzBasisList = [] for diagSum in range(xMin+yMin+zMin, xMax+yMax+zMax+1): x = max(xMin, diagSum-yMax-zMax) while x <= xMax: y = max(yMin, diagSum-x-zMax) z = diagSum - x - y while y <= yMax and z >= zMin: xyzBasisList.append(vector([x,y,z])) y += 1 z -= 1 x += 1 print xyzBasisList # Dot product matrix dot3dMatrix = matrix(ZZ, M^3, M^3, lambda i,j: xyzBasisList[i].dot_product(xyzBasisList[j])) #3D DFT dft3dMatrix = matrix(C, M^3, M^3, lambda i,j: zeta^(dot3dMatrix[i,j])) dftH3dMatrix = matrix(C, M^3, M^3, lambda i,j: dft3dMatrix[i,j].conjugate()) show(dft3dMatrix) 
       
[(1, 1, 1), (1, 1, 2), (1, 2, 1), (2, 1, 1), (1, 1, 3), (1, 2, 2), (1,
3, 1), (2, 1, 2), (2, 2, 1), (3, 1, 1), (1, 1, 4), (1, 2, 3), (1, 3, 2),
(1, 4, 1), (2, 1, 3), (2, 2, 2), (2, 3, 1), (3, 1, 2), (3, 2, 1), (4, 1,
1), (1, 1, 5), (1, 2, 4), (1, 3, 3), (1, 4, 2), (1, 5, 1), (2, 1, 4),
(2, 2, 3), (2, 3, 2), (2, 4, 1), (3, 1, 3), (3, 2, 2), (3, 3, 1), (4, 1,
2), (4, 2, 1), (5, 1, 1), (1, 1, 6), (1, 2, 5), (1, 3, 4), (1, 4, 3),
(1, 5, 2), (1, 6, 1), (2, 1, 5), (2, 2, 4), (2, 3, 3), (2, 4, 2), (2, 5,
1), (3, 1, 4), (3, 2, 3), (3, 3, 2), (3, 4, 1), (4, 1, 3), (4, 2, 2),
(4, 3, 1), (5, 1, 2), (5, 2, 1), (6, 1, 1), (1, 1, 7), (1, 2, 6), (1, 3,
5), (1, 4, 4), (1, 5, 3), (1, 6, 2), (1, 7, 1), (2, 1, 6), (2, 2, 5),
(2, 3, 4), (2, 4, 3), (2, 5, 2), (2, 6, 1), (3, 1, 5), (3, 2, 4), (3, 3,
3), (3, 4, 2), (3, 5, 1), (4, 1, 4), (4, 2, 3), (4, 3, 2), (4, 4, 1),
(5, 1, 3), (5, 2, 2), (5, 3, 1), (6, 1, 2), (6, 2, 1), (7, 1, 1), (1, 1,
8), (1, 2, 7), (1, 3, 6), (1, 4, 5), (1, 5, 4), (1, 6, 3), (1, 7, 2),
(1, 8, 1), (2, 1, 7), (2, 2, 6), (2, 3, 5), (2, 4, 4), (2, 5, 3), (2, 6,
2), (2, 7, 1), (3, 1, 6), (3, 2, 5), (3, 3, 4), (3, 4, 3), (3, 5, 2),
(3, 6, 1), (4, 1, 5), (4, 2, 4), (4, 3, 3), (4, 4, 2), (4, 5, 1), (5, 1,
4), (5, 2, 3), (5, 3, 2), (5, 4, 1), (6, 1, 3), (6, 2, 2), (6, 3, 1),
(7, 1, 2), (7, 2, 1), (8, 1, 1), (1, 1, 9), (1, 2, 8), (1, 3, 7), (1, 4,
6), (1, 5, 5), (1, 6, 4), (1, 7, 3), (1, 8, 2), (1, 9, 1), (2, 1, 8),
(2, 2, 7), (2, 3, 6), (2, 4, 5), (2, 5, 4), (2, 6, 3), (2, 7, 2), (2, 8,
1), (3, 1, 7), (3, 2, 6), (3, 3, 5), (3, 4, 4), (3, 5, 3), (3, 6, 2),
(3, 7, 1), (4, 1, 6), (4, 2, 5), (4, 3, 4), (4, 4, 3), (4, 5, 2), (4, 6,
1), (5, 1, 5), (5, 2, 4), (5, 3, 3), (5, 4, 2), (5, 5, 1), (6, 1, 4),
(6, 2, 3), (6, 3, 2), (6, 4, 1), (7, 1, 3), (7, 2, 2), (7, 3, 1), (8, 1,
2), (8, 2, 1), (9, 1, 1), (1, 2, 9), (1, 3, 8), (1, 4, 7), (1, 5, 6),
(1, 6, 5), (1, 7, 4), (1, 8, 3), (1, 9, 2), (2, 1, 9), (2, 2, 8), (2, 3,
7), (2, 4, 6), (2, 5, 5), (2, 6, 4), (2, 7, 3), (2, 8, 2), (2, 9, 1),
(3, 1, 8), (3, 2, 7), (3, 3, 6), (3, 4, 5), (3, 5, 4), (3, 6, 3), (3, 7,
2), (3, 8, 1), (4, 1, 7), (4, 2, 6), (4, 3, 5), (4, 4, 4), (4, 5, 3),
(4, 6, 2), (4, 7, 1), (5, 1, 6), (5, 2, 5), (5, 3, 4), (5, 4, 3), (5, 5,
2), (5, 6, 1), (6, 1, 5), (6, 2, 4), (6, 3, 3), (6, 4, 2), (6, 5, 1),
(7, 1, 4), (7, 2, 3), (7, 3, 2), (7, 4, 1), (8, 1, 3), (8, 2, 2), (8, 3,
1), (9, 1, 2), (9, 2, 1), (1, 3, 9), (1, 4, 8), (1, 5, 7), (1, 6, 6),
(1, 7, 5), (1, 8, 4), (1, 9, 3), (2, 2, 9), (2, 3, 8), (2, 4, 7), (2, 5,
6), (2, 6, 5), (2, 7, 4), (2, 8, 3), (2, 9, 2), (3, 1, 9), (3, 2, 8),
(3, 3, 7), (3, 4, 6), (3, 5, 5), (3, 6, 4), (3, 7, 3), (3, 8, 2), (3, 9,
1), (4, 1, 8), (4, 2, 7), (4, 3, 6), (4, 4, 5), (4, 5, 4), (4, 6, 3),
(4, 7, 2), (4, 8, 1), (5, 1, 7), (5, 2, 6), (5, 3, 5), (5, 4, 4), (5, 5,
3), (5, 6, 2), (5, 7, 1), (6, 1, 6), (6, 2, 5), (6, 3, 4), (6, 4, 3),
(6, 5, 2), (6, 6, 1), (7, 1, 5), (7, 2, 4), (7, 3, 3), (7, 4, 2), (7, 5,
1), (8, 1, 4), (8, 2, 3), (8, 3, 2), (8, 4, 1), (9, 1, 3), (9, 2, 2),
(9, 3, 1), (1, 4, 9), (1, 5, 8), (1, 6, 7), (1, 7, 6), (1, 8, 5), (1, 9,
4), (2, 3, 9), (2, 4, 8), (2, 5, 7), (2, 6, 6), (2, 7, 5), (2, 8, 4),
(2, 9, 3), (3, 2, 9), (3, 3, 8), (3, 4, 7), (3, 5, 6), (3, 6, 5), (3, 7,
4), (3, 8, 3), (3, 9, 2), (4, 1, 9), (4, 2, 8), (4, 3, 7), (4, 4, 6),
(4, 5, 5), (4, 6, 4), (4, 7, 3), (4, 8, 2), (4, 9, 1), (5, 1, 8), (5, 2,
7), (5, 3, 6), (5, 4, 5), (5, 5, 4), (5, 6, 3), (5, 7, 2), (5, 8, 1),
(6, 1, 7), (6, 2, 6), (6, 3, 5), (6, 4, 4), (6, 5, 3), (6, 6, 2), (6, 7,
1), (7, 1, 6), (7, 2, 5), (7, 3, 4), (7, 4, 3), (7, 5, 2), (7, 6, 1),
(8, 1, 5), (8, 2, 4), (8, 3, 3), (8, 4, 2), (8, 5, 1), (9, 1, 4), (9, 2,
3), (9, 3, 2), (9, 4, 1), (1, 5, 9), (1, 6, 8), (1, 7, 7), (1, 8, 6),
(1, 9, 5), (2, 4, 9), (2, 5, 8), (2, 6, 7), (2, 7, 6), (2, 8, 5), (2, 9,
4), (3, 3, 9), (3, 4, 8), (3, 5, 7), (3, 6, 6), (3, 7, 5), (3, 8, 4),
(3, 9, 3), (4, 2, 9), (4, 3, 8), (4, 4, 7), (4, 5, 6), (4, 6, 5), (4, 7,
4), (4, 8, 3), (4, 9, 2), (5, 1, 9), (5, 2, 8), (5, 3, 7), (5, 4, 6),
(5, 5, 5), (5, 6, 4), (5, 7, 3), (5, 8, 2), (5, 9, 1), (6, 1, 8), (6, 2,
7), (6, 3, 6), (6, 4, 5), (6, 5, 4), (6, 6, 3), (6, 7, 2), (6, 8, 1),
(7, 1, 7), (7, 2, 6), (7, 3, 5), (7, 4, 4), (7, 5, 3), (7, 6, 2), (7, 7,
1), (8, 1, 6), (8, 2, 5), (8, 3, 4), (8, 4, 3), (8, 5, 2), (8, 6, 1),
(9, 1, 5), (9, 2, 4), (9, 3, 3), (9, 4, 2), (9, 5, 1), (1, 6, 9), (1, 7,
8), (1, 8, 7), (1, 9, 6), (2, 5, 9), (2, 6, 8), (2, 7, 7), (2, 8, 6),
(2, 9, 5), (3, 4, 9), (3, 5, 8), (3, 6, 7), (3, 7, 6), (3, 8, 5), (3, 9,
4), (4, 3, 9), (4, 4, 8), (4, 5, 7), (4, 6, 6), (4, 7, 5), (4, 8, 4),
(4, 9, 3), (5, 2, 9), (5, 3, 8), (5, 4, 7), (5, 5, 6), (5, 6, 5), (5, 7,
4), (5, 8, 3), (5, 9, 2), (6, 1, 9), (6, 2, 8), (6, 3, 7), (6, 4, 6),
(6, 5, 5), (6, 6, 4), (6, 7, 3), (6, 8, 2), (6, 9, 1), (7, 1, 8), (7, 2,
7), (7, 3, 6), (7, 4, 5), (7, 5, 4), (7, 6, 3), (7, 7, 2), (7, 8, 1),
(8, 1, 7), (8, 2, 6), (8, 3, 5), (8, 4, 4), (8, 5, 3), (8, 6, 2), (8, 7,
1), (9, 1, 6), (9, 2, 5), (9, 3, 4), (9, 4, 3), (9, 5, 2), (9, 6, 1),
(1, 7, 9), (1, 8, 8), (1, 9, 7), (2, 6, 9), (2, 7, 8), (2, 8, 7), (2, 9,
6), (3, 5, 9), (3, 6, 8), (3, 7, 7), (3, 8, 6), (3, 9, 5), (4, 4, 9),
(4, 5, 8), (4, 6, 7), (4, 7, 6), (4, 8, 5), (4, 9, 4), (5, 3, 9), (5, 4,
8), (5, 5, 7), (5, 6, 6), (5, 7, 5), (5, 8, 4), (5, 9, 3), (6, 2, 9),
(6, 3, 8), (6, 4, 7), (6, 5, 6), (6, 6, 5), (6, 7, 4), (6, 8, 3), (6, 9,
2), (7, 1, 9), (7, 2, 8), (7, 3, 7), (7, 4, 6), (7, 5, 5), (7, 6, 4),
(7, 7, 3), (7, 8, 2), (7, 9, 1), (8, 1, 8), (8, 2, 7), (8, 3, 6), (8, 4,
5), (8, 5, 4), (8, 6, 3), (8, 7, 2), (8, 8, 1), (9, 1, 7), (9, 2, 6),
(9, 3, 5), (9, 4, 4), (9, 5, 3), (9, 6, 2), (9, 7, 1), (1, 8, 9), (1, 9,
8), (2, 7, 9), (2, 8, 8), (2, 9, 7), (3, 6, 9), (3, 7, 8), (3, 8, 7),
(3, 9, 6), (4, 5, 9), (4, 6, 8), (4, 7, 7), (4, 8, 6), (4, 9, 5), (5, 4,
9), (5, 5, 8), (5, 6, 7), (5, 7, 6), (5, 8, 5), (5, 9, 4), (6, 3, 9),
(6, 4, 8), (6, 5, 7), (6, 6, 6), (6, 7, 5), (6, 8, 4), (6, 9, 3), (7, 2,
9), (7, 3, 8), (7, 4, 7), (7, 5, 6), (7, 6, 5), (7, 7, 4), (7, 8, 3),
(7, 9, 2), (8, 1, 9), (8, 2, 8), (8, 3, 7), (8, 4, 6), (8, 5, 5), (8, 6,
4), (8, 7, 3), (8, 8, 2), (8, 9, 1), (9, 1, 8), (9, 2, 7), (9, 3, 6),
(9, 4, 5), (9, 5, 4), (9, 6, 3), (9, 7, 2), (9, 8, 1), (1, 9, 9), (2, 8,
9), (2, 9, 8), (3, 7, 9), (3, 8, 8), (3, 9, 7), (4, 6, 9), (4, 7, 8),
(4, 8, 7), (4, 9, 6), (5, 5, 9), (5, 6, 8), (5, 7, 7), (5, 8, 6), (5, 9,
5), (6, 4, 9), (6, 5, 8), (6, 6, 7), (6, 7, 6), (6, 8, 5), (6, 9, 4),
(7, 3, 9), (7, 4, 8), (7, 5, 7), (7, 6, 6), (7, 7, 5), (7, 8, 4), (7, 9,
3), (8, 2, 9), (8, 3, 8), (8, 4, 7), (8, 5, 6), (8, 6, 5), (8, 7, 4),
(8, 8, 3), (8, 9, 2), (9, 1, 9), (9, 2, 8), (9, 3, 7), (9, 4, 6), (9, 5,
5), (9, 6, 4), (9, 7, 3), (9, 8, 2), (9, 9, 1), (2, 9, 9), (3, 8, 9),
(3, 9, 8), (4, 7, 9), (4, 8, 8), (4, 9, 7), (5, 6, 9), (5, 7, 8), (5, 8,
7), (5, 9, 6), (6, 5, 9), (6, 6, 8), (6, 7, 7), (6, 8, 6), (6, 9, 5),
(7, 4, 9), (7, 5, 8), (7, 6, 7), (7, 7, 6), (7, 8, 5), (7, 9, 4), (8, 3,
9), (8, 4, 8), (8, 5, 7), (8, 6, 6), (8, 7, 5), (8, 8, 4), (8, 9, 3),
(9, 2, 9), (9, 3, 8), (9, 4, 7), (9, 5, 6), (9, 6, 5), (9, 7, 4), (9, 8,
3), (9, 9, 2), (3, 9, 9), (4, 8, 9), (4, 9, 8), (5, 7, 9), (5, 8, 8),
(5, 9, 7), (6, 6, 9), (6, 7, 8), (6, 8, 7), (6, 9, 6), (7, 5, 9), (7, 6,
8), (7, 7, 7), (7, 8, 6), (7, 9, 5), (8, 4, 9), (8, 5, 8), (8, 6, 7),
(8, 7, 6), (8, 8, 5), (8, 9, 4), (9, 3, 9), (9, 4, 8), (9, 5, 7), (9, 6,
6), (9, 7, 5), (9, 8, 4), (9, 9, 3), (4, 9, 9), (5, 8, 9), (5, 9, 8),
(6, 7, 9), (6, 8, 8), (6, 9, 7), (7, 6, 9), (7, 7, 8), (7, 8, 7), (7, 9,
6), (8, 5, 9), (8, 6, 8), (8, 7, 7), (8, 8, 6), (8, 9, 5), (9, 4, 9),
(9, 5, 8), (9, 6, 7), (9, 7, 6), (9, 8, 5), (9, 9, 4), (5, 9, 9), (6, 8,
9), (6, 9, 8), (7, 7, 9), (7, 8, 8), (7, 9, 7), (8, 6, 9), (8, 7, 8),
(8, 8, 7), (8, 9, 6), (9, 5, 9), (9, 6, 8), (9, 7, 7), (9, 8, 6), (9, 9,
5), (6, 9, 9), (7, 8, 9), (7, 9, 8), (8, 7, 9), (8, 8, 8), (8, 9, 7),
(9, 6, 9), (9, 7, 8), (9, 8, 7), (9, 9, 6), (7, 9, 9), (8, 8, 9), (8, 9,
8), (9, 7, 9), (9, 8, 8), (9, 9, 7), (8, 9, 9), (9, 8, 9), (9, 9, 8),
(9, 9, 9)]
^C
Traceback (click to the left of this block for traceback)
...
__SAGE__
[(1, 1, 1), (1, 1, 2), (1, 2, 1), (2, 1, 1), (1, 1, 3), (1, 2, 2), (1, 3, 1), (2, 1, 2), (2, 2, 1), (3, 1, 1), (1, 1, 4), (1, 2, 3), (1, 3, 2), (1, 4, 1), (2, 1, 3), (2, 2, 2), (2, 3, 1), (3, 1, 2), (3, 2, 1), (4, 1, 1), (1, 1, 5), (1, 2, 4), (1, 3, 3), (1, 4, 2), (1, 5, 1), (2, 1, 4), (2, 2, 3), (2, 3, 2), (2, 4, 1), (3, 1, 3), (3, 2, 2), (3, 3, 1), (4, 1, 2), (4, 2, 1), (5, 1, 1), (1, 1, 6), (1, 2, 5), (1, 3, 4), (1, 4, 3), (1, 5, 2), (1, 6, 1), (2, 1, 5), (2, 2, 4), (2, 3, 3), (2, 4, 2), (2, 5, 1), (3, 1, 4), (3, 2, 3), (3, 3, 2), (3, 4, 1), (4, 1, 3), (4, 2, 2), (4, 3, 1), (5, 1, 2), (5, 2, 1), (6, 1, 1), (1, 1, 7), (1, 2, 6), (1, 3, 5), (1, 4, 4), (1, 5, 3), (1, 6, 2), (1, 7, 1), (2, 1, 6), (2, 2, 5), (2, 3, 4), (2, 4, 3), (2, 5, 2), (2, 6, 1), (3, 1, 5), (3, 2, 4), (3, 3, 3), (3, 4, 2), (3, 5, 1), (4, 1, 4), (4, 2, 3), (4, 3, 2), (4, 4, 1), (5, 1, 3), (5, 2, 2), (5, 3, 1), (6, 1, 2), (6, 2, 1), (7, 1, 1), (1, 1, 8), (1, 2, 7), (1, 3, 6), (1, 4, 5), (1, 5, 4), (1, 6, 3), (1, 7, 2), (1, 8, 1), (2, 1, 7), (2, 2, 6), (2, 3, 5), (2, 4, 4), (2, 5, 3), (2, 6, 2), (2, 7, 1), (3, 1, 6), (3, 2, 5), (3, 3, 4), (3, 4, 3), (3, 5, 2), (3, 6, 1), (4, 1, 5), (4, 2, 4), (4, 3, 3), (4, 4, 2), (4, 5, 1), (5, 1, 4), (5, 2, 3), (5, 3, 2), (5, 4, 1), (6, 1, 3), (6, 2, 2), (6, 3, 1), (7, 1, 2), (7, 2, 1), (8, 1, 1), (1, 1, 9), (1, 2, 8), (1, 3, 7), (1, 4, 6), (1, 5, 5), (1, 6, 4), (1, 7, 3), (1, 8, 2), (1, 9, 1), (2, 1, 8), (2, 2, 7), (2, 3, 6), (2, 4, 5), (2, 5, 4), (2, 6, 3), (2, 7, 2), (2, 8, 1), (3, 1, 7), (3, 2, 6), (3, 3, 5), (3, 4, 4), (3, 5, 3), (3, 6, 2), (3, 7, 1), (4, 1, 6), (4, 2, 5), (4, 3, 4), (4, 4, 3), (4, 5, 2), (4, 6, 1), (5, 1, 5), (5, 2, 4), (5, 3, 3), (5, 4, 2), (5, 5, 1), (6, 1, 4), (6, 2, 3), (6, 3, 2), (6, 4, 1), (7, 1, 3), (7, 2, 2), (7, 3, 1), (8, 1, 2), (8, 2, 1), (9, 1, 1), (1, 2, 9), (1, 3, 8), (1, 4, 7), (1, 5, 6), (1, 6, 5), (1, 7, 4), (1, 8, 3), (1, 9, 2), (2, 1, 9), (2, 2, 8), (2, 3, 7), (2, 4, 6), (2, 5, 5), (2, 6, 4), (2, 7, 3), (2, 8, 2), (2, 9, 1), (3, 1, 8), (3, 2, 7), (3, 3, 6), (3, 4, 5), (3, 5, 4), (3, 6, 3), (3, 7, 2), (3, 8, 1), (4, 1, 7), (4, 2, 6), (4, 3, 5), (4, 4, 4), (4, 5, 3), (4, 6, 2), (4, 7, 1), (5, 1, 6), (5, 2, 5), (5, 3, 4), (5, 4, 3), (5, 5, 2), (5, 6, 1), (6, 1, 5), (6, 2, 4), (6, 3, 3), (6, 4, 2), (6, 5, 1), (7, 1, 4), (7, 2, 3), (7, 3, 2), (7, 4, 1), (8, 1, 3), (8, 2, 2), (8, 3, 1), (9, 1, 2), (9, 2, 1), (1, 3, 9), (1, 4, 8), (1, 5, 7), (1, 6, 6), (1, 7, 5), (1, 8, 4), (1, 9, 3), (2, 2, 9), (2, 3, 8), (2, 4, 7), (2, 5, 6), (2, 6, 5), (2, 7, 4), (2, 8, 3), (2, 9, 2), (3, 1, 9), (3, 2, 8), (3, 3, 7), (3, 4, 6), (3, 5, 5), (3, 6, 4), (3, 7, 3), (3, 8, 2), (3, 9, 1), (4, 1, 8), (4, 2, 7), (4, 3, 6), (4, 4, 5), (4, 5, 4), (4, 6, 3), (4, 7, 2), (4, 8, 1), (5, 1, 7), (5, 2, 6), (5, 3, 5), (5, 4, 4), (5, 5, 3), (5, 6, 2), (5, 7, 1), (6, 1, 6), (6, 2, 5), (6, 3, 4), (6, 4, 3), (6, 5, 2), (6, 6, 1), (7, 1, 5), (7, 2, 4), (7, 3, 3), (7, 4, 2), (7, 5, 1), (8, 1, 4), (8, 2, 3), (8, 3, 2), (8, 4, 1), (9, 1, 3), (9, 2, 2), (9, 3, 1), (1, 4, 9), (1, 5, 8), (1, 6, 7), (1, 7, 6), (1, 8, 5), (1, 9, 4), (2, 3, 9), (2, 4, 8), (2, 5, 7), (2, 6, 6), (2, 7, 5), (2, 8, 4), (2, 9, 3), (3, 2, 9), (3, 3, 8), (3, 4, 7), (3, 5, 6), (3, 6, 5), (3, 7, 4), (3, 8, 3), (3, 9, 2), (4, 1, 9), (4, 2, 8), (4, 3, 7), (4, 4, 6), (4, 5, 5), (4, 6, 4), (4, 7, 3), (4, 8, 2), (4, 9, 1), (5, 1, 8), (5, 2, 7), (5, 3, 6), (5, 4, 5), (5, 5, 4), (5, 6, 3), (5, 7, 2), (5, 8, 1), (6, 1, 7), (6, 2, 6), (6, 3, 5), (6, 4, 4), (6, 5, 3), (6, 6, 2), (6, 7, 1), (7, 1, 6), (7, 2, 5), (7, 3, 4), (7, 4, 3), (7, 5, 2), (7, 6, 1), (8, 1, 5), (8, 2, 4), (8, 3, 3), (8, 4, 2), (8, 5, 1), (9, 1, 4), (9, 2, 3), (9, 3, 2), (9, 4, 1), (1, 5, 9), (1, 6, 8), (1, 7, 7), (1, 8, 6), (1, 9, 5), (2, 4, 9), (2, 5, 8), (2, 6, 7), (2, 7, 6), (2, 8, 5), (2, 9, 4), (3, 3, 9), (3, 4, 8), (3, 5, 7), (3, 6, 6), (3, 7, 5), (3, 8, 4), (3, 9, 3), (4, 2, 9), (4, 3, 8), (4, 4, 7), (4, 5, 6), (4, 6, 5), (4, 7, 4), (4, 8, 3), (4, 9, 2), (5, 1, 9), (5, 2, 8), (5, 3, 7), (5, 4, 6), (5, 5, 5), (5, 6, 4), (5, 7, 3), (5, 8, 2), (5, 9, 1), (6, 1, 8), (6, 2, 7), (6, 3, 6), (6, 4, 5), (6, 5, 4), (6, 6, 3), (6, 7, 2), (6, 8, 1), (7, 1, 7), (7, 2, 6), (7, 3, 5), (7, 4, 4), (7, 5, 3), (7, 6, 2), (7, 7, 1), (8, 1, 6), (8, 2, 5), (8, 3, 4), (8, 4, 3), (8, 5, 2), (8, 6, 1), (9, 1, 5), (9, 2, 4), (9, 3, 3), (9, 4, 2), (9, 5, 1), (1, 6, 9), (1, 7, 8), (1, 8, 7), (1, 9, 6), (2, 5, 9), (2, 6, 8), (2, 7, 7), (2, 8, 6), (2, 9, 5), (3, 4, 9), (3, 5, 8), (3, 6, 7), (3, 7, 6), (3, 8, 5), (3, 9, 4), (4, 3, 9), (4, 4, 8), (4, 5, 7), (4, 6, 6), (4, 7, 5), (4, 8, 4), (4, 9, 3), (5, 2, 9), (5, 3, 8), (5, 4, 7), (5, 5, 6), (5, 6, 5), (5, 7, 4), (5, 8, 3), (5, 9, 2), (6, 1, 9), (6, 2, 8), (6, 3, 7), (6, 4, 6), (6, 5, 5), (6, 6, 4), (6, 7, 3), (6, 8, 2), (6, 9, 1), (7, 1, 8), (7, 2, 7), (7, 3, 6), (7, 4, 5), (7, 5, 4), (7, 6, 3), (7, 7, 2), (7, 8, 1), (8, 1, 7), (8, 2, 6), (8, 3, 5), (8, 4, 4), (8, 5, 3), (8, 6, 2), (8, 7, 1), (9, 1, 6), (9, 2, 5), (9, 3, 4), (9, 4, 3), (9, 5, 2), (9, 6, 1), (1, 7, 9), (1, 8, 8), (1, 9, 7), (2, 6, 9), (2, 7, 8), (2, 8, 7), (2, 9, 6), (3, 5, 9), (3, 6, 8), (3, 7, 7), (3, 8, 6), (3, 9, 5), (4, 4, 9), (4, 5, 8), (4, 6, 7), (4, 7, 6), (4, 8, 5), (4, 9, 4), (5, 3, 9), (5, 4, 8), (5, 5, 7), (5, 6, 6), (5, 7, 5), (5, 8, 4), (5, 9, 3), (6, 2, 9), (6, 3, 8), (6, 4, 7), (6, 5, 6), (6, 6, 5), (6, 7, 4), (6, 8, 3), (6, 9, 2), (7, 1, 9), (7, 2, 8), (7, 3, 7), (7, 4, 6), (7, 5, 5), (7, 6, 4), (7, 7, 3), (7, 8, 2), (7, 9, 1), (8, 1, 8), (8, 2, 7), (8, 3, 6), (8, 4, 5), (8, 5, 4), (8, 6, 3), (8, 7, 2), (8, 8, 1), (9, 1, 7), (9, 2, 6), (9, 3, 5), (9, 4, 4), (9, 5, 3), (9, 6, 2), (9, 7, 1), (1, 8, 9), (1, 9, 8), (2, 7, 9), (2, 8, 8), (2, 9, 7), (3, 6, 9), (3, 7, 8), (3, 8, 7), (3, 9, 6), (4, 5, 9), (4, 6, 8), (4, 7, 7), (4, 8, 6), (4, 9, 5), (5, 4, 9), (5, 5, 8), (5, 6, 7), (5, 7, 6), (5, 8, 5), (5, 9, 4), (6, 3, 9), (6, 4, 8), (6, 5, 7), (6, 6, 6), (6, 7, 5), (6, 8, 4), (6, 9, 3), (7, 2, 9), (7, 3, 8), (7, 4, 7), (7, 5, 6), (7, 6, 5), (7, 7, 4), (7, 8, 3), (7, 9, 2), (8, 1, 9), (8, 2, 8), (8, 3, 7), (8, 4, 6), (8, 5, 5), (8, 6, 4), (8, 7, 3), (8, 8, 2), (8, 9, 1), (9, 1, 8), (9, 2, 7), (9, 3, 6), (9, 4, 5), (9, 5, 4), (9, 6, 3), (9, 7, 2), (9, 8, 1), (1, 9, 9), (2, 8, 9), (2, 9, 8), (3, 7, 9), (3, 8, 8), (3, 9, 7), (4, 6, 9), (4, 7, 8), (4, 8, 7), (4, 9, 6), (5, 5, 9), (5, 6, 8), (5, 7, 7), (5, 8, 6), (5, 9, 5), (6, 4, 9), (6, 5, 8), (6, 6, 7), (6, 7, 6), (6, 8, 5), (6, 9, 4), (7, 3, 9), (7, 4, 8), (7, 5, 7), (7, 6, 6), (7, 7, 5), (7, 8, 4), (7, 9, 3), (8, 2, 9), (8, 3, 8), (8, 4, 7), (8, 5, 6), (8, 6, 5), (8, 7, 4), (8, 8, 3), (8, 9, 2), (9, 1, 9), (9, 2, 8), (9, 3, 7), (9, 4, 6), (9, 5, 5), (9, 6, 4), (9, 7, 3), (9, 8, 2), (9, 9, 1), (2, 9, 9), (3, 8, 9), (3, 9, 8), (4, 7, 9), (4, 8, 8), (4, 9, 7), (5, 6, 9), (5, 7, 8), (5, 8, 7), (5, 9, 6), (6, 5, 9), (6, 6, 8), (6, 7, 7), (6, 8, 6), (6, 9, 5), (7, 4, 9), (7, 5, 8), (7, 6, 7), (7, 7, 6), (7, 8, 5), (7, 9, 4), (8, 3, 9), (8, 4, 8), (8, 5, 7), (8, 6, 6), (8, 7, 5), (8, 8, 4), (8, 9, 3), (9, 2, 9), (9, 3, 8), (9, 4, 7), (9, 5, 6), (9, 6, 5), (9, 7, 4), (9, 8, 3), (9, 9, 2), (3, 9, 9), (4, 8, 9), (4, 9, 8), (5, 7, 9), (5, 8, 8), (5, 9, 7), (6, 6, 9), (6, 7, 8), (6, 8, 7), (6, 9, 6), (7, 5, 9), (7, 6, 8), (7, 7, 7), (7, 8, 6), (7, 9, 5), (8, 4, 9), (8, 5, 8), (8, 6, 7), (8, 7, 6), (8, 8, 5), (8, 9, 4), (9, 3, 9), (9, 4, 8), (9, 5, 7), (9, 6, 6), (9, 7, 5), (9, 8, 4), (9, 9, 3), (4, 9, 9), (5, 8, 9), (5, 9, 8), (6, 7, 9), (6, 8, 8), (6, 9, 7), (7, 6, 9), (7, 7, 8), (7, 8, 7), (7, 9, 6), (8, 5, 9), (8, 6, 8), (8, 7, 7), (8, 8, 6), (8, 9, 5), (9, 4, 9), (9, 5, 8), (9, 6, 7), (9, 7, 6), (9, 8, 5), (9, 9, 4), (5, 9, 9), (6, 8, 9), (6, 9, 8), (7, 7, 9), (7, 8, 8), (7, 9, 7), (8, 6, 9), (8, 7, 8), (8, 8, 7), (8, 9, 6), (9, 5, 9), (9, 6, 8), (9, 7, 7), (9, 8, 6), (9, 9, 5), (6, 9, 9), (7, 8, 9), (7, 9, 8), (8, 7, 9), (8, 8, 8), (8, 9, 7), (9, 6, 9), (9, 7, 8), (9, 8, 7), (9, 9, 6), (7, 9, 9), (8, 8, 9), (8, 9, 8), (9, 7, 9), (9, 8, 8), (9, 9, 7), (8, 9, 9), (9, 8, 9), (9, 9, 8), (9, 9, 9)]
^C
Traceback (most recent call last):        while x <= xMax:
  File "", line 1, in <module>
    
  File "/tmp/tmppetoF8/___code___.py", line 22, in <module>
    dft3dMatrix = matrix(C, M**_sage_const_3 , M**_sage_const_3 , lambda i,j: zeta**(dot3dMatrix[i,j]))
  File "sage/matrix/constructor.pyx", line 625, in sage.matrix.constructor.matrix (build/cythonized/sage/matrix/constructor.c:2455)
  File "sage/matrix/args.pyx", line 658, in sage.matrix.args.MatrixArgs.matrix (build/cythonized/sage/matrix/args.c:8109)
  File "/usr/local/sage-8.4/sage/local/lib/python2.7/site-packages/sage/matrix/matrix_space.py", line 848, in __call__
    return self.element_class(self, entries, copy, coerce)
  File "sage/matrix/matrix_generic_dense.pyx", line 85, in sage.matrix.matrix_generic_dense.Matrix_generic_dense.__init__ (build/cythonized/sage/matrix/matrix_generic_dense.c:2841)
  File "sage/matrix/args.pyx", line 722, in sage.matrix.args.MatrixArgs.list (build/cythonized/sage/matrix/args.c:8551)
  File "sage/matrix/args.pyx", line 546, in iter (build/cythonized/sage/matrix/args.c:7292)
  File "/usr/local/sage-8.4/sage/local/lib/python2.7/site-packages/sage/rings/complex_field.py", line 381, in __call__
    return Parent.__call__(self, x)
  File "sage/structure/parent.pyx", line 921, in sage.structure.parent.Parent.__call__ (build/cythonized/sage/structure/parent.c:9679)
  File "sage/categories/map.pyx", line 1694, in sage.categories.map.FormalCompositeMap._call_ (build/cythonized/sage/categories/map.c:12369)
  File "/usr/local/sage-8.4/sage/local/lib/python2.7/site-packages/sage/rings/universal_cyclotomic_field.py", line 266, in _call_
    return QQbar(sum(coeffs[a] * zeta**a for a in range(k)))
  File "/usr/local/sage-8.4/sage/local/lib/python2.7/site-packages/sage/rings/universal_cyclotomic_field.py", line 266, in <genexpr>
    return QQbar(sum(coeffs[a] * zeta**a for a in range(k)))
  File "sage/rings/integer.pyx", line 1858, in sage.rings.integer.Integer.__mul__ (build/cythonized/sage/rings/integer.c:13004)
  File "sage/structure/coerce.pyx", line 1182, in sage.structure.coerce.CoercionModel_cache_maps.bin_op (build/cythonized/sage/structure/coerce.c:9827)
  File "sage/structure/element.pyx", line 1521, in sage.structure.element.Element.__mul__ (build/cythonized/sage/structure/element.c:12220)
  File "sage/structure/element.pyx", line 2535, in sage.structure.element.RingElement._mul_ (build/cythonized/sage/structure/element.c:17995)
  File "/usr/local/sage-8.4/sage/local/lib/python2.7/site-packages/sage/rings/qqbar.py", line 3087, in _mul_
    return type(self)(_binop_algo[sk,ok](self, other, operator.mul))
  File "/usr/local/sage-8.4/sage/local/lib/python2.7/site-packages/sage/rings/qqbar.py", line 7611, in an_binop_element
    return ANExtensionElement(bdg, op(ad._value, bd._value))
  File "sage/rings/integer.pyx", line 1858, in sage.rings.integer.Integer.__mul__ (build/cythonized/sage/rings/integer.c:13004)
  File "sage/structure/coerce.pyx", line 1182, in sage.structure.coerce.CoercionModel_cache_maps.bin_op (build/cythonized/sage/structure/coerce.c:9827)
  File "sage/structure/element.pyx", line 1521, in sage.structure.element.Element.__mul__ (build/cythonized/sage/structure/element.c:12220)
  File "sage/rings/number_field/number_field_element.pyx", line 2364, in sage.rings.number_field.number_field_element.NumberFieldElement._mul_ (build/cythonized/sage/rings/number_field/number_field_element.cpp:25029)
  File "src/cysignals/signals.pyx", line 98, in cysignals.signals.sig_raise_exception
KeyboardInterrupt
__SAGE__

General notes.

Step 1: Sum over all pressures coming from every wave. This should be equal to the DFT of the amplitudes, so long as we have one wave vector for each point in the grid (correct coordinates modulo M).

Step 2: Recognize the amplitudes as being involved in another discrete Fourier transoform - this is the part I don't understand.