# How to generate a cyclic matrix

How to generate all 8×8 cyclic matrix $A$ with the first row $(a_0, a_1, \ldots, a_7)$,

the matrix $A\in GL(8, 2)$ and the first row $a_0 + a_1 + \ldots + a_7 \neq 0$

How to generate a cyclic matrix

How to generate all 8×8 cyclic matrix $A$ with the first row $(a_0, a_1, \ldots, a_7)$,

the matrix $A\in GL(8, 2)$ and the first row $a_0 + a_1 + \ldots + a_7 \neq 0$

1

Here are some possibilities to generate a circulant matrix, having as input its first row `a`

:

```
def circulantMatrix0( a ):
n = len(a)
R = range(n)
return matrix( [ [ a[ (j-k) % n ] for j in R ] for k in R ] )
def circulantMatrix1( a ):
n = len(a)
R = range(n)
return matrix( [ [ a[j-k] for j in R ] for k in R ] )
def circulantMatrix2( a, field=GF(2) ):
n = len(a)
T = matrix( F, n, n, [1 if k==(j+1)%n else 0
for j in range(n)
for k in range(n) ] )
return sum( [ a[j]*T^j for j in range(n) ] )
def circulantMatrix3( a, field=GF(2) ):
n = len(a)
b = [a[j] for j in range(n)]
b = b+b
return matrix( n, n, [ b[n-j:2*n-j] for j in range(n) ] )
# Tests:
F = GF(2)
a = vector( F, 8, [1,0,0,0,1,0,0,1] )
A = circulantMatrix0(a)
B = circulantMatrix1(a)
C = circulantMatrix2(a)
D = circulantMatrix3(a)
```

Then we have:

```
sage: print A
[1 0 0 0 1 0 0 1]
[1 1 0 0 0 1 0 0]
[0 1 1 0 0 0 1 0]
[0 0 1 1 0 0 0 1]
[1 0 0 1 1 0 0 0]
[0 1 0 0 1 1 0 0]
[0 0 1 0 0 1 1 0]
[0 0 0 1 0 0 1 1]
sage: A==B and A==C and A==D
True
sage: A.charpoly().factor()
(x + 1)^8
sage: A.jordan_form()
[1 1 0 0 0 0 0 0]
[0 1 1 0 0 0 0 0]
[0 0 1 1 0 0 0 0]
[0 0 0 1 1 0 0 0]
[0 0 0 0 1 1 0 0]
[0 0 0 0 0 1 1 0]
[0 0 0 0 0 0 1 1]
[0 0 0 0 0 0 0 1]
sage:
```

P.S. Sorry, the `field`

is declared as switch in two of the routines, the last one does not need it, please remove, the other one does not use the `field`

, but the global `F`

, please use the `field`

as base field in the definition of the returned matrix.

The question is interesting! one up...

Asked: **
2018-02-06 12:22:26 -0500
**

Seen: **106 times**

Last updated: **Feb 07 '18**

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.

What is a

cyclicmatrix?Why should have the first row the property that the sum of entries is not zero? (It would maybe be enough to have a non zero row vector, if the question becomes clear.)

A cyclic matrix means a circulant matrix. We need the first row the property that the sum of entries is not zero so that this cyclic matrix could be a invertible matrix.