UnitaryMatrixQ
詳細とオプション
- p≥q でConjugateTranspose[m].m が q×q 恒等行列であるか,p≤q で m.ConjugateTranspose[m]が p×p 恒等行列であるなら,p×q 行列 m はユニタリ行列である.
- UnitaryMatrixQは記号行列および数値行列に使うことができる.
- 使用可能なオプション
-
Normalized True 行列の列が正規化されているかどうかの検定を行う SameTest Automatic 式の等価性を検定する関数 Tolerance Automatic 近似数の許容範囲 - 厳密行列および記号行列の場合は,オプションSameTest->f は,f[aij,bij]がTrueを返すなら,2つの項 aijおよび bijは等しいことを示す.
- 近似行列の場合は,オプションTolerancet を使い,Inが恒等行列の場合は γ≤t を満足するノルム γ=m.m-In∞がゼロとみなされることを示すことができる.
例題
すべて開く すべて閉じる例 (2)
UnitaryMatrixQ[(1/Sqrt[2])(| | |
| - | - |
| 1 | I |
| I | 1 |)]m = (| | | |
| ----- | ---------------------------------- | ----------------------------------- |
| 1 | 0 | 0 |
| 0 | (Cosh[Im[α]]/Sqrt[Cosh[2 Im[α]]]) | I (Sinh[Im[α]]/Sqrt[Cosh[2 Im[α]]]) |
| 0 | I(Sinh[Im[α]]/Sqrt[Cosh[2 Im[α]]]) | (Cosh[Im[α]]/Sqrt[Cosh[2 Im[α]]]) |);UnitaryMatrixQ[m]ConjugateTranspose[m].m == IdentityMatrix[3]//Simplifyスコープ (14)
基本的な用法 (6)
m = (1/Sqrt[5]){{1, 2}, {-2, 1}};UnitaryMatrixQ[m]OrthogonalMatrixQ[m]m = (1/Sqrt[5]){{2, I}, {I, 2}};UnitaryMatrixQ[m]m = (| | | |
| - | -- | -- |
| 4 | -5 | 2 |
| 3 | -3 | -3 |
| 5 | 5 | 5 |);UnitaryMatrixQ[m]UnitaryMatrixQ[Orthogonalize[m]]UnitaryMatrixQを任意精度行列に使う:
m = RandomReal[5, {3, 3}, WorkingPrecision -> 15]UnitaryMatrixQ[m]UnitaryMatrixQを記号行列に使う:
UnitaryMatrixQ[{{a, b}, {c, d}} / Sqrt[Abs[a]^2 + Abs[b]^2]]Block[{c = Conjugate[b], d = -Conjugate[a]}, UnitaryMatrixQ[{{a, b}, {c, d}} / Sqrt[Abs[a]^2 + Abs[b]^2], SameTest -> (FullSimplify[#1 - #2] == 0&)]]UnitaryMatrixQは大きい数値行列に効率的に機能する:
m = RandomReal[1, {1000, 1000}];AbsoluteTiming[UnitaryMatrixQ[m]]a = Orthogonalize[m];
AbsoluteTiming[UnitaryMatrixQ[a]]特殊行列 (4)
UnitaryMatrixQを疎な行列に使う:
SparseArray[{Band[{1, 1}] -> -I}, {5, 5}]UnitaryMatrixQ[%]UnitaryMatrixQを構造化行列に使う:
SymmetrizedArray[{{1, 1} -> (1 + I/2), {1, 2} -> (1 - I/2), {2, 2} -> (1 + I/2)}, {2, 2}, Symmetric[All]]UnitaryMatrixQ[%]UnitaryMatrixQ[IdentityMatrix[3]]HilbertMatrixはユニタリ行列ではない:
UnitaryMatrixQ[HilbertMatrix[5]]矩形半ユニタリ行列 (4)
m = (1/2)(| | | | |
| -- | - | - | -- |
| 1 | 1 | 1 | -1 |
| -I | I | I | I |);UnitaryMatrixQ[m]m.ConjugateTranspose[m]ConjugateTranspose[m].mm = (1/2)(| | |
| ------- | --------- |
| 1 | 0 |
| 0 | ISqrt[2] |
| 0 | -ISqrt[2] |
| Sqrt[3] | 0 |);UnitaryMatrixQ[m]ConjugateTranspose[m].mm.ConjugateTranspose[m]m = RandomVariate[CircularUnitaryMatrixDistribution[4]];UnitaryMatrixQ[m]UnitaryMatrixQ[m[[RandomSample[Range[4], 2]]]]UnitaryMatrixQ[m[[All, RandomSample[Range[4], 2]]]]UnitaryMatrixQ[IdentityMatrix[{3, 4}]]オプション (4)
Normalized (2)
記号ユニタリ行列の列は,1に正準化されていないことがしばしばある:
m = {{a, b}, {Conjugate[b], -Conjugate[a]}};
UnitaryMatrixQ[m]UnitaryMatrixQ[m, Normalized -> False]m = MapAt[2#&, RotationMatrix[π / 4, {1, 0, 1}], {All, 2}]NormalizedFalseのUnitaryMatrixQはmについてTrueを返す:
UnitaryMatrixQ[m, Normalized -> False]しかし,ConjugateTranspose[m]に対してはTrueは返さない:
UnitaryMatrixQ[ConjugateTranspose[m], Normalized -> False]MatrixForm /@ {m.m, m.m}//FullSimplifySameTest (1)
この行列は正の実数
についてユニタリ行列であるが,UnitaryMatrixQはFalseを返す:
m = {{1, Exp[x I]}, {Cos[x] - I Sin[x], -1}} / Sqrt[2];UnitaryMatrixQ[m]オプションSameTestを使って正しい答を得る:
UnitaryMatrixQ[m, SameTest -> (Simplify[#1 - #2, x > 0] == 0&)]Tolerance (1)
n = 3;
q = Orthogonalize[RandomVariate[NormalDistribution[], {n, n}] + I RandomVariate[NormalDistribution[], {n, n}]] + 10 ^ -13 * RandomReal[1, {n, n}];UnitaryMatrixQ[q]q.q^//MatrixForm行列をユニタリ行列として承認するために,オプションToleranceを調整する:
UnitaryMatrixQ[q, Tolerance -> 10 ^ -12]Toleranceは次の値に適用される:
Norm[q.q^ - IdentityMatrix[3], Infinity]アプリケーション (9)
ユニタリ行列の起源 (4)
Subscript[e, 1] = {(1/Sqrt[2]), (I/Sqrt[2]), 0};Subscript[e, 2] = {(1/Sqrt[2]), -(I/Sqrt[2]), 0};Subscript[e, 3] = {0, 0, Exp[(I π/3)]};Table[Subscript[e, i].Subscript[e, j], {i, 3}, {j, 3}]UnitaryMatrixQ[{Subscript[e, 1], Subscript[e, 2], Subscript[e, 3]}]UnitaryMatrixQ[{Subscript[e, 1], Subscript[e, 2], Subscript[e, 3]}]Orthogonalizeを線形独立の複素ベクトルに適用するとユニタリ行列が生成される:
m = Orthogonalize[RandomComplex[1. + I, {5, 5}]];UnitaryMatrixQ[m]行列が正方行列である必要はない.正方行列の場合,結果の行列は半ユニタリ行列になる:
m = Orthogonalize[RandomComplex[1. + I, {5, 3}]];UnitaryMatrixQ[m]m = Orthogonalize[RandomComplex[1. + I, {3, 5}]];UnitaryMatrixQ[m]m = (| | |
| - | - |
| 1 | I |
| 1 | I |);MatrixRank[m]UnitaryMatrixQ[Orthogonalize[m]]m = IdentityMatrix[4][[{2, 4, 1, 3}]]UnitaryMatrixQ[m]CircularUnitaryMatrixDistributionから導かれた行列はユニタリ行列である:
UnitaryMatrixQ /@ RandomVariate[CircularUnitaryMatrixDistribution[3], 10]CircularOrthogonalMatrixDistributionから導かれた行列もユニタリ行列である:
UnitaryMatrixQ /@ RandomVariate[CircularOrthogonalMatrixDistribution[3], 10]CircularSymplecticMatrixDistributionからの行列もそうである:
UnitaryMatrixQ /@ RandomVariate[CircularSymplecticMatrixDistribution[3], 10]ユニタリ行列の用法 (5)
ユニタリ行列は
についての標準内積を保持する.換言すれば,
がユニタリで
と
が
ということになる:
u = RandomVariate[CircularUnitaryMatrixDistribution[3], WorkingPrecision -> 16];
{v, w} = RandomComplex[1, {2, 3}, WorkingPrecision -> 16];UnitaryMatrixQ[u] && v.w == (u.v).(u.w)VectorAngle[v, w] == VectorAngle[u.v, u.w]Norm[v] == Norm[u.v]Norm[w] == Norm[u.w]m = RandomComplex[{-1. - I, 1. + I}, {50, 50}];
{q, r} = QRDecomposition[m];
UnitaryMatrixQ[q]{u, w, v} = SingularValueDecomposition[m];
{UnitaryMatrixQ[u], UnitaryMatrixQ[v]}{s, t} = SchurDecomposition[m];
UnitaryMatrixQ[s]{p, h} = HessenbergDecomposition[m];
UnitaryMatrixQ[p]行列
は任意の非零のベクトル
について常にユニタリ行列である:
n = 5;
Subscript[ℋ, v_] := IdentityMatrix[n] - 2 vv / v.v;
v = RandomComplex[1. + I, n];
UnitaryMatrixQ[Subscript[ℋ, v]]
はハウスホルダー(Householder)鏡映と呼ばれる.純粋な鏡映なので,その行列式は
である:
Det[Subscript[ℋ, v]]//ChopSubscript[ℋ, v].v == -vperp = Block[{w = RandomComplex[1 + n, n]}, w - Projection[w, v]];
Subscript[ℋ, v].perp == perp行列の計算では,
を使って指定された列ベクトル
の選択された成分を0に設定する:
x = RandomComplex[1. + I, n];v = x - x[[1]] / Abs[x[[1]]] Norm[x]UnitVector[n, 1];
Subscript[ℋ, v].{x}//Chop量子力学では,時間発展はユニタリ行列
の1パラメータ族で表される.
掛ける
の対数微分はハミルトニアンあるいはエネルギー演算子
と呼ばれるエルミート行列で,その固有値は系の可能なエネルギーを表す.次の時間発展についてハミルトニアンと可能なエネルギーを計算する:
u[t_] := (| | | |
| ------------------------ | ---------------------- | ------------------------ |
| (1/2) + (1/2) Cos[t ω0] | -(I Sin[t ω0]/Sqrt[2]) | -(1/2) + (1/2) Cos[t ω0] |
| -(I Sin[t ω0]/Sqrt[2]) | Cos[t ω0] | -(I Sin[t ω0]/Sqrt[2]) |
| -(1/2) + (1/2) Cos[t ω0] | -(I Sin[t ω0]/Sqrt[2]) | (1/2) + (1/2) Cos[t ω0] |)UnitaryMatrixQ[u[t], SameTest -> (Simplify[#1 - #2 == 0, {t, Subscript[ω, 0]}∈Reals] &)]u'[t].Inverse[u[t]]//FullSimplifyAntihermitianMatrixQ[%, SameTest -> (Simplify[#1 - #2 == 0, {Subscript[ω, 0]}∈Reals] &)]MatrixForm[ℋ = I ℏ %%]HermitianMatrixQ[ℋ, SameTest -> (Simplify[#1 - #2 == 0, {ℏ, Subscript[ω, 0]}∈Reals] &)]Eigenvalues[ℋ]反エルミート行列
の指数MatrixExp[v]はユニタリ行列である.初期値が
であるその微分方程式
から行列関数を定義し,解がユニタリ行列であることを示す:
AntihermitianMatrixQ[v = (| | | |
| ------- | ----- | ------ |
| 2I | -0.5I | 1. - I |
| -0.5I | 0 | 1. |
| -1. - I | -1. | -I |)]以下を解き,結果の行列がどの時点でもユニタリ行列であることをチェックする:
mm = NDSolveValue[{m'[t] == v.m[t], m[0] == IdentityMatrix[3]}, m, {t, 0., 5.}]Table[UnitaryMatrixQ[mm[t], Tolerance -> 10 ^ -5], {t, 0., 5., 1.}]Table[Norm@mm[t], {t, 0., 5., 1.}]rows = Table[ParametricPlot3D[Abs[mm[t][[i]]], {t, 0., 5.}, PlotStyle -> ColorData[97, i]], {i, 3}]//Quiet;Show[Graphics3D[{Opacity[0.5], Sphere[]}], rows]特性と関係 (14)
m.ConjugateTranspose[m]IdentityMatrix[n]であれば,その行列はユニタリ行列である:
m = (1/Sqrt[2]){{1, 1}, {I, -I}};{UnitaryMatrixQ[m], m.m^}m = Orthogonalize[RandomComplex[1 + I, {3, 3}]];m.m^ - IdentityMatrix[3]//Normu = RandomVariate[CircularUnitaryMatrixDistribution[3]];Inverse[u] == ConjugateTranspose[u]したがって,逆,転置,共役,共役転置はすべてユニタリ行列である:
Table[UnitaryMatrixQ[f[u]], {f, {Inverse, Transpose, Conjugate, ConjugateTranspose}}]u = RandomVariate[CircularOrthogonalMatrixDistribution[4]];
{v, w} = RandomComplex[1 + I, {2, 4}];
UnitaryMatrixQ[u] && v.w == (u.v).(u.w)Norm[v] == Norm[u.v]Norm[w] == Norm[u.w]m = Orthogonalize[RandomReal[1, {3, 3}]];{OrthogonalMatrixQ[m], UnitaryMatrixQ[m]}m = Orthogonalize[RandomComplex[1 + I, {3, 3}]];{OrthogonalMatrixQ[m], UnitaryMatrixQ[m]}{m1, m2} = RandomVariate[CircularOrthogonalMatrixDistribution[3], 2];
{UnitaryMatrixQ[m1], UnitaryMatrixQ[m2]}UnitaryMatrixQ[m1.m2]m = Orthogonalize[RandomComplex[1 + I, {3, 3}]];{UnitaryMatrixQ[m], NormalMatrixQ[m]}m = RandomVariate[CircularUnitaryMatrixDistribution[3]];UnitaryMatrixQ[m]Eigenvaluesを使って固有値を求める:
Eigenvalues[m]Abs[%]m = RandomVariate[CircularSymplecticMatrixDistribution[2]];UnitaryMatrixQ[m]DiagonalizableMatrixQ[m]Eigenvectorsを使って固有ベクトルを求める:
Eigenvectors[m]//Chopm = Orthogonalize[RandomComplex[1 + I, {3, 3}]];UnitaryMatrixQ[m]SingularValueList[m]m = RandomVariate[CircularUnitaryMatrixDistribution[3]];{UnitaryMatrixQ[m], Abs[Det[m]]}m = Orthogonalize[RandomComplex[1 + I, {3, 3}]];{UnitaryMatrixQ[m], Norm[m]}m = RandomVariate[CircularSymplecticMatrixDistribution[3]];UnitaryMatrixQ[m]UnitaryMatrixQ[MatrixPower[m, RandomReal[{-2, 2}]]]MatrixExp[I h]は任意のエルミート行列 h についてユニタリ行列である:
h = Block[{a = RandomComplex[1 + I, {5, 5}]}, a + a^];HermitianMatrixQ[h]UnitaryMatrixQ[MatrixExp[I h]]UnitaryMatrixを使ってユニタリ行列を明示的に構築することができる:
UnitaryMatrix[RandomVariate[CircularUnitaryMatrixDistribution[3]]]これはUnitaryMatrixQを満足する:
UnitaryMatrixQ[%]関連するガイド
-
▪
- 行列述語
テキスト
Wolfram Research (2014), UnitaryMatrixQ, Wolfram言語関数, https://reference.wolfram.com/language/ref/UnitaryMatrixQ.html.
CMS
Wolfram Language. 2014. "UnitaryMatrixQ." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/UnitaryMatrixQ.html.
APA
Wolfram Language. (2014). UnitaryMatrixQ. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/UnitaryMatrixQ.html
BibTeX
@misc{reference.wolfram_2026_unitarymatrixq, author="Wolfram Research", title="{UnitaryMatrixQ}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/UnitaryMatrixQ.html}", note=[Accessed: 31-October-2026]}
BibLaTeX
@online{reference.wolfram_2026_unitarymatrixq, organization={Wolfram Research}, title={UnitaryMatrixQ}, year={2014}, url={https://reference.wolfram.com/language/ref/UnitaryMatrixQ.html}, note=[Accessed: 31-October-2026]}