Wie generiert man eine hermiteschen Matrix mit ganzzahligen Eigenwerten?

Clear[a];
A = Table[a[j, k], {j, 3}, {k, 3}];

    
While[
      Not[Union[
            Map[IntegerQ, 
              Eigenvalues[
                A]]] == {True}], 

Do[
          a[j, j] = Random[Integer, {-3, 3}], {j, 
            3}]
Do[
          Do[a[j, k] = 
              Random[Integer, {-3, 
                    3}] + I
Random[
                    Integer, {-3, 3}]; 
a[k, j] = 
              Conjugate[a[j, k]], {k, j + 1, 3}], {j, 1, 
            3}]; 
A = 
        Table[a[j, k], {j, 3}, {k, 3}]
]

A

CharacteristicPolynomial[A, λ]

Eigensystem[A]

Jordansche Normalform

Beispiel 1

A = {{4 + 3  I, -(1/3) - 2  I, 1, 
          1 + 6  I}, {0, 3 - 3  I, 
          0, -3}, {-4, (2/3) + 2  I, 
          3  I, -2 - 6  I}, {0, (1/3), 0, 
          1 - 3  I}}

charpol = CharacteristicPolynomial[A, λ]

Factor[charpol]

Factor[charpol, GaussianIntegers -> True]

Mathematica kann die Jordanzerlegung berechnen:

jordan = JordanDecomposition[A]

Diese enthält die Transformationsmatrix

B = jordan[[1]]

und die Jordanmatrix

diag = jordan[[2]]

Test:

Inverse[B] . A . B

Wir erhält man diese? Wir berechnen zuerst die Eigenvektoren von A:

sys = Eigensystem[A]

erste Spalte von B:

B1 = sys[[2, 1]]

dritte Spalte von B:

B3 = sys[[2, 3]]

zweite Spalte von B:

B2 = LinearSolve[A - sys[[1, 1]]*IdentityMatrix[4], B1]

vierte Spalte von B:

B4 = LinearSolve[A - sys[[1, 3]]*IdentityMatrix[4], B3]

Wir setzen B zusammen:

B = Transpose[Join[{B1}, {B2}, {B3}, {B4}]]

Test:

Inverse[B] . A . B

Beispiel 2

A = {{I, 0, -I, 
          1}, {0, -(1/10) + (13/10) I, -(1/10) - (27/10) I, (3/10) + (1/10) I}, {0, 0, 
          1 + I, 0}, {0, (3/10) + (1/10) I, 
          (3/10) - (19/10) I, 
          (1/10) + (7/10) I}}

charpol = CharacteristicPolynomial[A, λ]

Factor[charpol]

Factor[charpol, GaussianIntegers -> True]

Mathematica kann die Jordanzerlegung berechnen:

jordan = JordanDecomposition[A]

Diese enthält die Transformationsmatrix

B = jordan[[1]]

und die Jordanmatrix

diag = jordan[[2]]

Test:

Inverse[B] . A . B