NormalMatrixQ
更多信息和选项
- 如果 m.ConjugateTranspose[m]ConjugateTranspose[m].m,则矩阵 m 是正规矩阵,这是实对称矩阵、厄米特矩阵、酉矩阵以及其他多种矩阵类型的推广. »
- 根据谱定理,正规矩阵 m 是最广义类型的可酉对角化矩阵,即存在某个酉矩阵
和对角矩阵
,使得
成立 . » - NormalMatrixQ 适用于符号矩阵和数值矩阵.
- 可给出下列选项:
-
SameTest Automatic 测试表达式的相等关系的函数 Tolerance Automatic 近似数的容差 - 对于精确和符号矩阵,选项 SameTest->f 表明如果 f[aij,bij] 给出 True,则将两个元素 aij 和 bij 视为相等,其中 a=m.m 并且 b=m.m.
- 对于近似矩阵,选项 Tolerance->t 可用于表明满足 γ≤t γ∞ 的范数 γ=m.m-m.m∞ 被视为零,其中 γ∞ 是矩阵 m 的无穷范数.
范例
打开所有单元 关闭所有单元基本范例 (2)
NormalMatrixQ[(| | |
| -- | - |
| 1 | 2 |
| -2 | 1 |)]m = (| | | |
| -- | -- | -- |
| a | b | -a |
| -a | a | b |
| b | -a | a |);NormalMatrixQ[m]验证条件 m.ConjugateTranspose[m]ConjugateTranspose[m].m:
m.m == m.m范围 (10)
基本用法 (6)
m = {{1, 2.3}, {3.5, -4}};NormalMatrixQ[m]NormalMatrixQ[(m + m^/2)]m = {{1, 2 - 3I}, {4 + 5I, 6}};NormalMatrixQ[m]NormalMatrixQ[(m + ConjugateTranspose[m]) / 2]m = (| | | |
| -- | -- | -- |
| -1 | 1 | 0 |
| 0 | -1 | 1 |
| 1 | 0 | -1 |);NormalMatrixQ[m]m.ConjugateTranspose[m] == ConjugateTranspose[m].m用 NormalMatrixQ 测试任意精度的矩阵:
m = RandomReal[5, {3, 3}, WorkingPrecision -> 15]NormalMatrixQ[m]用 NormalMatrixQ 测试符号矩阵:
NormalMatrixQ[{{a, b}, {c, d}}]Block[{c = b^, a = Re[e], d = Re[f]}, NormalMatrixQ[{{a, b}, {c, d}}]]NormalMatrixQ 可高效处理大型数值矩阵:
m = RandomReal[1, {1000, 1000}];AbsoluteTiming[NormalMatrixQ[m]]a = m + m^;
AbsoluteTiming[NormalMatrixQ[a]]特殊矩阵 (4)
用 NormalMatrixQ 测试稀疏矩阵:
SparseArray[{i_, j_} -> i + j + (i - j)I, {5, 5}]NormalMatrixQ[%]用 NormalMatrixQ 测试结构化矩阵:
SymmetrizedArray[{{1, 2} -> 4, {3, 2} -> 5}, {3, 3}, Symmetric[All]]NormalMatrixQ[%]测试 QuantityArray 结构化矩阵:
QuantityArray[{{1, 2}, {2, 5}}, "Meters"]NormalMatrixQ[%]NormalMatrixQ[IdentityMatrix[3]]HilbertMatrix 是正规矩阵:
NormalMatrixQ[HilbertMatrix[5]]选项 (2)
SameTest (1)
矩阵对于正实数
是规范的,但是 NormalMatrixQ 给出 False:
m = {{2Log[x], 2, 1}, {1, Log[x ^ 2], 2}, {2, 1, 2Log[x]}};NormalMatrixQ[m]使用选项 SameTest 以获取正确答案:
NormalMatrixQ[m, SameTest -> (FullSimplify[#1 - #2, x > 0] == 0&)]Tolerance (1)
SeedRandom[5];n = 3;
q = Orthogonalize[RandomComplex[1 + I, {n, n}]];
d = DiagonalMatrix[RandomComplex[1 + I, n]];m = q.d.ConjugateTranspose[q] + 10 ^ -14 * RandomReal[1, {n, n}];NormalMatrixQ[m]m.m^ - m^.m//MatrixForm调整选项 Tolerance 以接受矩阵作为规范矩阵:
NormalMatrixQ[m, Tolerance -> 10 ^ -13]Tolerance 应用于下列数值:
Norm[m.m^ - m^.m, ∞]应用 (5)
正规矩阵是可酉对角化为
的最广义矩阵类型,其中
为对角矩阵,
为酉矩阵. 所有埃尔米特矩阵
都是正规矩阵,因为等式两边都等于
:
TensorExpand[h.h == h.h == h.h, Assumptions -> h∈Matrices[{n, n}, Complexes, Hermitian[{1, 2}]]]TensorExpand[a.a == a.a == -a.a, Assumptions -> a∈Matrices[{n, n}, Complexes, Antihermitian[{1, 2}]]]酉矩阵是正规矩阵,因为代入定义
后,等式两边都会得到单位矩阵:
TensorReduce[u.u == u.u /. u -> Inverse[u], Assumptions -> u∈Matrices[{n, n}, Complexes]](n = {{5 + I, -2I}, {2, 4 + 2I}})//MatrixFormn.ConjugateTranspose[n] == ConjugateTranspose[n].n用 NormalMatrixQ 确认结果:
NormalMatrixQ[n]可以通过 EigenvalueDecomposition 将
这样的正规矩阵酉对角化:
{v, d} = EigenvalueDecomposition[n]d//MatrixForm{n == v.d.Inverse[v], UnitaryMatrixQ[v]}ConjugateTranspose[v].vu = Transpose[Normalize /@ Transpose[v]];
UnitaryMatrixQ[u]n == u.d.ConjugateTranspose[u]任意正规矩阵都可以用
这种形式表示,据此,用一组给定的特征值生成正规矩阵,其中,
为酉矩阵,
为对角矩阵:
randomNormalMatrix[λ_] :=
Block[{p = RandomVariate[CircularUnitaryMatrixDistribution[Length[λ]]], d = DiagonalMatrix[λ]}, p.d.p^]m = NormalMatrixQ[randomNormalMatrix[RandomComplex[1 + I, 5]]]总的来说,该矩阵不是 Hermitian 矩阵,也不是反厄米特矩阵或酉矩阵:
{HermitianMatrixQ[m], AntihermitianMatrixQ[m], UnitaryMatrixQ[m]}如果用来生成矩阵的特征值是实数,则矩阵是Hermitian 矩阵:
HermitianMatrixQ[randomNormalMatrix[RandomReal[1, 5]], Tolerance -> 10^-10]AntihermitianMatrixQ[randomNormalMatrix[I RandomReal[1, 5]], Tolerance -> 10^-10]UnitaryMatrixQ[randomNormalMatrix[Exp[I RandomReal[1, 5]]]]u = randomNormalMatrix[{I, -I, I, I, -I}];
{UnitaryMatrixQ[u], AntihermitianMatrixQ[u, Tolerance -> 10^-10]}因为正规矩阵可以酉对角化,所以计算矩阵函数特别简单. 如果
,则
,可通过将
应用于每个对角元素来计算
. 考虑以下正规矩阵:
n = (| | | |
| ------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
| 0.4190545825311938755`4.9681197085588815 + 0.4807776986348403225`5.027793428624015 I | -0.1763262399205428044`5.0800347930121035 + 0.1091857095906408059`4.871883647435369 I | 0.2444502674598640901`5.135269405455509 - 0.0659254198034315286`4.566131792679695 I |
| -0.1286824452449317757`4.93711103381493 + 0.1663851825856889621`5.048706376600578 I | 0.1965253725117193651`4.593416527328106 + 0.6809992104275024438`5.133144507557094 I | -0.0227192425684434318`4.3070024324232445 + 0.1568179738818542002`5.146004422374771 I |
| 0.0939992324618092456`4.72441289302062 - 0.2324553718439070493`5.117628172387472 I | -0.1621640763569406896`5.15017182693875 + 0.0064491774323059553`3.749721499735245 I | 0.3643576945875394157`4.904558669917309 + 0.5284989545492395635`5.0660748569755585 I |);NormalMatrixQ[n]计算 Eigensystem[n]:
{λ, v} = Eigensystem[n];UnitaryMatrixQ[v]u = Transpose[v];
n == u.DiagonalMatrix[λ].u计算
并用 MatrixPower 确认:
u.DiagonalMatrix[λ ^ 10].u == MatrixPower[n, 10]计算
并用 MatrixExp 确认:
u.DiagonalMatrix[Exp[λ]].u == MatrixExp[n]计算
并用 MatrixLog 确认:
u.DiagonalMatrix[Log[λ]].u == MatrixLog[n]计算
并用 MatrixFunction 确认:
u.DiagonalMatrix[f /@ λ].u == MatrixFunction[f, n]//Chop[#, 10 ^ -Precision[n]]&许多矩阵分布可产生正态矩阵,包括 CircularRealMatrixDistribution:
NormalMatrixQ /@ RandomVariate[CircularRealMatrixDistribution[3], 10]CircularSymplecticMatrixDistribution:
NormalMatrixQ /@ RandomVariate[CircularSymplecticMatrixDistribution[3], 10]GaussianOrthogonalMatrixDistribution:
NormalMatrixQ /@ RandomVariate[GaussianOrthogonalMatrixDistribution[3], 10]GaussianUnitaryMatrixDistribution :
NormalMatrixQ /@ RandomVariate[GaussianUnitaryMatrixDistribution[3], 10]对于复正规矩阵,SchurDecomposition 总是等价于 Eigensystem:
m = Block[{p, d, n = 100},
d = RandomComplex[1. + I, {n}];
p = Orthogonalize[RandomComplex[1. + I, {n, n}]];
p.DiagonalMatrix[d].p^];
NormalMatrixQ[m]{q, t} = SchurDecomposition[m];MatrixPlot[Chop@t]t - DiagonalMatrix[Diagonal[t]]//NormEigenvalues[m] == Sort[Diagonal[t], Abs[#1] > Abs[#2]&]属性和关系 (15)
NormalMatrixQ[m] 实际上等价于 m.mm.m:
m = {{3, 1 - 2 I}, {1 - 2 I, 3}};NormalMatrixQ[m]m.ConjugateTranspose[m] == ConjugateTranspose[m].mm = Symmetrize[RandomReal[1, {10, 10}]]{SymmetricMatrixQ[m], NormalMatrixQ[m]}m = Symmetrize[RandomComplex[1 + I, {10, 10}], Hermitian[All]]{HermitianMatrixQ[m], NormalMatrixQ[m]}m = Symmetrize[RandomReal[1, {10, 10}], Antisymmetric[All]]{AntisymmetricMatrixQ[m], NormalMatrixQ[m]}m = Symmetrize[RandomComplex[1 + I, {10, 10}], Antihermitian[All]]{AntihermitianMatrixQ[m], NormalMatrixQ[m]}m = RandomVariate[CircularRealMatrixDistribution[10]];{OrthogonalMatrixQ[m], NormalMatrixQ[m]}m = RandomVariate[CircularUnitaryMatrixDistribution[10]];{UnitaryMatrixQ[m], NormalMatrixQ[m]}n = (| | | |
| ------------------------------------------ | ------------------------------------------- | ------------------------------------------ |
| 2. + 0.7671402851079696 I | 0.28472256063567536 + 1.708236904266604 I | -0.48391763196811755 + 0.67140374031578 I |
| -0.28472256063567536 + 1.708236904266604 I | 2. + 0.4336455594403845 I | 0.40454632297749327 + 0.8423572966618409 I |
| 0.48391763196811755 + 0.67140374031578 I | -0.40454632297749327 + 0.8423572966618409 I | 2. + 1.5308226096491464 I |);x = RandomComplex[1 + 1, 3];Norm[n.x] == Norm[ConjugateTranspose[n].x]n1 = (| | | |
| ------- | -------- | ------- |
| 6 I | -1 + 2 I | 2 I |
| 1 + 2 I | 4 I | 1 + 3 I |
| 2 I | -1 + 3 I | 2 I |);
n2 = (| | | |
| -------- | ------- | -------- |
| 4 I | I | 2 + 2 I |
| I | 4 I | -1 + 3 I |
| -2 + 2 I | 1 + 3 I | 4 I |);NormalMatrixQ[n1] && NormalMatrixQ[n2]NormalMatrixQ[n1.n2]n3 = (| | | |
| ------------ | --------------- | ---------------- |
| -420 - 480 I | 1370 - 4530 I | 4490 + 420 I |
| 186 - 6362 I | -7522 - 20606 I | 18058 + 25034 I |
| 228 + 1474 I | 2194 + 31082 I | -15151 - 42863 I |);{NormalMatrixQ[n1.n3], n1.n3 == n3.n1}NormalMatrixQ[n1 + n3]当且仅当矩阵的 Hermitian 和反厄米特部分是可交换的,矩阵才是正规矩阵:
m = (| | | |
| ------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
| 0.5960424332074276688`3.0240064217097893 + 0.530000909661587416`2.9730058577533303 I | -0.0626104522314558515`3.0421556865480315 - 0.0503652308993926823`2.9476396751836087 I | 0.0674758064814323516`2.570492374427725 + 0.247516707516932416`3.134948809793073 I |
| -0.1185389967734213484`3.07323998966199 - 0.0774971491390665373`2.8886644688500276 I | 0.5997449432185413265`3.0335068599579205 + 0.5067832496638597917`2.9603625171104007 I | 0.088244662324938522`2.7108825380954373 + 0.2262395415155119271`3.119762604511356 I |
| 0.0599835572023512675`2.569641554730886 - 0.2204969413781951715`3.135011907129139 I | 0.0786920664515829982`2.61606132039034 - 0.2576423604924595323`3.1311476398318643 I | 0.2622204360740304496`2.846512779179542 + 0.4583330281745523482`3.089027398184182 I |);h = (m + m/2);a = (m - m/2);{NormalMatrixQ[m], h.a == a.h}m = {{2, -4, -4}, {4, 2, 7}, {4, -7, 2}};{NormalMatrixQ[m], DiagonalizableMatrixQ[m]}实际上,它总是可用 Eigensystem 酉对角化的:
{λ, v} = Eigensystem[m]Table[Subscript[v, [[i]]].Subscript[v, [[j]]], {i, 3}, {j, 3}]u = Transpose[(v/Norm /@ v)];
UnitaryMatrixQ[u]m == u.DiagonalMatrix[λ].u对于正规矩阵 m,{s,j}=JordanDecomposition[m]:
m = {{1, -1, -5, 7}, {1, 1, 9, -8}, {5, -9, 1, -3}, {-7, 8, 3, 1}};NormalMatrixQ[m]{s, j} = JordanDecomposition[m];{DiagonalMatrixQ[j], j//MatrixForm}s.s//FullSimplify可通过 UnitaryMatrixQ(设置 NormalizedFalse)快速进行验证:
UnitaryMatrixQ[s, Normalized -> False]对于正规矩阵,舒尔分解 {q,r} 与特征分解 {t,d} 其实是一样的:
n = (| | | |
| --- | --- | --- |
| 1. | 3. | -1. |
| -1. | 1. | 3. |
| 3. | -1. | 1. |);计算 SchurDecomposition[n,RealBlockDiagonalFormFalse]:
{q, r} = SchurDecomposition[n, RealBlockDiagonalForm -> False]//ChopDiagonalMatrixQ[r]{t, d} = EigenvalueDecomposition[n]//Chopd == r为验证
等于
,将每列的第一个元素设为 1. 以消除相位差异:
Transpose[(#1/First[q])& /@ q] - Transpose[(#1/First[t])& /@ t]//Chopm = RandomVariate[GaussianUnitaryMatrixDistribution[5]];Eigenvalues[m]用 HermitianMatrixQ 验证:
{NormalMatrixQ[m], HermitianMatrixQ[m]}m = I RandomVariate[GaussianUnitaryMatrixDistribution[4]];Eigenvalues[m]//Chop用 AntihermitianMatrixQ 验证:
{NormalMatrixQ[m], AntihermitianMatrixQ[m]}m = RandomVariate[CircularUnitaryMatrixDistribution[5]];Abs[Eigenvalues[m]]用 UnitaryMatrixQ 验证:
{NormalMatrixQ[m], UnitaryMatrixQ[m]}m = {{1., 3., -1.}, {-1., 1., 3.}, {3., -1., 1.}};
NormalMatrixQ[m]s = Eigenvalues[m];
Norm[m, "Frobenius"]^2 == Apply[Plus, Abs[s]^2]m = {{0.17010407671234692 - 0.816200574869689 * I, -0.060605479676474415 + 0.5284126706678552 * I}, {0.5318722405249391 - 0.002212339967518099 * I, 0.12335549853833308 - 0.8683984367571865 * I}};NormalMatrixQ[m]Abs[Eigenvalues[m]] == SingularValueList[m]相关指南
-
▪
- 矩阵判断
文本
Wolfram Research (2014),NormalMatrixQ,Wolfram 语言函数,https://reference.wolfram.com/language/ref/NormalMatrixQ.html.
CMS
Wolfram 语言. 2014. "NormalMatrixQ." Wolfram 语言与系统参考资料中心. Wolfram Research. https://reference.wolfram.com/language/ref/NormalMatrixQ.html.
APA
Wolfram 语言. (2014). NormalMatrixQ. Wolfram 语言与系统参考资料中心. 追溯自 https://reference.wolfram.com/language/ref/NormalMatrixQ.html 年
BibTeX
@misc{reference.wolfram_2026_normalmatrixq, author="Wolfram Research", title="{NormalMatrixQ}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/NormalMatrixQ.html}", note=[Accessed: 04-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_normalmatrixq, organization={Wolfram Research}, title={NormalMatrixQ}, year={2014}, url={https://reference.wolfram.com/language/ref/NormalMatrixQ.html}, note=[Accessed: 04-November-2026]}