Creating worksheets with nice numbers and nice diagonalization
Mike May, S.J.
Saint Louis University
For teaching purposes we want to create matrices that are big enough to be make exercises nontrivial but nice enough to do and with nice enough numbers so that the students are not distracted by the arithmetic. For example, we may want 3 by 3 matrices that diagonalize nicely. (Randomly chosen 3 by 3 matrices often have problems with the step that solves the cubic characteristic polynomial. The answers may quite ugly.) The trick is to work backwards. Start with the matrix in nice form and then find a conjugation with small enough numbers.
with(LinearAlgebra):
Matrices with nice eigenvalues and eigenvectors
We start with the diagonal matrix that gives the eigenvalues.
MatSize := 3:
MaxDiag := 6:
f1 := (i,j) -> rand(-MaxDiag..MaxDiag)():
D1 := Matrix(MatSize,MatSize,f1,shape=diagonal);
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNEMUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYkNiUtRl9vNjNRIltGKC9GY29RJ3ByZWZpeEYoL0Zmb0Y7RmdvL0Zqb1EudGhpbm1hdGhzcGFjZUYoL0ZdcEZfci9GX3BGO0ZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUknbXRhYmxlR0YlNiUtSSRtdHJHRiU2JS1JJG10ZEdGJTYjLUkjbW5HRiU2OVEiNkYoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG8tRltzNiMtRl5zNjlRIjBGKEYwRjNGNkZhc0Y8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GYnNGXG9GZHMtRmhyNiVGZHMtRltzNiMtRl5zNjlRKSZtaW51czsxRihGMEYzRjZGYXNGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmJzRlxvRmRzLUZocjYlRmRzRmRzLUZbczYjLUZeczY5USkmbWludXM7NUYoRjBGM0Y2RmFzRjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZic0Zcby1GX282M1EiXUYoL0Zjb1EocG9zdGZpeEYoRl1yRmdvRl5yL0ZdcFEydmVyeXRoaW5tYXRoc3BhY2VGKEZhckZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcTcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkjRDFHRigtSSdSVEFCTEVHRig2JSIoO1hZIy1JJ01BVFJJWEdGKDYjNyU3JSIiJyIiIUZgdjclRmB2ISIiRmB2NyVGYHZGYHYhIiZJJ01hdHJpeEc2JCUqcHJvdGVjdGVkR0YqNyMtRmV2NiMvSSQlaWRHRihGaXU=
We next create a nice matrix to conjugate D with. For the time being, I think a nice matrix has small integer valued entries and has determinant plus or minus 1 so that its inverse is also nice. We use the method of looking at random matrices until we find a nice one.
test := 0:
count := 0:
MaxValP := 3:
while test = 0 do:
P1 := RandomMatrix(MatSize,MatSize,generator=rand(-MaxValP..MaxValP)):
d1 := abs(Determinant(P1)):
if d1 = 1 then test := 1 end if:
count := count + 1:
end do:
count; P1; Q1 := P1^(-1);
NiQtSSNtbkc2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGKDY5USMyMEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR0Y1LyUqdW5kZXJsaW5lR0Y1LyUqc3Vic2NyaXB0R0Y1LyUsc3VwZXJzY3JpcHRHRjUvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y1LyUrZXhlY3V0YWJsZUdGNS8lKXJlYWRvbmx5R1EldHJ1ZUYoLyUpY29tcG9zZWRHRjUvJSpjb252ZXJ0ZWRHRjUvJStpbXNlbGVjdGVkR0Y1LyUscGxhY2Vob2xkZXJHRjUvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGQC8lL21hdGhiYWNrZ3JvdW5kR0ZDLyUrZm9udGZhbWlseUdGLy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGMjcjIiM/
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtb0dGJTYzUSJbRigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJXRydWVGKC8lKnNlcGFyYXRvckdRJmZhbHNlRigvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRigvJSdyc3BhY2VHRjsvJSlzdHJldGNoeUdGNS8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2Iy1JJ210YWJsZUdGJTYlLUkkbXRyR0YlNiUtSSRtdGRHRiU2Iy1JI21uR0YlNjlRIjBGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdGUy8lJWJvbGRHRjgvJSdpdGFsaWNHRjgvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHRlYvJStiYWNrZ3JvdW5kR0ZZLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y1LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHRlAvJSptYXRoY29sb3JHRlYvJS9tYXRoYmFja2dyb3VuZEdGWS8lK2ZvbnRmYW1pbHlHRmVvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZTLUZdbzYjLUZgbzY5USIyRihGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3ItRl1vNiMtRmBvNjlRKSZtaW51czszRihGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3ItRmpuNiVGYXJGZnJGXG8tRmpuNiUtRl1vNiMtRmBvNjlGR0Zjb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZfckZmckZhci1GLTYzUSJdRigvRjFRKHBvc3RmaXhGKEYzRjZGOS9GPVEydmVyeXRoaW5tYXRoc3BhY2VGKEY+RkBGQkZFRkhGSkZMRk5GUUZURlc3Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iy1JJ1JUQUJMRUdGKDYlIihnXG0nLUknTUFUUklYR0YoNiM3JTclIiIhIiIjISIkNyVGanRGW3VGaXQ3JSIiIkZbdUZqdEknTWF0cml4RzYkJSpwcm90ZWN0ZWRHRio3Iy1GX3U2Iy9JJCVpZEdGKEZjdA==
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNRMUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYkNiUtRl9vNjNRIltGKC9GY29RJ3ByZWZpeEYoL0Zmb0Y7RmdvL0Zqb1EudGhpbm1hdGhzcGFjZUYoL0ZdcEZfci9GX3BGO0ZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUknbXRhYmxlR0YlNiUtSSRtdHJHRiU2JS1JJG10ZEdGJTYjLUkjbW5HRiU2OVEpJm1pbnVzOzZGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvLUZbczYjLUZeczY5USI1RihGMEYzRjZGYXNGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmJzRlxvLUZbczYjLUZeczY5USkmbWludXM7OUYoRjBGM0Y2RmFzRjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZic0Zcby1GaHI2JS1GW3M2Iy1GXnM2OVEpJm1pbnVzOzRGKEYwRjNGNkZhc0Y8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GYnNGXG8tRltzNiMtRl5zNjlRIjNGKEYwRjNGNkZhc0Y8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GYnNGXG9GanItRmhyNiUtRltzNiMtRl5zNjlRKSZtaW51czszRihGMEYzRjZGYXNGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmJzRlxvLUZbczYjLUZeczY5USIyRihGMEYzRjZGYXNGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmJzRlxvRmB0LUZfbzYzUSJdRigvRmNvUShwb3N0Zml4RihGXXJGZ29GXnIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRmFyRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSNRMUdGKC1JJ1JUQUJMRUdGKDYlIichRykpKS1JJ01BVFJJWEdGKDYjNyU3JSEiJyIiJiEiKjclISIlIiIkRl53NyUhIiQiIiNGYndJJ01hdHJpeEc2JCUqcHJvdGVjdGVkR0YqNyMtRmd3NiMvSSQlaWRHRihGaHY=
Now we conjugate to get our matrix. Just to verify, we compute eigenvalues and eigenvectors. The eigenvalues should be the entries of the diagonal matrix. The eigenvectors are scalar multiples of the columns of P1.
M1 := P1.D1.Q1;
Eigenvectors(M1);
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNNMUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYkNiUtRl9vNjNRIltGKC9GY29RJ3ByZWZpeEYoL0Zmb0Y7RmdvL0Zqb1EudGhpbm1hdGhzcGFjZUYoL0ZdcEZfci9GX3BGO0ZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUknbXRhYmxlR0YlNiUtSSRtdHJHRiU2JS1JJG10ZEdGJTYjLUkjbW5HRiU2OVEqJm1pbnVzOzM3RihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby1GW3M2Iy1GXnM2OVEjMjRGKEYwRjNGNkZhc0Y8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GYnNGXG8tRltzNiMtRl5zNjlRKiZtaW51czs0OEYoRjBGM0Y2RmFzRjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZic0Zcby1GaHI2JS1GW3M2Iy1GXnM2OVEqJm1pbnVzOzg0RihGMEYzRjZGYXNGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmJzRlxvLUZbczYjLUZeczY5USM2OUYoRjBGM0Y2RmFzRjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZic0Zcby1GW3M2Iy1GXnM2OVErJm1pbnVzOzEyNkYoRjBGM0Y2RmFzRjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZic0Zcby1GaHI2JS1GW3M2Iy1GXnM2OVEqJm1pbnVzOzE4RihGMEYzRjZGYXNGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmJzRlxvLUZbczYjLUZeczY5USMxOUYoRjBGM0Y2RmFzRjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZic0Zcby1GW3M2Iy1GXnM2OVEqJm1pbnVzOzMyRihGMEYzRjZGYXNGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmJzRlxvLUZfbzYzUSJdRigvRmNvUShwb3N0Zml4RihGXXJGZ29GXnIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRmFyRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSNNMUdGKC1JJ1JUQUJMRUdGKDYlIihbLFQjLUknTUFUUklYR0YoNiM3JTclISNQIiNDISNbNyUhIyUpIiNwISRFIjclISM9IiM+ISNLSSdNYXRyaXhHNiQlKnByb3RlY3RlZEdGKjcjLUZjeDYjL0kkJWlkR0YoRmJ3
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtRiQ2JS1JI21vR0YlNjNRIltGKC8lJWZvcm1HUSdwcmVmaXhGKC8lJmZlbmNlR1EldHJ1ZUYoLyUqc2VwYXJhdG9yR1EmZmFsc2VGKC8lJ2xzcGFjZUdRLnRoaW5tYXRoc3BhY2VGKC8lJ3JzcGFjZUdGPS8lKXN0cmV0Y2h5R0Y3LyUqc3ltbWV0cmljR0Y6LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOi8lLm1vdmFibGVsaW1pdHNHRjovJSdhY2NlbnRHRjovJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lJXNpemVHUSMxMkYoLyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC1GJDYjLUknbXRhYmxlR0YlNiUtSSRtdHJHRiU2Iy1JJG10ZEdGJTYjLUkjbW5HRiU2OVEpJm1pbnVzOzVGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdGVS8lJWJvbGRHRjovJSdpdGFsaWNHRjovJSp1bmRlcmxpbmVHRjovJSpzdWJzY3JpcHRHRjovJSxzdXBlcnNjcmlwdEdGOi8lK2ZvcmVncm91bmRHRlgvJStiYWNrZ3JvdW5kR0Zlbi8lJ29wYXF1ZUdGOi8lK2V4ZWN1dGFibGVHRjovJSlyZWFkb25seUdGNy8lKWNvbXBvc2VkR0Y6LyUqY29udmVydGVkR0Y6LyUraW1zZWxlY3RlZEdGOi8lLHBsYWNlaG9sZGVyR0Y6LyUwZm9udF9zdHlsZV9uYW1lR0ZSLyUqbWF0aGNvbG9yR0ZYLyUvbWF0aGJhY2tncm91bmRHRmVuLyUrZm9udGZhbWlseUdGZ28vJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRlUtRlxvNiMtRl9vNiMtRmJvNjlRIjZGKEZlb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZhci1GXG82Iy1GX282Iy1GYm82OVEpJm1pbnVzOzFGKEZlb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZhci1GLzYzUSJdRigvRjNRKHBvc3RmaXhGKEY1RjhGOy9GP1EydmVyeXRoaW5tYXRoc3BhY2VGKEZARkJGREZHRkpGTEZORlBGU0ZWRlktRi82M1EiLEYoL0YzUSZpbmZpeEYoL0Y2RjovRjlGNy9GPFEkMGVtRigvRj9RM3Zlcnl0aGlja21hdGhzcGFjZUYoL0ZBRjpGQkZERkdGSkZMRk5GUEZTRlZGWS1GJDYlRi4tRiQ2Iy1GaW42JS1GXG82JS1GX282Iy1JJm1mcmFjR0YlNiotRmJvNjlRKSZtaW51czszRihGZW9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGXnJGYXItRmJvNjlRIjJGKEZlb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZhci8lLmxpbmV0aGlja25lc3NHUSIxRigvJStkZW5vbWFsaWduR1EnY2VudGVyRigvJSludW1hbGlnbkdGXHYvJSliZXZlbGxlZEdGOkZWRlktRl9vNiMtRmJvNjlRIjBGKEZlb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZhci1GX282Iy1GX3U2Ki1GYm82OVEpJm1pbnVzOzJGKEZlb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZhci1GYm82OVEiM0YoRmVvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmFyRmd1Rmp1Rl12Rl92RlZGWS1GXG82JUZhdi1GX282I0ZkdS1GX282Iy1GYm82OUZJRmVvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmFyLUZcbzYlRmR3RmR3RmR3RmFzNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyQtSSdSVEFCTEVHRig2JSIoYzFWJy1JJ01BVFJJWEdGKDYjNyU3IyEiJjcjIiInNyMhIiImSSdWZWN0b3JHNiQlKnByb3RlY3RlZEdGKjYjSSdjb2x1bW5HRigtRmF4NiUiKCUpKVxWLUZleDYjNyU3JSMhIiQiIiMiIiEjISIjIiIkNyVGXnpGXXoiIiI3JUZjekZjekZjekknTWF0cml4R0ZgeTckLUZeeTYjL0kkJWlkR0YoRmN4LUZlejYjL0ZqekZmeQ==
It is useful to put all the code in a single block that can be repeated until the answer is sufficiently pretty.
MatSize := 3: MaxDiag := 6:
MaxValP := 3:
f1 := (i,j) -> rand(-MaxDiag..MaxDiag)():
D1 := Matrix(MatSize,MatSize,f1,shape=diagonal):
test := 0:
while test = 0 do:
P1 := RandomMatrix(MatSize,MatSize,generator=rand(-MaxValP..MaxValP)):
d1 := abs(Determinant(P1)):
if d1 = 1 then test := 1 end if:
end do:
Q1 := P1^(-1):
M1 := P1.D1.Q1:
print("D1"=D1, "P1" = P1, "Q1"=Q1, "M1"=M1);
Eigenvectors(M1);
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiktRiQ2JS1JI21zR0YlNiNRI0QxRigtSSNtb0dGJTYzUSI9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdGOy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRkAvJSlzdHJldGNoeUdGOy8lKnN5bW1ldHJpY0dGOy8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjsvJS5tb3ZhYmxlbGltaXRzR0Y7LyUnYWNjZW50R0Y7LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2JS1GMzYzUSJbRigvRjdRJ3ByZWZpeEYoL0Y6USV0cnVlRihGPC9GP1EudGhpbm1hdGhzcGFjZUYoL0ZCRmNvL0ZERmFvRkVGR0ZKRk1GT0ZRRlNGVkZZRmZuLUYkNiMtSSdtdGFibGVHRiU2JS1JJG10ckdGJTYlLUkkbXRkR0YlNiMtSSNtbkdGJTY5USkmbWludXM7NEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZYLyUlYm9sZEdGOy8lJ2l0YWxpY0dGOy8lKnVuZGVybGluZUdGOy8lKnN1YnNjcmlwdEdGOy8lLHN1cGVyc2NyaXB0R0Y7LyUrZm9yZWdyb3VuZEdGZW4vJStiYWNrZ3JvdW5kR0Zobi8lJ29wYXF1ZUdGOy8lK2V4ZWN1dGFibGVHRjsvJSlyZWFkb25seUdGYW8vJSljb21wb3NlZEdGOy8lKmNvbnZlcnRlZEdGOy8lK2ltc2VsZWN0ZWRHRjsvJSxwbGFjZWhvbGRlckdGOy8lMGZvbnRfc3R5bGVfbmFtZUdGVS8lKm1hdGhjb2xvckdGZW4vJS9tYXRoYmFja2dyb3VuZEdGaG4vJStmb250ZmFtaWx5R0ZncC8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGWC1GX3A2Iy1GYnA2OVEiMEYoRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmByRmJyRmRyRmZyRmhyRmpyRlxzRl5zRmFzRmNzLUZccDYlRmNzLUZfcDYjLUZicDY5USIzRihGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGXnJGYHJGYnJGZHJGZnJGaHJGanJGXHNGXnNGYXNGY3MtRlxwNiVGY3NGY3MtRl9wNiMtRmJwNjlRIjJGKEZlcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZgckZickZkckZmckZockZqckZcc0Zec0Zhcy1GMzYzUSJdRigvRjdRKHBvc3RmaXhGKEZgb0Y8RmJvL0ZCUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRmVvRkVGR0ZKRk1GT0ZRRlNGVkZZRmZuLUYzNjNRIixGKEY2RjkvRj1GYW8vRj9RJDBlbUYoL0ZCUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGKEZDRkVGR0ZKRk1GT0ZRRlNGVkZZRmZuLUYkNiUtRi82I1EjUDFGKEYyLUYkNiVGW28tRiQ2Iy1GaW82JS1GXHA2JS1GX3A2Iy1GYnA2OVEpJm1pbnVzOzFGKEZlcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZgckZickZkckZmckZockZqckZcc0Zec0Zhcy1GX3A2Iy1GYnA2OUZMRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmByRmJyRmRyRmZyRmhyRmpyRlxzRl5zRmFzRmJ2LUZccDYlRmJ2LUZfcDYjLUZicDY5USkmbWludXM7MkYoRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmByRmJyRmRyRmZyRmhyRmpyRlxzRl5zRmFzLUZfcDYjLUZicDY5USkmbWludXM7M0YoRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmByRmJyRmRyRmZyRmhyRmpyRlxzRl5zRmFzLUZccDYlRmd2RmNzRmF0RmZ0Rl11LUYkNiUtRi82I1EjUTFGKEYyLUYkNiVGW28tRiQ2Iy1GaW82JS1GXHA2JUZecEZddy1GX3A2Iy1GYnA2OVEpJm1pbnVzOzVGKEZlcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZgckZickZkckZmckZockZqckZcc0Zec0Zhcy1GXHA2JUZidkZidkZddy1GXHA2JUZhdEZndkZqc0ZmdEZddS1GJDYlLUYvNiNRI00xRihGMi1GJDYlRltvLUYkNiMtRmlvNiUtRlxwNiUtRl9wNiMtRmJwNjlRKiZtaW51czsyM0YoRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmByRmJyRmRyRmZyRmhyRmpyRlxzRl5zRmFzLUZfcDYjLUZicDY5USombWludXM7MTNGKEZlcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZgckZickZkckZmckZockZqckZcc0Zec0Zhcy1GX3A2Iy1GYnA2OVEqJm1pbnVzOzMyRihGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGXnJGYHJGYnJGZHJGZnJGaHJGanJGXHNGXnNGYXMtRlxwNiUtRl9wNiMtRmJwNjlRKiZtaW51czsyMkYoRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmByRmJyRmRyRmZyRmhyRmpyRlxzRl5zRmFzLUZfcDYjLUZicDY5USkmbWludXM7OEYoRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmByRmJyRmRyRmZyRmhyRmpyRlxzRl5zRmFzLUZfcDYjLUZicDY5USombWludXM7MjZGKEZlcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZgckZickZkckZmckZockZqckZcc0Zec0Zhcy1GXHA2JS1GX3A2Iy1GYnA2OVEjMjRGKEZlcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZgckZickZkckZmckZockZqckZcc0Zec0Zhcy1GX3A2Iy1GYnA2OVEjMTJGKEZlcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZgckZickZkckZmckZockZqckZcc0Zec0Zhcy1GX3A2Iy1GYnA2OVEjMzJGKEZlcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZgckZickZkckZmckZockZqckZcc0Zec0Zhc0ZmdDcjLV9GKUksbXByaW50c2xhc2hHRig2JDcmL0YxLUknUlRBQkxFR0YoNiUiKGtGbyMtSSdNQVRSSVhHRig2IzclNyUhIiUiIiFGXl5sNyVGXl5sIiIkRl5ebDclRl5ebEZeXmwiIiNJJ01hdHJpeEc2JCUqcHJvdGVjdGVkR0YqL0ZpdS1GZV1sNiUiKE8oeXQtRmldbDYjNyU3JSEiIiIiIkZeX2w3JUZeX2whIiMhIiQ3JUZfX2xGXl5sRmJebEZjXmwvRl14LUZlXWw2JSIoKyQ+WC1GaV1sNiM3JTclRl1ebEZhX2whIiY3JUZeX2xGXl9sRmFfbDclRmJebEZfX2xGYF5sRmNebC9GY3ktRmVdbDYlIigzSShILUZpXWw2IzclNyUhI0IhIzghI0s3JSEjQSEiKSEjRTclIiNDIiM3IiNLRmNebDcmL0YxLUZjXmw2Iy9JJCVpZEdGKEZnXWwvRml1LUZjXmw2Iy9GZ2FsRmlebC9GXXgtRmNebDYjL0ZnYWxGZ19sL0ZjeS1GY15sNiMvRmdhbEZiYGw=
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtRiQ2JS1JI21vR0YlNjNRIltGKC8lJWZvcm1HUSdwcmVmaXhGKC8lJmZlbmNlR1EldHJ1ZUYoLyUqc2VwYXJhdG9yR1EmZmFsc2VGKC8lJ2xzcGFjZUdRLnRoaW5tYXRoc3BhY2VGKC8lJ3JzcGFjZUdGPS8lKXN0cmV0Y2h5R0Y3LyUqc3ltbWV0cmljR0Y6LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOi8lLm1vdmFibGVsaW1pdHNHRjovJSdhY2NlbnRHRjovJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lJXNpemVHUSMxMkYoLyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC1GJDYjLUknbXRhYmxlR0YlNiUtSSRtdHJHRiU2Iy1JJG10ZEdGJTYjLUkjbW5HRiU2OVEiM0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZVLyUlYm9sZEdGOi8lJ2l0YWxpY0dGOi8lKnVuZGVybGluZUdGOi8lKnN1YnNjcmlwdEdGOi8lLHN1cGVyc2NyaXB0R0Y6LyUrZm9yZWdyb3VuZEdGWC8lK2JhY2tncm91bmRHRmVuLyUnb3BhcXVlR0Y6LyUrZXhlY3V0YWJsZUdGOi8lKXJlYWRvbmx5R0Y3LyUpY29tcG9zZWRHRjovJSpjb252ZXJ0ZWRHRjovJStpbXNlbGVjdGVkR0Y6LyUscGxhY2Vob2xkZXJHRjovJTBmb250X3N0eWxlX25hbWVHRlIvJSptYXRoY29sb3JHRlgvJS9tYXRoYmFja2dyb3VuZEdGZW4vJStmb250ZmFtaWx5R0Znby8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGVS1GXG82Iy1GX282Iy1GYm82OVEiMkYoRmVvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmFyLUZcbzYjLUZfbzYjLUZibzY5USkmbWludXM7NEYoRmVvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmFyLUYvNjNRIl1GKC9GM1EocG9zdGZpeEYoRjVGOEY7L0Y/UTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRkBGQkZERkdGSkZMRk5GUEZTRlZGWS1GLzYzUSIsRigvRjNRJmluZml4RigvRjZGOi9GOUY3L0Y8USQwZW1GKC9GP1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvRkFGOkZCRkRGR0ZKRkxGTkZQRlNGVkZZLUYkNiVGLi1GJDYjLUZpbjYlLUZcbzYlLUZfbzYjLUkmbWZyYWNHRiU2Ki1GYm82OVEpJm1pbnVzOzFGKEZlb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZhckZnci8lLmxpbmV0aGlja25lc3NHUSIxRigvJStkZW5vbWFsaWduR1EnY2VudGVyRigvJSludW1hbGlnbkdGaXUvJSliZXZlbGxlZEdGOkZWRllGXHUtRl9vNiNGYXUtRlxvNiUtRl9vNiMtRmJvNjlGSUZlb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZhci1GX282Iy1GX3U2Ki1GYm82OVEpJm1pbnVzOzNGKEZlb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZhckZnckZkdUZndUZqdUZcdkZWRllGXnYtRlxvNiUtRl9vNiMtRmJvNjlRIjBGKEZlb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZhckZidkZidkZhczcjLV9GKUksbXByaW50c2xhc2hHRig2JDckLUknUlRBQkxFR0YoNiUiKFNSI1stSSdNQVRSSVhHRig2IzclNyMiIiQ3IyIiIzcjISIlJkknVmVjdG9yRzYkJSpwcm90ZWN0ZWRHRio2I0knY29sdW1uR0YoLUZbeDYlIihvLj8oLUZfeDYjNyU3JSMhIiJGZXhGZXlGZnk3JSIiIiMhIiRGZXhGZnk3JSIiIUZoeUZoeUknTWF0cml4R0ZqeDckLUZoeDYjL0kkJWlkR0YoRl14LUZdejYjL0ZiekZgeQ==
The diagonal matrix is set as M1. Repeat until you get a matrix that looks nice.
Repeated and complex eigenvalues
We can vary the technique above if we are interested in matrices that are not diagonalizable, either because they have complex eigenvalues or because of non-trivial Jordan blocks. In those cases we can use the CompanionMatrix command to get the nice form that we start with.
Poly1 := (x-1)^2*(x-2);
Poly2 := expand(Poly1);
deg := degree(Poly2,x);
N1 := CompanionMatrix(Poly2,x);
Eigenvectors(N1);
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USZQb2x5MUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYkNiUtSSVtc3VwR0YlNiUtRiQ2JS1GX282M1EiKEYoL0Zjb1EncHJlZml4RigvRmZvRjtGZ28vRmpvUS50aGlubWF0aHNwYWNlRigvRl1wRmRyL0ZfcEY7RmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxLUYkNiUtRi02OVEieEYoRjBGM0Y2RjlGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmluRlxvLUZfbzYzUSgmbWludXM7RihGYm9GZW9GZ28vRmpvUTBtZWRpdW1tYXRoc3BhY2VGKC9GXXBGYHNGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtSSNtbkdGJTY5RmdwRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG8tRl9vNjNRIilGKC9GY29RKHBvc3RmaXhGKEZickZnb0Zjci9GXXBRMnZlcnl0aGlubWF0aHNwYWNlRihGZnJGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRmNzNjlRIjJGKEYwRjNGNkZlc0Y8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GZnNGXG8vJTFzdXBlcnNjcmlwdHNoaWZ0R1EiMEYoLUZfbzYzUTEmSW52aXNpYmxlVGltZXM7RihGYm9GZW9GZ28vRmpvUSQwZW1GKC9GXXBGaXRGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRiQ2JUZdci1GJDYlRmlyRlxzRl90RmhzNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSZQb2x5MUdGKComKSwmSSJ4R0YoIiIiRlt2ISIiIiIjRlt2LCZGanVGW3ZGXXZGXHZGW3Y3I0ZndQ==
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USZQb2x5MkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYkNiktRiQ2Iy1JJW1zdXBHRiU2JS1GLTY5USJ4RihGMEYzRjZGOUY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GaW5GXG8tSSNtbkdGJTY5USIzRihGMEYzRjYvRjpGOEY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ24vRmpuUSdub3JtYWxGKEZcby8lMXN1cGVyc2NyaXB0c2hpZnRHUSIwRigtRl9vNjNRKCZtaW51cztGKEZib0Zlb0Znby9Gam9RMG1lZGl1bW1hdGhzcGFjZUYoL0ZdcEZec0ZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZhcjY5USI0RihGMEYzRjZGZHJGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmVyRlxvLUZfbzYzUTEmSW52aXNpYmxlVGltZXM7RihGYm9GZW9GZ28vRmpvUSQwZW1GKC9GXXBGaXNGXnBGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHEtRltyNiVGXXItRmFyNjlRIjJGKEYwRjNGNkZkckY8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GZXJGXG9GZ3ItRl9vNjNRIitGKEZib0Zlb0Znb0Zdc0Zfc0ZecEZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYlLUZhcjY5USI1RihGMEYzRjZGZHJGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmVyRlxvRmVzRl1yRmpyRl10NyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSZQb2x5MkdGKCwqKiQpSSJ4R0YoIiIkIiIiRmV1KiYiIiVGZXUpRmN1IiIjRmV1ISIiKiYiIiZGZXVGY3VGZXVGZXVGaXVGanU3I0ZgdQ==
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USRkZWdGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGOy8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkQvJS9tYXRoYmFja2dyb3VuZEdGRy8lK2ZvbnRmYW1pbHlHRjIvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjUtSSNtb0dGJTYzUSM6PUYoLyUlZm9ybUdRJmluZml4RigvJSZmZW5jZUdGOC8lKnNlcGFyYXRvckdGOC8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRltwLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShtYXhzaXplR1EpaW5maW5pdHlGKC8lKG1pbnNpemVHUSIxRigvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGWC8lJXNpemVHRjUvJStmb3JlZ3JvdW5kR0ZELyUrYmFja2dyb3VuZEdGRy1JI21uR0YlNjlRIjNGKEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSRkZWdHRigiIiQ3I0Zlcg==
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNOMUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYkNiUtRl9vNjNRIltGKC9GY29RJ3ByZWZpeEYoL0Zmb0Y7RmdvL0Zqb1EudGhpbm1hdGhzcGFjZUYoL0ZdcEZfci9GX3BGO0ZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUknbXRhYmxlR0YlNiUtSSRtdHJHRiU2JS1JJG10ZEdGJTYjLUkjbW5HRiU2OVEiMEYoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG9GanItRltzNiMtRl5zNjlRIjJGKEYwRjNGNkZhc0Y8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GYnNGXG8tRmhyNiUtRltzNiMtRl5zNjlGZ3BGMEYzRjZGYXNGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmJzRlxvRmpyLUZbczYjLUZeczY5USkmbWludXM7NUYoRjBGM0Y2RmFzRjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZic0Zcby1GaHI2JUZqckZbdC1GW3M2Iy1GXnM2OVEiNEYoRjBGM0Y2RmFzRjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbkZic0Zcby1GX282M1EiXUYoL0Zjb1EocG9zdGZpeEYoRl1yRmdvRl5yL0ZdcFEydmVyeXRoaW5tYXRoc3BhY2VGKEZhckZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcTcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjPkkjTjFHRigtSSdSVEFCTEVHRig2JSIoOzAoXC1JJ01BVFJJWEdGKDYjNyU3JSIiIUZjdiIiIzclIiIiRmN2ISImNyVGY3ZGZnYiIiVJJ01hdHJpeEc2JCUqcHJvdGVjdGVkR0YqNyMtRmp2NiMvSSQlaWRHRihGXXY=
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtRiQ2JS1JI21vR0YlNjNRIltGKC8lJWZvcm1HUSdwcmVmaXhGKC8lJmZlbmNlR1EldHJ1ZUYoLyUqc2VwYXJhdG9yR1EmZmFsc2VGKC8lJ2xzcGFjZUdRLnRoaW5tYXRoc3BhY2VGKC8lJ3JzcGFjZUdGPS8lKXN0cmV0Y2h5R0Y3LyUqc3ltbWV0cmljR0Y6LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOi8lLm1vdmFibGVsaW1pdHNHRjovJSdhY2NlbnRHRjovJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lJXNpemVHUSMxMkYoLyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC1GJDYjLUknbXRhYmxlR0YlNiUtSSRtdHJHRiU2Iy1JJG10ZEdGJTYjLUkjbW5HRiU2OUZJLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZVLyUlYm9sZEdGOi8lJ2l0YWxpY0dGOi8lKnVuZGVybGluZUdGOi8lKnN1YnNjcmlwdEdGOi8lLHN1cGVyc2NyaXB0R0Y6LyUrZm9yZWdyb3VuZEdGWC8lK2JhY2tncm91bmRHRmVuLyUnb3BhcXVlR0Y6LyUrZXhlY3V0YWJsZUdGOi8lKXJlYWRvbmx5R0Y3LyUpY29tcG9zZWRHRjovJSpjb252ZXJ0ZWRHRjovJStpbXNlbGVjdGVkR0Y6LyUscGxhY2Vob2xkZXJHRjovJTBmb250X3N0eWxlX25hbWVHRlIvJSptYXRoY29sb3JHRlgvJS9tYXRoYmFja2dyb3VuZEdGZW4vJStmb250ZmFtaWx5R0Zmby8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGVUZbby1GXG82Iy1GX282Iy1GYm82OVEiMkYoRmRvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl1yRmByLUYvNjNRIl1GKC9GM1EocG9zdGZpeEYoRjVGOEY7L0Y/UTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRkBGQkZERkdGSkZMRk5GUEZTRlZGWS1GLzYzUSIsRigvRjNRJmluZml4RigvRjZGOi9GOUY3L0Y8USQwZW1GKC9GP1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvRkFGOkZCRkRGR0ZKRkxGTkZQRlNGVkZZLUYkNiVGLi1GJDYjLUZpbjYlLUZcbzYlRmRyLUZfbzYjLUZibzY5USIwRihGZG9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXXJGYHJGXm8tRlxvNiUtRl9vNiMtRmJvNjlRKSZtaW51czszRihGZG9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXXJGYHJGZHQtRl9vNiMtRmJvNjlRKSZtaW51czsyRihGZG9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXXJGYHItRlxvNiVGXm9GZHRGXm9GaXI3Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3JC1JJ1JUQUJMRUdGKDYlIihfRCF5LUknTUFUUklYR0YoNiM3JTcjIiIiRmV2NyMiIiMmSSdWZWN0b3JHNiQlKnByb3RlY3RlZEdGKjYjSSdjb2x1bW5HRigtRl52NiUiKEdgInktRmJ2NiM3JTclRmh2IiIhRmZ2NyUhIiRGZnchIiM3JUZmdkZmd0ZmdkknTWF0cml4R0ZbdzckLUZpdjYjL0kkJWlkR0YoRmB2LUZbeDYjL0ZgeEZhdw==
Once again we put this in a block of code to give us a nice but disguised example.
Poly1 := (x-1)^2*(x-2):
MaxValP := 6:
Poly2 := expand(Poly1):
MatSize := degree(Poly2,x):
N1 := CompanionMatrix(Poly2,x):
test := 0:
while test = 0 do:
P1 := RandomMatrix(MatSize,MatSize,generator=rand(-MaxValP..MaxValP)):
d1 := abs(Determinant(P1)):
if d1 = 1 then test := 1 end if:
end do:
Q1 := P1^(-1):
M1 := P1.N1.Q1:
print("N1"=N1, "P1" = P1, "Q1"=Q1, "M1"=M1);
Eigenvectors(M1);
CharacteristicPolynomial(M1,x);
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiktRiQ2JS1JI21zR0YlNiNRI04xRigtSSNtb0dGJTYzUSI9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR1EmZmFsc2VGKC8lKnNlcGFyYXRvckdGOy8lJ2xzcGFjZUdRL3RoaWNrbWF0aHNwYWNlRigvJSdyc3BhY2VHRkAvJSlzdHJldGNoeUdGOy8lKnN5bW1ldHJpY0dGOy8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjsvJS5tb3ZhYmxlbGltaXRzR0Y7LyUnYWNjZW50R0Y7LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2JS1GMzYzUSJbRigvRjdRJ3ByZWZpeEYoL0Y6USV0cnVlRihGPC9GP1EudGhpbm1hdGhzcGFjZUYoL0ZCRmNvL0ZERmFvRkVGR0ZKRk1GT0ZRRlNGVkZZRmZuLUYkNiMtSSdtdGFibGVHRiU2JS1JJG10ckdGJTYlLUkkbXRkR0YlNiMtSSNtbkdGJTY5USIwRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHRlgvJSVib2xkR0Y7LyUnaXRhbGljR0Y7LyUqdW5kZXJsaW5lR0Y7LyUqc3Vic2NyaXB0R0Y7LyUsc3VwZXJzY3JpcHRHRjsvJStmb3JlZ3JvdW5kR0Zlbi8lK2JhY2tncm91bmRHRmhuLyUnb3BhcXVlR0Y7LyUrZXhlY3V0YWJsZUdGOy8lKXJlYWRvbmx5R0Zhby8lKWNvbXBvc2VkR0Y7LyUqY29udmVydGVkR0Y7LyUraW1zZWxlY3RlZEdGOy8lLHBsYWNlaG9sZGVyR0Y7LyUwZm9udF9zdHlsZV9uYW1lR0ZVLyUqbWF0aGNvbG9yR0Zlbi8lL21hdGhiYWNrZ3JvdW5kR0Zobi8lK2ZvbnRmYW1pbHlHRmdwLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZYRl5wLUZfcDYjLUZicDY5USIyRihGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGXnJGYHJGYnJGZHJGZnJGaHJGanJGXHNGXnNGYXMtRlxwNiUtRl9wNiMtRmJwNjlGTEZlcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZgckZickZkckZmckZockZqckZcc0Zec0Zhc0ZecC1GX3A2Iy1GYnA2OVEpJm1pbnVzOzVGKEZlcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZgckZickZkckZmckZockZqckZcc0Zec0Zhcy1GXHA2JUZecEZqcy1GX3A2Iy1GYnA2OVEiNEYoRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmByRmJyRmRyRmZyRmhyRmpyRlxzRl5zRmFzLUYzNjNRIl1GKC9GN1EocG9zdGZpeEYoRmBvRjxGYm8vRkJRMnZlcnl0aGlubWF0aHNwYWNlRihGZW9GRUZHRkpGTUZPRlFGU0ZWRllGZm4tRjM2M1EiLEYoRjZGOS9GPUZhby9GP1EkMGVtRigvRkJRM3Zlcnl0aGlja21hdGhzcGFjZUYoRkNGRUZHRkpGTUZPRlFGU0ZWRllGZm4tRiQ2JS1GLzYjUSNQMUYoRjItRiQ2JUZbby1GJDYjLUZpbzYlLUZccDYlLUZfcDYjLUZicDY5USI1RihGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGXnJGYHJGYnJGZHJGZnJGaHJGanJGXHNGXnNGYXMtRl9wNiMtRmJwNjlRKSZtaW51czs0RihGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGXnJGYHJGYnJGZHJGZnJGaHJGanJGXHNGXnNGYXMtRl9wNiMtRmJwNjlRKSZtaW51czs2RihGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGXnJGYHJGYnJGZHJGZnJGaHJGanJGXHNGXnNGYXMtRlxwNiUtRl9wNiMtRmJwNjlRKSZtaW51czsxRihGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGXnJGYHJGYnJGZHJGZnJGaHJGanJGXHNGXnNGYXMtRl9wNiMtRmJwNjlRKSZtaW51czsyRihGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGXnJGYHJGYnJGZHJGZnJGaHJGanJGXHNGXnNGYXNGanMtRlxwNiVGZXRGXnRGXnRGanRGYXUtRiQ2JS1GLzYjUSNRMUYoRjItRiQ2JUZbby1GJDYjLUZpbzYlLUZccDYlLUZfcDYjLUZicDY5USMxNUYoRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmByRmJyRmRyRmZyRmhyRmpyRlxzRl5zRmFzLUZfcDYjLUZicDY5USMxMEYoRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmByRmJyRmRyRmZyRmhyRmpyRlxzRl5zRmFzLUZfcDYjLUZicDY5USombWludXM7MTZGKEZlcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZgckZickZkckZmckZockZqckZcc0Zec0Zhcy1GXHA2JUZnd0Znd0Zqcy1GXHA2JS1GX3A2Iy1GYnA2OVEjMTNGKEZlcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZgckZickZkckZmckZockZqckZcc0Zec0Zhcy1GX3A2Iy1GYnA2OVEiOUYoRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmByRmJyRmRyRmZyRmhyRmpyRlxzRl5zRmFzLUZfcDYjLUZicDY5USombWludXM7MTRGKEZlcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZgckZickZkckZmckZockZqckZcc0Zec0Zhc0ZqdEZhdS1GJDYlLUYvNiNRI00xRihGMi1GJDYlRltvLUYkNiMtRmlvNiUtRlxwNiUtRl9wNiMtRmJwNjlRIzI0RihGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGXnJGYHJGYnJGZHJGZnJGaHJGanJGXHNGXnNGYXMtRl9wNiMtRmJwNjlRIzIwRihGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGXnJGYHJGYnJGZHJGZnJGaHJGanJGXHNGXnNGYXMtRl9wNiMtRmJwNjlRKiZtaW51czsyNkYoRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmByRmJyRmRyRmZyRmhyRmpyRlxzRl5zRmFzLUZccDYlLUZfcDYjLUZicDY5USQxMjVGKEZlcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZgckZickZkckZmckZockZqckZcc0Zec0Zhcy1GX3A2Iy1GYnA2OVEjODdGKEZlcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZgckZickZkckZmckZockZqckZcc0Zec0Zhcy1GX3A2Iy1GYnA2OVErJm1pbnVzOzEzNUYoRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmByRmJyRmRyRmZyRmhyRmpyRlxzRl5zRmFzLUZccDYlLUZfcDYjLUZicDY5USM5OUYoRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmByRmJyRmRyRmZyRmhyRmpyRlxzRl5zRmFzLUZfcDYjLUZicDY5USM3MkYoRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmByRmJyRmRyRmZyRmhyRmpyRlxzRl5zRmFzLUZfcDYjLUZicDY5USsmbWludXM7MTA3RihGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGXnJGYHJGYnJGZHJGZnJGaHJGanJGXHNGXnNGYXNGanQ3Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Ji9GMS1JJ1JUQUJMRUdGKDYlIihPd2wlLUknTUFUUklYR0YoNiM3JTclIiIhRmBgbCIiIzclIiIiRmBgbCEiJjclRmBgbEZjYGwiIiVJJ01hdHJpeEc2JCUqcHJvdGVjdGVkR0YqL0Zddi1GaF9sNiUiKDdZRigtRlxgbDYjNyU3JSIiJiEiJSEiJzclISIiISIjRmNgbDclRmZgbEZkYGxGZGBsRmdgbC9GZ3gtRmhfbDYlIig3amglLUZcYGw2IzclNyUiIzoiIzUhIzs3JUZmYWxGZmFsRmNgbDclIiM4IiIqISM5RmdgbC9GZltsLUZoX2w2JSIoM2oqei1GXGBsNiM3JTclIiNDIiM/ISNFNyUiJEQiIiMoKSEkTiI3JSIjKioiI3MhJDIiRmdgbDcmL0YxLUZnYGw2Iy9JJCVpZEdGKEZqX2wvRl12LUZnYGw2Iy9GYWRsRl1hbC9GZ3gtRmdgbDYjL0ZhZGxGXGJsL0ZmW2wtRmdgbDYjL0ZhZGxGXGNs
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtRiQ2JS1JI21vR0YlNjNRIltGKC8lJWZvcm1HUSdwcmVmaXhGKC8lJmZlbmNlR1EldHJ1ZUYoLyUqc2VwYXJhdG9yR1EmZmFsc2VGKC8lJ2xzcGFjZUdRLnRoaW5tYXRoc3BhY2VGKC8lJ3JzcGFjZUdGPS8lKXN0cmV0Y2h5R0Y3LyUqc3ltbWV0cmljR0Y6LyUobWF4c2l6ZUdRKWluZmluaXR5RigvJShtaW5zaXplR1EiMUYoLyUobGFyZ2VvcEdGOi8lLm1vdmFibGVsaW1pdHNHRjovJSdhY2NlbnRHRjovJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lJXNpemVHUSMxMkYoLyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC1GJDYjLUknbXRhYmxlR0YlNiUtSSRtdHJHRiU2Iy1JJG10ZEdGJTYjLUkjbW5HRiU2OVEiMkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZVLyUlYm9sZEdGOi8lJ2l0YWxpY0dGOi8lKnVuZGVybGluZUdGOi8lKnN1YnNjcmlwdEdGOi8lLHN1cGVyc2NyaXB0R0Y6LyUrZm9yZWdyb3VuZEdGWC8lK2JhY2tncm91bmRHRmVuLyUnb3BhcXVlR0Y6LyUrZXhlY3V0YWJsZUdGOi8lKXJlYWRvbmx5R0Y3LyUpY29tcG9zZWRHRjovJSpjb252ZXJ0ZWRHRjovJStpbXNlbGVjdGVkR0Y6LyUscGxhY2Vob2xkZXJHRjovJTBmb250X3N0eWxlX25hbWVHRlIvJSptYXRoY29sb3JHRlgvJS9tYXRoYmFja2dyb3VuZEdGZW4vJStmb250ZmFtaWx5R0Znby8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGVS1GXG82Iy1GX282Iy1GYm82OUZJRmVvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmFyRmNyLUYvNjNRIl1GKC9GM1EocG9zdGZpeEYoRjVGOEY7L0Y/UTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRkBGQkZERkdGSkZMRk5GUEZTRlZGWS1GLzYzUSIsRigvRjNRJmluZml4RigvRjZGOi9GOUY3L0Y8USQwZW1GKC9GP1EzdmVyeXRoaWNrbWF0aHNwYWNlRigvRkFGOkZCRkRGR0ZKRkxGTkZQRlNGVkZZLUYkNiVGLi1GJDYjLUZpbjYlLUZcbzYlLUZfbzYjLUkmbWZyYWNHRiU2Ki1GYm82OVEiN0YoRmVvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl5yRmFyLUZibzY5USI5RihGZW9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGXnJGYXIvJS5saW5ldGhpY2tuZXNzR1EiMUYoLyUrZGVub21hbGlnbkdRJ2NlbnRlckYoLyUpbnVtYWxpZ25HRmR1LyUpYmV2ZWxsZWRHRjpGVkZZLUZfbzYjLUZndDYqLUZibzY5USI4RihGZW9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGXnJGYXJGXHVGX3VGYnVGZXVGZ3VGVkZZLUZfbzYjLUZibzY5USIwRihGZW9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGXnJGYXItRlxvNiUtRl9vNiMtRmd0NiotRmJvNjlRIjRGKEZlb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZhckZcdUZfdUZidUZldUZndUZWRlktRl9vNiMtRmd0NiotRmJvNjlRIjVGKEZlb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZhci1GYm82OVEjMThGKEZlb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZeckZhckZfdUZidUZldUZndUZWRllGYHYtRlxvNiVGZXJGZXJGYHZGaXI3Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3JC1JJ1JUQUJMRUdGKDYlIig7Z3UlLUknTUFUUklYR0YoNiM3JTcjIiIjNyMiIiJGangmSSdWZWN0b3JHNiQlKnByb3RlY3RlZEdGKjYjSSdjb2x1bW5HRigtRmF4NiUiJ2smNCgtRmV4NiM3JTclIyIiKCIiKiMiIilGW3oiIiE3JSMiIiVGW3ojIiImIiM9Rl56NyVGW3lGW3lGXnpJJ01hdHJpeEdGXnk3JC1GXHk2Iy9JJCVpZEdGKEZjeC1GZno2Iy9GW1tsRmR5
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiktRiQ2Iy1JJW1zdXBHRiU2JS1JI21pR0YlNjlRInhGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdRIzEyRigvJSVib2xkR1EmZmFsc2VGKC8lJ2l0YWxpY0dRJXRydWVGKC8lKnVuZGVybGluZUdGPS8lKnN1YnNjcmlwdEdGPS8lLHN1cGVyc2NyaXB0R0Y9LyUrZm9yZWdyb3VuZEdRKlswLDAsMjU1XUYoLyUrYmFja2dyb3VuZEdRLlsyNTUsMjU1LDI1NV1GKC8lJ29wYXF1ZUdGPS8lK2V4ZWN1dGFibGVHRj0vJSlyZWFkb25seUdGQC8lKWNvbXBvc2VkR0Y9LyUqY29udmVydGVkR0Y9LyUraW1zZWxlY3RlZEdGPS8lLHBsYWNlaG9sZGVyR0Y9LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSptYXRoY29sb3JHRkkvJS9tYXRoYmFja2dyb3VuZEdGTC8lK2ZvbnRmYW1pbHlHRjcvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YoLyUpbWF0aHNpemVHRjotSSNtbkdGJTY5USIzRihGNUY4RjsvRj9GPUZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcby9GX29RJ25vcm1hbEYoRmFvLyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGKC1JI21vR0YlNjNRKCZtaW51cztGKC8lJWZvcm1HUSZpbmZpeEYoLyUmZmVuY2VHRj0vJSpzZXBhcmF0b3JHRj0vJSdsc3BhY2VHUTBtZWRpdW1tYXRoc3BhY2VGKC8lJ3JzcGFjZUdGanAvJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUwZm9udF9zdHlsZV9uYW1lR0Znbi8lJXNpemVHRjovJStmb3JlZ3JvdW5kR0ZJLyUrYmFja2dyb3VuZEdGTC1GJDYlLUZkbzY5USI0RihGNUY4RjtGZ29GQUZDRkVGR0ZKRk1GT0ZRRlNGVUZXRllGZW5GaG5Gam5GXG9GaG9GYW8tRl5wNjNRMSZJbnZpc2libGVUaW1lcztGKEZhcEZkcEZmcC9GaXBRJDBlbUYoL0ZccUZec0ZdcUZfcUZhcUZkcUZncUZpcUZbckZdckZfckZhckZjci1GLzYlRjEtRmRvNjlRIjJGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0Zqby1GXnA2M1EiK0YoRmFwRmRwRmZwRmhwRltxRl1xRl9xRmFxRmRxRmdxRmlxRltyRl1yRl9yRmFyRmNyLUYkNiUtRmRvNjlRIjVGKEY1RjhGO0Znb0ZBRkNGRUZHRkpGTUZPRlFGU0ZVRldGWUZlbkZobkZqbkZcb0Zob0Zhb0ZqckYxRl1wRmJzNyMsKiokKUkieEdGKCIiJCIiIkZjdComIiIlRmN0KUZhdCIiI0ZjdCEiIiomIiImRmN0RmF0RmN0RmN0Rmd0Rmh0
Executing the block above with Poly1 = (x-1)^2*(x-2) gives a matrix M1 where Rank(M1-I)=2 and Rank((M1-I)^2)=1.
Executing the block above with Poly1 = (x^2-x+1)*(x-2) gives a matrix M1 with complex eigenvectors
Special construction tools
There are a number of commands for Matrix construction that are quite useful for special cases. The commands are gathered here. They are simple enough to understand that an example will suffice.
I3 := IdentityMatrix(3);
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNJM0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYkNiUtRl9vNjNRIltGKC9GY29RJ3ByZWZpeEYoL0Zmb0Y7RmdvL0Zqb1EudGhpbm1hdGhzcGFjZUYoL0ZdcEZfci9GX3BGO0ZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUknbXRhYmxlR0YlNiUtSSRtdHJHRiU2JS1JJG10ZEdGJTYjLUkjbW5HRiU2OUZncEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvLUZbczYjLUZeczY5USIwRihGMEYzRjZGYHNGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmFzRlxvRmNzLUZocjYlRmNzRmpyRmNzLUZocjYlRmNzRmNzRmpyLUZfbzYzUSJdRigvRmNvUShwb3N0Zml4RihGXXJGZ29GXnIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRmFyRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSNJM0dGKC1JJ1JUQUJMRUdGKDYlIihzPV8nLUknTUFUUklYR0YoNiM3JTclIiIiIiIhRmV1NyVGZXVGZHVGZXU3JUZldUZldUZkdUknTWF0cml4RzYkJSpwcm90ZWN0ZWRHRio3Iy1GaHU2Iy9JJCVpZEdGKEZedQ==
Z3 := ZeroMatrix(3);
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNaM0YoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYkNiUtRl9vNjNRIltGKC9GY29RJ3ByZWZpeEYoL0Zmb0Y7RmdvL0Zqb1EudGhpbm1hdGhzcGFjZUYoL0ZdcEZfci9GX3BGO0ZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUknbXRhYmxlR0YlNiUtSSRtdHJHRiU2JS1JJG10ZEdGJTYjLUkjbW5HRiU2OVEiMEYoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG9GanJGanJGZ3JGZ3ItRl9vNjNRIl1GKC9GY29RKHBvc3RmaXhGKEZdckZnb0Zeci9GXXBRMnZlcnl0aGlubWF0aHNwYWNlRihGYXJGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHE3Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JI1ozR0YoLUknUlRBQkxFR0YoNiUiKC8+LSgtSSdNQVRSSVhHRig2IzclNyUiIiFGXHVGXHVGW3VGW3VJJ01hdHJpeEc2JCUqcHJvdGVjdGVkR0YqNyMtRl11NiMvSSQlaWRHRihGZnQ=
D1 := DiagonalMatrix([2,3,4]);
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNEMUYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYkNiUtRl9vNjNRIltGKC9GY29RJ3ByZWZpeEYoL0Zmb0Y7RmdvL0Zqb1EudGhpbm1hdGhzcGFjZUYoL0ZdcEZfci9GX3BGO0ZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUknbXRhYmxlR0YlNiUtSSRtdHJHRiU2JS1JJG10ZEdGJTYjLUkjbW5HRiU2OVEiMkYoRjBGM0Y2L0Y6RjhGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduL0ZqblEnbm9ybWFsRihGXG8tRltzNiMtRl5zNjlRIjBGKEYwRjNGNkZhc0Y8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GYnNGXG9GZHMtRmhyNiVGZHMtRltzNiMtRl5zNjlRIjNGKEYwRjNGNkZhc0Y8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GYnNGXG9GZHMtRmhyNiVGZHNGZHMtRltzNiMtRl5zNjlRIjRGKEYwRjNGNkZhc0Y8Rj5GQEZCRkVGSEZKRkxGTkZQRlJGVEZWRllGZW5GZ25GYnNGXG8tRl9vNjNRIl1GKC9GY29RKHBvc3RmaXhGKEZdckZnb0Zeci9GXXBRMnZlcnl0aGlubWF0aHNwYWNlRihGYXJGYHBGYnBGZXBGaHBGanBGXHFGXnFGYHFGYnFGZHE3Iy1fRilJLG1wcmludHNsYXNoR0YoNiQ3Iz5JI0QxR0YoLUknUlRBQkxFR0YoNiUiKFthTSctSSdNQVRSSVhHRig2IzclNyUiIiMiIiFGYHY3JUZgdiIiJEZgdjclRmB2RmB2IiIlSSdNYXRyaXhHNiQlKnByb3RlY3RlZEdGKjcjLUZldjYjL0kkJWlkR0YoRml1
ScalarMatrix(x,2,3);
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtb0dGJTYzUSJbRigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJXRydWVGKC8lKnNlcGFyYXRvckdRJmZhbHNlRigvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRigvJSdyc3BhY2VHRjsvJSlzdHJldGNoeUdGNS8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2Iy1JJ210YWJsZUdGJTYkLUkkbXRyR0YlNiUtSSRtdGRHRiU2Iy1JI21pR0YlNjlRInhGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdGUy8lJWJvbGRHRjgvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHRlYvJStiYWNrZ3JvdW5kR0ZZLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y1LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHRlAvJSptYXRoY29sb3JHRlYvJS9tYXRoYmFja2dyb3VuZEdGWS8lK2ZvbnRmYW1pbHlHRmVvLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0ZTLUZdbzYjLUkjbW5HRiU2OVEiMEYoRmNvRmZvRmhvL0ZbcEY4RlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxL0ZdclEnbm9ybWFsRihGX3JGYXItRmpuNiVGYXJGXG9GYXItRi02M1EiXUYoL0YxUShwb3N0Zml4RihGM0Y2RjkvRj1RMnZlcnl0aGlubWF0aHNwYWNlRihGPkZARkJGRUZIRkpGTEZORlFGVEZXNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyMtSSdSVEFCTEVHRig2JSIoS0pvJS1JJ01BVFJJWEdGKDYjNyQ3JUkieEdGKCIiIUZjdDclRmN0RmJ0RmN0SSdNYXRyaXhHNiQlKnByb3RlY3RlZEdGKjcjLUZldDYjL0kkJWlkR0YoRlx0
ScalarMatrix(x,2);
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtb0dGJTYzUSJbRigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJXRydWVGKC8lKnNlcGFyYXRvckdRJmZhbHNlRigvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRigvJSdyc3BhY2VHRjsvJSlzdHJldGNoeUdGNS8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2Iy1JJ210YWJsZUdGJTYkLUkkbXRyR0YlNiQtSSRtdGRHRiU2Iy1JI21pR0YlNjlRInhGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdGUy8lJWJvbGRHRjgvJSdpdGFsaWNHRjUvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHRlYvJStiYWNrZ3JvdW5kR0ZZLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y1LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHRlAvJSptYXRoY29sb3JHRlYvJS9tYXRoYmFja2dyb3VuZEdGWS8lK2ZvbnRmYW1pbHlHRmVvLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGKC8lKW1hdGhzaXplR0ZTLUZdbzYjLUkjbW5HRiU2OVEiMEYoRmNvRmZvRmhvL0ZbcEY4RlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxL0ZdclEnbm9ybWFsRihGX3ItRmpuNiRGYXJGXG8tRi02M1EiXUYoL0YxUShwb3N0Zml4RihGM0Y2RjkvRj1RMnZlcnl0aGlubWF0aHNwYWNlRihGPkZARkJGRUZIRkpGTEZORlFGVEZXNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyMtSSdSVEFCTEVHRig2JSIoIypSWiUtSSdNQVRSSVhHRig2IzckNyRJInhHRigiIiE3JEZjdEZidEknTWF0cml4RzYkJSpwcm90ZWN0ZWRHRio3Iy1GZXQ2Iy9JJCVpZEdGKEZcdA==
M2 := JordanBlockMatrix([[1,2],[3,1]]);
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtaUdGJTY5USNNMkYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR1EjMTJGKC8lJWJvbGRHUSZmYWxzZUYoLyUnaXRhbGljR1EldHJ1ZUYoLyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR1EqWzAsMCwyNTVdRigvJStiYWNrZ3JvdW5kR1EuWzI1NSwyNTUsMjU1XUYoLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y7LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHUSoyRH5PdXRwdXRGKC8lKm1hdGhjb2xvckdGRC8lL21hdGhiYWNrZ3JvdW5kR0ZHLyUrZm9udGZhbWlseUdGMi8lLG1hdGh2YXJpYW50R1EnaXRhbGljRigvJSltYXRoc2l6ZUdGNS1JI21vR0YlNjNRIzo9RigvJSVmb3JtR1EmaW5maXhGKC8lJmZlbmNlR0Y4LyUqc2VwYXJhdG9yR0Y4LyUnbHNwYWNlR1EvdGhpY2ttYXRoc3BhY2VGKC8lJ3JzcGFjZUdGW3AvJSlzdHJldGNoeUdGOC8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZYLyUlc2l6ZUdGNS8lK2ZvcmVncm91bmRHRkQvJStiYWNrZ3JvdW5kR0ZHLUYkNiUtRl9vNjNRIltGKC9GY29RJ3ByZWZpeEYoL0Zmb0Y7RmdvL0Zqb1EudGhpbm1hdGhzcGFjZUYoL0ZdcEZfci9GX3BGO0ZgcEZicEZlcEZocEZqcEZccUZecUZgcUZicUZkcS1GJDYjLUknbXRhYmxlR0YlNiUtSSRtdHJHRiU2JS1JJG10ZEdGJTYjLUkjbW5HRiU2OUZncEYwRjNGNi9GOkY4RjxGPkZARkJGRUZIRkpGTEZORlBGUkZURlZGWUZlbkZnbi9Gam5RJ25vcm1hbEYoRlxvRmpyLUZbczYjLUZeczY5USIwRihGMEYzRjZGYHNGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmFzRlxvLUZocjYlRmNzRmpyRmNzLUZocjYlRmNzRmNzLUZbczYjLUZeczY5USIzRihGMEYzRjZGYHNGPEY+RkBGQkZFRkhGSkZMRk5GUEZSRlRGVkZZRmVuRmduRmFzRlxvLUZfbzYzUSJdRigvRmNvUShwb3N0Zml4RihGXXJGZ29GXnIvRl1wUTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRmFyRmBwRmJwRmVwRmhwRmpwRlxxRl5xRmBxRmJxRmRxNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyM+SSNNMkdGKC1JJ1JUQUJMRUdGKDYlIihbRFMlLUknTUFUUklYR0YoNiM3JTclIiIiRml1IiIhNyVGanVGaXVGanU3JUZqdUZqdSIiJEknTWF0cml4RzYkJSpwcm90ZWN0ZWRHRio3Iy1GXnY2Iy9JJCVpZEdGKEZjdQ==
RandomMatrix(3,4);
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtb0dGJTYzUSJbRigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJXRydWVGKC8lKnNlcGFyYXRvckdRJmZhbHNlRigvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRigvJSdyc3BhY2VHRjsvJSlzdHJldGNoeUdGNS8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2Iy1JJ210YWJsZUdGJTYlLUkkbXRyR0YlNiYtSSRtdGRHRiU2Iy1JI21uR0YlNjlRIzgyRigvJSdmYW1pbHlHUTBUaW1lc35OZXd+Um9tYW5GKC8lJXNpemVHRlMvJSVib2xkR0Y4LyUnaXRhbGljR0Y4LyUqdW5kZXJsaW5lR0Y4LyUqc3Vic2NyaXB0R0Y4LyUsc3VwZXJzY3JpcHRHRjgvJStmb3JlZ3JvdW5kR0ZWLyUrYmFja2dyb3VuZEdGWS8lJ29wYXF1ZUdGOC8lK2V4ZWN1dGFibGVHRjgvJSlyZWFkb25seUdGNS8lKWNvbXBvc2VkR0Y4LyUqY29udmVydGVkR0Y4LyUraW1zZWxlY3RlZEdGOC8lLHBsYWNlaG9sZGVyR0Y4LyUwZm9udF9zdHlsZV9uYW1lR0ZQLyUqbWF0aGNvbG9yR0ZWLyUvbWF0aGJhY2tncm91bmRHRlkvJStmb250ZmFtaWx5R0Zlby8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRigvJSltYXRoc2l6ZUdGUy1GXW82Iy1GYG82OVEjNTVGKEZjb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZfci1GXW82Iy1GYG82OVEjMzBGKEZjb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZfci1GXW82Iy1GYG82OVEjNTBGKEZjb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZfci1Gam42Ji1GXW82Iy1GYG82OVEqJm1pbnVzOzMwRihGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3ItRl1vNiMtRmBvNjlRIzQ0RihGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3ItRl1vNiMtRmBvNjlRIzgwRihGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3ItRl1vNiMtRmBvNjlRKiZtaW51czs2NEYoRmNvRmZvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl9yLUZqbjYmLUZdbzYjLUZgbzY5USM1N0YoRmNvRmZvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl9yLUZdbzYjLUZgbzY5USMxMEYoRmNvRmZvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl9yLUZdbzYjLUZgbzY5USMzNUYoRmNvRmZvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl9yLUZdbzYjLUZgbzY5USM1MUYoRmNvRmZvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl9yLUYtNjNRIl1GKC9GMVEocG9zdGZpeEYoRjNGNkY5L0Y9UTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRj5GQEZCRkVGSEZKRkxGTkZRRlRGVzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjLUknUlRBQkxFR0YoNiUiKE96LiQtSSdNQVRSSVhHRig2IzclNyYiIyMpIiNiIiNJIiNdNyYhI0kiI1ciIyEpISNrNyYiI2QiIzUiI04iI15JJ01hdHJpeEc2JCUqcHJvdGVjdGVkR0YqNyMtRmB4NiMvSSQlaWRHRihGXHc=
RandomMatrix(3,4,generator=rand(10));
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtb0dGJTYzUSJbRigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJXRydWVGKC8lKnNlcGFyYXRvckdRJmZhbHNlRigvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRigvJSdyc3BhY2VHRjsvJSlzdHJldGNoeUdGNS8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2Iy1JJ210YWJsZUdGJTYlLUkkbXRyR0YlNiYtSSRtdGRHRiU2Iy1JI21uR0YlNjlGRy8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdGUy8lJWJvbGRHRjgvJSdpdGFsaWNHRjgvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHRlYvJStiYWNrZ3JvdW5kR0ZZLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y1LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHRlAvJSptYXRoY29sb3JHRlYvJS9tYXRoYmFja2dyb3VuZEdGWS8lK2ZvbnRmYW1pbHlHRmRvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZTLUZdbzYjLUZgbzY5USI0RihGYm9GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXnItRl1vNiMtRmBvNjlRIjVGKEZib0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZeci1GXW82Iy1GYG82OVEiNkYoRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUZqbjYmLUZdbzYjLUZgbzY5USIyRihGYm9GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXnJGYXNGanItRl1vNiMtRmBvNjlRIjhGKEZib0Zlb0Znb0Zpb0ZbcEZdcEZfcEZhcEZjcEZlcEZncEZpcEZbcUZdcUZfcUZhcUZjcUZlcUZncUZpcUZbckZeci1Gam42JkZqci1GXW82Iy1GYG82OVEiM0YoRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yRmpyRmVyLUYtNjNRIl1GKC9GMVEocG9zdGZpeEYoRjNGNkY5L0Y9UTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRj5GQEZCRkVGSEZKRkxGTkZRRlRGVzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjLUknUlRBQkxFR0YoNiUiKF9NbictSSdNQVRSSVhHRig2IzclNyYiIiIiIiUiIiYiIic3JiIiI0ZddkZbdiIiKTcmRlt2IiIkRlt2Rmp1SSdNYXRyaXhHNiQlKnByb3RlY3RlZEdGKjcjLUZhdjYjL0kkJWlkR0YoRmJ1
RandomMatrix(3,4,generator=rand(-10..10));
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtb0dGJTYzUSJbRigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJXRydWVGKC8lKnNlcGFyYXRvckdRJmZhbHNlRigvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRigvJSdyc3BhY2VHRjsvJSlzdHJldGNoeUdGNS8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2Iy1JJ210YWJsZUdGJTYlLUkkbXRyR0YlNiYtSSRtdGRHRiU2Iy1JI21uR0YlNjlRKiZtaW51czsxMEYoLyUnZmFtaWx5R1EwVGltZXN+TmV3flJvbWFuRigvJSVzaXplR0ZTLyUlYm9sZEdGOC8lJ2l0YWxpY0dGOC8lKnVuZGVybGluZUdGOC8lKnN1YnNjcmlwdEdGOC8lLHN1cGVyc2NyaXB0R0Y4LyUrZm9yZWdyb3VuZEdGVi8lK2JhY2tncm91bmRHRlkvJSdvcGFxdWVHRjgvJStleGVjdXRhYmxlR0Y4LyUpcmVhZG9ubHlHRjUvJSljb21wb3NlZEdGOC8lKmNvbnZlcnRlZEdGOC8lK2ltc2VsZWN0ZWRHRjgvJSxwbGFjZWhvbGRlckdGOC8lMGZvbnRfc3R5bGVfbmFtZUdGUC8lKm1hdGhjb2xvckdGVi8lL21hdGhiYWNrZ3JvdW5kR0ZZLyUrZm9udGZhbWlseUdGZW8vJSxtYXRodmFyaWFudEdRJ25vcm1hbEYoLyUpbWF0aHNpemVHRlMtRl1vNiMtRmBvNjlRIjlGKEZjb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZfci1GXW82Iy1GYG82OUZHRmNvRmZvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl9yLUZdbzYjLUZgbzY5USI3RihGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3ItRmpuNiYtRl1vNiMtRmBvNjlRIjVGKEZjb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZfci1GXW82Iy1GYG82OVEiMkYoRmNvRmZvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl9yLUZdbzYjLUZgbzY5USIzRihGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3JGXG8tRmpuNiYtRl1vNiMtRmBvNjlRKSZtaW51czsxRihGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3ItRl1vNiMtRmBvNjlRKSZtaW51czs2RihGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3JGZnJGZnMtRi02M1EiXUYoL0YxUShwb3N0Zml4RihGM0Y2RjkvRj1RMnZlcnl0aGlubWF0aHNwYWNlRihGPkZARkJGRUZIRkpGTEZORlFGVEZXNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyMtSSdSVEFCTEVHRig2JSIod3p4JS1JJ01BVFJJWEdGKDYjNyU3JiEjNSIiKiIiIiIiKDcmIiImIiIjIiIkRmJ2NyYhIiIhIidGZHZGaHZJJ01hdHJpeEc2JCUqcHJvdGVjdGVkR0YqNyMtRl13NiMvSSQlaWRHRihGXHY=
The general matrix constructor is quite powerful in that you can specify a function of i and j to fill in the entries.
f1 := (i,j)-> rand(-5..5)():
Matrix(3,3,f1);
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtb0dGJTYzUSJbRigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJXRydWVGKC8lKnNlcGFyYXRvckdRJmZhbHNlRigvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRigvJSdyc3BhY2VHRjsvJSlzdHJldGNoeUdGNS8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2Iy1JJ210YWJsZUdGJTYlLUkkbXRyR0YlNiUtSSRtdGRHRiU2Iy1JI21uR0YlNjlRIjVGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdGUy8lJWJvbGRHRjgvJSdpdGFsaWNHRjgvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHRlYvJStiYWNrZ3JvdW5kR0ZZLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y1LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHRlAvJSptYXRoY29sb3JHRlYvJS9tYXRoYmFja2dyb3VuZEdGWS8lK2ZvbnRmYW1pbHlHRmVvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZTLUZdbzYjLUZgbzY5USI0RihGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3ItRl1vNiMtRmBvNjlRKSZtaW51czs1RihGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3ItRmpuNiUtRl1vNiMtRmBvNjlRIjBGKEZjb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZfci1GXW82Iy1GYG82OVEpJm1pbnVzOzJGKEZjb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZfci1GXW82Iy1GYG82OVEpJm1pbnVzOzNGKEZjb0Zmb0Zob0Zqb0ZccEZecEZgcEZicEZkcEZmcEZocEZqcEZccUZecUZgcUZicUZkcUZmcUZocUZqcUZcckZfci1Gam42JS1GXW82Iy1GYG82OVEiM0YoRmNvRmZvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl9yRmJzRmFyLUYtNjNRIl1GKC9GMVEocG9zdGZpeEYoRjNGNkY5L0Y9UTJ2ZXJ5dGhpbm1hdGhzcGFjZUYoRj5GQEZCRkVGSEZKRkxGTkZRRlRGVzcjLV9GKUksbXByaW50c2xhc2hHRig2JDcjLUknUlRBQkxFR0YoNiUiKEtDKUgtSSdNQVRSSVhHRig2IzclNyUiIiYiIiUhIiY3JSIiISEiIyEiJDclIiIkRl52Rmp1SSdNYXRyaXhHNiQlKnByb3RlY3RlZEdGKjcjLUZidjYjL0kkJWlkR0YoRmN1
With a modification of f1 we can produce triangular and unitriangular matrices
f1 := (i,j)-> if i>j then 0
else rand(-5..5)()end if:
Matrix(3,3,f1);
f1 := (i,j)-> if i>j then 0
elif i=j then 1
else rand(-5..5)()end if:
Matrix(3,3,f1);
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtb0dGJTYzUSJbRigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJXRydWVGKC8lKnNlcGFyYXRvckdRJmZhbHNlRigvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRigvJSdyc3BhY2VHRjsvJSlzdHJldGNoeUdGNS8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2Iy1JJ210YWJsZUdGJTYlLUkkbXRyR0YlNiUtSSRtdGRHRiU2Iy1JI21uR0YlNjlRIjRGKC8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdGUy8lJWJvbGRHRjgvJSdpdGFsaWNHRjgvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHRlYvJStiYWNrZ3JvdW5kR0ZZLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y1LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHRlAvJSptYXRoY29sb3JHRlYvJS9tYXRoYmFja2dyb3VuZEdGWS8lK2ZvbnRmYW1pbHlHRmVvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZTLUZdbzYjLUZgbzY5USkmbWludXM7NEYoRmNvRmZvRmhvRmpvRlxwRl5wRmBwRmJwRmRwRmZwRmhwRmpwRlxxRl5xRmBxRmJxRmRxRmZxRmhxRmpxRlxyRl9yLUZdbzYjLUZgbzY5USIwRihGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3ItRmpuNiVGZnItRl1vNiMtRmBvNjlRKSZtaW51czszRihGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3ItRl1vNiMtRmBvNjlRKSZtaW51czsxRihGY29GZm9GaG9Gam9GXHBGXnBGYHBGYnBGZHBGZnBGaHBGanBGXHFGXnFGYHFGYnFGZHFGZnFGaHFGanFGXHJGX3ItRmpuNiVGZnJGZnJGZnItRi02M1EiXUYoL0YxUShwb3N0Zml4RihGM0Y2RjkvRj1RMnZlcnl0aGlubWF0aHNwYWNlRihGPkZARkJGRUZIRkpGTEZORlFGVEZXNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyMtSSdSVEFCTEVHRig2JSIoR192JS1JJ01BVFJJWEdGKDYjNyU3JSIiJSEiJSIiITclRmF1ISIkISIiNyVGYXVGYXVGYXVJJ01hdHJpeEc2JCUqcHJvdGVjdGVkR0YqNyMtRmZ1NiMvSSQlaWRHRihGaXQ=
NiQtSSVtcm93RzYjL0krbW9kdWxlbmFtZUc2IkksVHlwZXNldHRpbmdHSShfc3lzbGliR0YoNiUtSSNtb0dGJTYzUSJbRigvJSVmb3JtR1EncHJlZml4RigvJSZmZW5jZUdRJXRydWVGKC8lKnNlcGFyYXRvckdRJmZhbHNlRigvJSdsc3BhY2VHUS50aGlubWF0aHNwYWNlRigvJSdyc3BhY2VHRjsvJSlzdHJldGNoeUdGNS8lKnN5bW1ldHJpY0dGOC8lKG1heHNpemVHUSlpbmZpbml0eUYoLyUobWluc2l6ZUdRIjFGKC8lKGxhcmdlb3BHRjgvJS5tb3ZhYmxlbGltaXRzR0Y4LyUnYWNjZW50R0Y4LyUwZm9udF9zdHlsZV9uYW1lR1EqMkR+T3V0cHV0RigvJSVzaXplR1EjMTJGKC8lK2ZvcmVncm91bmRHUSpbMCwwLDI1NV1GKC8lK2JhY2tncm91bmRHUS5bMjU1LDI1NSwyNTVdRigtRiQ2Iy1JJ210YWJsZUdGJTYlLUkkbXRyR0YlNiUtSSRtdGRHRiU2Iy1JI21uR0YlNjlGRy8lJ2ZhbWlseUdRMFRpbWVzfk5ld35Sb21hbkYoLyUlc2l6ZUdGUy8lJWJvbGRHRjgvJSdpdGFsaWNHRjgvJSp1bmRlcmxpbmVHRjgvJSpzdWJzY3JpcHRHRjgvJSxzdXBlcnNjcmlwdEdGOC8lK2ZvcmVncm91bmRHRlYvJStiYWNrZ3JvdW5kR0ZZLyUnb3BhcXVlR0Y4LyUrZXhlY3V0YWJsZUdGOC8lKXJlYWRvbmx5R0Y1LyUpY29tcG9zZWRHRjgvJSpjb252ZXJ0ZWRHRjgvJStpbXNlbGVjdGVkR0Y4LyUscGxhY2Vob2xkZXJHRjgvJTBmb250X3N0eWxlX25hbWVHRlAvJSptYXRoY29sb3JHRlYvJS9tYXRoYmFja2dyb3VuZEdGWS8lK2ZvbnRmYW1pbHlHRmRvLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGKC8lKW1hdGhzaXplR0ZTLUZdbzYjLUZgbzY5USkmbWludXM7NEYoRmJvRmVvRmdvRmlvRltwRl1wRl9wRmFwRmNwRmVwRmdwRmlwRltxRl1xRl9xRmFxRmNxRmVxRmdxRmlxRltyRl5yLUZdbzYjLUZgbzY5USIwRihGYm9GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXnItRmpuNiVGZXJGXG8tRl1vNiMtRmBvNjlRKSZtaW51czsxRihGYm9GZW9GZ29GaW9GW3BGXXBGX3BGYXBGY3BGZXBGZ3BGaXBGW3FGXXFGX3FGYXFGY3FGZXFGZ3FGaXFGW3JGXnItRmpuNiVGZXJGZXJGXG8tRi02M1EiXUYoL0YxUShwb3N0Zml4RihGM0Y2RjkvRj1RMnZlcnl0aGlubWF0aHNwYWNlRihGPkZARkJGRUZIRkpGTEZORlFGVEZXNyMtX0YpSSxtcHJpbnRzbGFzaEdGKDYkNyMtSSdSVEFCTEVHRig2JSIoY3l0JS1JJ01BVFJJWEdGKDYjNyU3JSIiIiEiJSIiITclRlt1Rml0ISIiNyVGW3VGW3VGaXRJJ01hdHJpeEc2JCUqcHJvdGVjdGVkR0YqNyMtRl91NiMvSSQlaWRHRihGY3Q=