0820132人目の素数さん
2020/04/15(水) 17:37:36.89ID:2L6Mosno正規行列はユニタリ行列によって対角化できるという定理が書いてあります。
Wolfram Language 12で、 A = U*D*U^* となる U, D を計算する関数を作りました。
orthogonalizationU[A_] := Module[
{eigenvs, U, DIA},
eigenvs = Eigenvalues[A];
DIA = DiagonalMatrix[eigenvs];
eigenvs = DeleteDuplicates[Eigenvalues[A]];
U = Transpose @ ((Flatten[#, 1])& @ (Orthogonalize /@ (NullSpace /@ ((A - #*IdentityMatrix[Length[A]])& /@ eigenvs))));
{U, DIA}
]