#OK to post homework #Joseph Koutsoutis, 04-27-2025, Assignment 24 read `C24.txt`: #1 #I've written procedures for generating random matrices of the following types: #symmetric, antisymmetric, tridiagonal, uppertriangular #Toeplitz, Hankel, circulant, tridiagonal Toeplitz #Except for circulant matrices, 2x2 and 3x3 matrices of the other types #required 4 and 6 matrices respectively, matching the Amitsur–Levitzki theorem. #It is known that circulant matrices commute. I started to experiment with #matrices similar to circulant matrices with a different cyclic shift. #It appears that anticirculant matrices (where the shift is -1 instead of +1) #require exactly 3 matrices for n>=3. I found that this held for 3 <= n <= 50 #by testing symbolic anticirculant matrices. #I also just started to experiment with cyclic shift +2. #For n=3,4,5,6,7,8 it appears that m=3,4,5,4,3,5 matrices are sufficient. #I'll probably try to experiment more with these types of matrices and will also #return to some of the other types to see the effects of powers, zeroing out entries, #and requiring elements to be the same on certain diagonals. #I also want to see if I can at least prove the anticirculant case which I haven't tried to do yet. #I have no idea if this is trivial but I couldn't find a proof online during a very brief search. #2 CompareFibMod := proc(INI,M) local m: add(x[evalb(nops(FibMod(INI, m)[2]) > EstimateGFperiod(m^2,x,10000)[2][1])], m=2..M): end: #CompareFibMod([0,1], 100) outputted 12*x[false] + 87*x[true]