需要[“Utilities`FilterOptions`”]选项[DiagonalizableQ]={Field->Complexes,ZeroTest->(RootReduce[#]==0&)};
矩阵[n_,l_List:{0,1}]:=分区[#,n]和/@Flatten[Outer[List,Sequence@@Table[l,{n^2}]],n^2-1]
可对角化Q[m_List?MatrixQ,opts___]:=模块[{field=field/.{opts}/.Options[DiagonalizableQ],eigenopts=FilterOptions[Eigenvectors,opts]},Switch[field,Complexes,ComplexDiagonalisableQ[m,eigenopts],Reals,RealDiagonalzableQ[m
表[Count[Matrices[n],_?可对角化Q],{n,4}]
(*第二个节目:*)
a[n_]:=模块[{M,iter,cnt=0},M=表[a[i,j],{i,1,n},{j,1,n}];iter=螺纹[{压扁[M],0,1}];Do[If[DiagonalizableMatrixQ[M],cnt++],Evaluate[Sequence@@iter]];cnt];