OrthogonalMatrix[omat]
直交行列 omat を構造化配列に変換する.
OrthogonalMatrix
OrthogonalMatrix[omat]
直交行列 omat を構造化配列に変換する.
詳細とオプション
- 直交行列は,構造化配列として表されるときは,指定が便利にでき,InverseやLinearSolve等のより効率的な操作が可能になる.
- 直交行列を含む行列の分解には,QR分解,Hessenberg分解,Schur分解,固有値分解,極分解がある. »
- 正方直交行列
は,その転置がその逆行列に等しい行列,すなわち
の関係を満たす行列である.したがって,正方直交行列の逆行列もまた直交である. » - 縦長の
直交行列
について,列ベクトル
は正規直交であるので,
(
)が成り立つ.横長の直交行列
については,行ベクトル
は正規直交であるので,
(
)が成り立つ.正方行列については,これら両方の記述が真である. » - 先行する定義と同値に,次元
の行列
は,
であり
が
の単位行列である場合,または
であり
が
の単位行列である場合に,直交行列である. » - 正方直交行列は行列の乗算の下で閉じているので,
もまた直交行列である. » - OrthogonalMatrix sa については sa["prop"]で以下の特性"prop"にアクセスできる.
-
"Matrix" 完全配列として表される直交行列 "Properties" サポートされる特性のリスト "Structure" 構造化配列の型 "StructuredData" 構造化配列に保存されている内部データ "StructuredAlgorithms" 構造化配列について特別なメソッドを持つ関数のリスト "Summary" Datasetとして表される要約情報 - Normal[OrthogonalMatrix[…]]は直交行列を通常の行列として与える.
- OrthogonalMatrixは次のオプションを取る.
-
TargetStructure Automatic 返す構造 - 次は,オプションTargetStructureの可能な設定である.
-
Automatic 返す表現を自動的に選択する "Dense" 行列を密な行列として表す "Structured" 行列を構造化配列として表す - OrthogonalMatrix[…,TargetStructureAutomatic]はOrthogonalMatrix[…,TargetStructure"Structured"]に等しい.
例題
すべて開く すべて閉じる例 (1)
om = OrthogonalMatrix[{{(1/2), (1/2), (1/2), (1/2)}, {(1/2), (1/2), -(1/2), -(1/2)}, {(1/2), -(1/2), -(1/2), (1/2)}, {(1/2), -(1/2), (1/2), -(1/2)}}]MatrixForm[om]NormalはOrthogonalMatrixをその通常の表現に変換できる:
Normal[om]スコープ (7)
OrthogonalMatrix[RotationMatrix[{{1, -1, 1, -1}, {-1, -1, 1, 1}}]]OrthogonalMatrix[ReflectionMatrix[{1, -1, 1, -1}]]rm = ReflectionMatrix[{1, -1, 1}]{OrthogonalMatrix[rm], SymmetricMatrix[rm]}co = OrthogonalMatrix[(| | | | |
| -------- | -------- | ------- | ------- |
| (5/4) | 0 | (3 I/4) | 0 |
| 0 | (5/4) | 0 | (3 I/4) |
| -(3 I/4) | 0 | (5/4) | 0 |
| 0 | -(3 I/4) | 0 | (5/4) |)]{OrthogonalMatrixQ[co], UnitaryMatrixQ[co]}om = OrthogonalMatrix[{{(1/2 Sqrt[2]), (1/2 Sqrt[2]), (1/2 Sqrt[2])}, {(1/2 Sqrt[2]), (1/2 Sqrt[2]), (1/2 Sqrt[2])}, {(1/2 Sqrt[2]), (1/2 Sqrt[2]), -(1/2 Sqrt[2])}, {(1/2 Sqrt[2]), (1/2 Sqrt[2]), -(1/2 Sqrt[2])}, {(1/2 Sqrt[2]), -(1/2 Sqrt[2]), -(1/2 Sqrt[2])}, {(1/2 Sqrt[2]), -(1/2 Sqrt[2]), -(1/2 Sqrt[2])}, {(1/2 Sqrt[2]), -(1/2 Sqrt[2]), (1/2 Sqrt[2])}, {(1/2 Sqrt[2]), -(1/2 Sqrt[2]), (1/2 Sqrt[2])}}]Transpose[om]OrthogonalMatrixオブジェクトは行列についての情報を与える特性を含んでいる:
om = OrthogonalMatrix[(| | | |
| ------ | ------ | ------ |
| -(1/3) | (2/3) | -(2/3) |
| -(2/3) | (1/3) | (2/3) |
| -(2/3) | -(2/3) | -(1/3) |)]om["Properties"]
"Summary"特性は行列についての情報の簡単な要約を与える:
om["Summary"]"StructuredAlgorithms"特性は構造化アルゴリズムを持つ関数を列挙する:
om["StructuredAlgorithms"]CircularRealMatrixDistributionを使ってランダム直交行列を作成する:
OrthogonalMatrix /@ RandomVariate[CircularRealMatrixDistribution[4], 3]square = OrthogonalMatrix[RandomVariate[CircularRealMatrixDistribution[5]]]square[[{1, 3, 4}]]この横長の行列から行を選択して,別の横長の直交行列を作成する:
%[[1 ;; 2]]square[[All, {1, 3, 4}]]square[[All, 1 ;; 2]]オプション (1)
TargetStructure (1)
OrthogonalMatrix[(| | | |
| ------ | ------ | ----- |
| -(1/3) | (2/3) | (2/3) |
| (2/3) | -(1/3) | (2/3) |
| -(2/3) | -(2/3) | (1/3) |), TargetStructure -> "Dense"]OrthogonalMatrix[(| | | |
| ------ | ------ | ----- |
| -(1/3) | (2/3) | (2/3) |
| (2/3) | -(1/3) | (2/3) |
| -(2/3) | -(2/3) | (1/3) |), TargetStructure -> "Structured"]アプリケーション (5)
CircularRealMatrixDistributionから導かれた行列は直交行列である:
OrthogonalMatrix[RandomVariate[CircularRealMatrixDistribution[9]]]o = RotationMatrix[Pi / 3, RandomReal[1, 3], TargetStructure -> "Orthogonal"]直交行列は
上で標準的な内積を保持する.表現を変えるなら,
が直交行列で
と
がベクトル行列なら
である:
{u, v} = RandomReal[1, {2, 3}];
OrthogonalMatrixQ[o] && u.v == (o.u).(o.v)VectorAngle[u, v] == VectorAngle[o.u, o.v]Norm[u] == Norm[o.u]Norm[v] == Norm[o.v]任意の直交行列は回転および/または反射を表す.行列の行列式が
なら,これは純粋な回転である.行列式が
なら,この行列は反射を含む.次の行列について考える:
m = OrthogonalMatrix[(| | |
| ------------------- | -------------------- |
| -0.9980858626557927 | -0.06184343753901693 |
| 0.06184343753901693 | -0.9980858626557927 |)]Det[m] == 1つまり,これは純粋な回転である.デカルト単位ベクトル
と
は相対的な位置を保持している:
o = {0, 0};i = UnitVector[1];j = UnitVector[2];
Graphics[{{StandardBlue, {Arrow[{o, m.i}], Dotted, Arrow[{o, i}]}}, {StandardRed, {Arrow[{o, m.j}], Dotted, Arrow[{o, j}]}}}]m = OrthogonalMatrix[(| | |
| ------------------- | ------------------- |
| -0.6512037846116245 | -0.7589029127019458 |
| -0.7589029127019458 | 0.6512037846116244 |)]Det[m] == -1したがって,この行列は反射を含む.デカルト単位ベクトル
と
は相対的な位置が反転する:
Graphics[{{StandardBlue, {Arrow[{o, m.i}], Dotted, Arrow[{o, i}]}}, {StandardRed, {Arrow[{o, m.j}], Dotted, Arrow[{o, j}]}}}]m = RandomReal[{-1., 1.}, {5, 5}];
{q, r} = QRDecomposition[m, TargetStructure -> "Structured"]{u, w, v} = SingularValueDecomposition[m, TargetStructure -> "Structured"]{s, t} = SchurDecomposition[m, TargetStructure -> "Structured"]{p, h} = HessenbergDecomposition[m, TargetStructure -> "Structured"]n = 5;
Subscript[ℋ, v_] := OrthogonalMatrix[IdentityMatrix[n] - 2 vv / v.v];
v = RandomReal[1, n];
Subscript[ℋ, v]
はハウスホルダー(Householder)反射と呼ばれる.反射であるので,行列式は
である:
Det[Subscript[ℋ, v]]Subscript[ℋ, v].v == -vperp = Block[{w = RandomReal[1, n]}, w - Projection[w, v]];
Subscript[ℋ, v].perp == perp行列計算において,
は指定された列ベクトル
の選択された成分を0に設定するために使用される:
x = RandomReal[1, n];v = x - x[[1]] / Abs[x[[1]]] Norm[x]UnitVector[n, 1];
Subscript[ℋ, v].{x}//Chop特性と関係 (8)
正方OrthogonalMatrixの転置はもとの行列の逆行列に等しい:
o = OrthogonalMatrix[(| | | |
| ------ | ------ | ----- |
| -(1/3) | (2/3) | (2/3) |
| (2/3) | -(1/3) | (2/3) |
| -(2/3) | -(2/3) | (1/3) |)]Transpose[o] === Inverse[o]o.o == o.o == IdentityMatrix[3]o直交行列はPseudoInverse[o]==ConjugateTranspose[o]に従う:
s = OrthogonalMatrix[StructuredArray`StructuredData[{4, 4},
{{{0.4061307977691637, -0.4449068592345224, -0.38124958350208205, -0.7012591652085159},
{0.7713160203254789, 0.3583692765666902, 0.522004406169808, -0.06445508778706913},
{0.09273154148377766, 0.7457930112797919, -0.6567329637569658, -0.06241361914882445},
{0.4811758858324995, -0.34266912984008396, -0.38840953816015766, 0.7072380539918383}}, 0}]];
PseudoInverse[s] == Transpose[s]Inverseとの関係とは異なり,これは形状を問わず真である:
t = OrthogonalMatrix[StructuredArray`StructuredData[{2, 4},
{{{0.4061307977691637, -0.4449068592345224, -0.38124958350208205, -0.7012591652085159},
{0.7713160203254789, 0.3583692765666902, 0.522004406169808, -0.06445508778706913}}, 0}]];
PseudoInverse[t] == Transpose[t]w = OrthogonalMatrix[StructuredArray`StructuredData[{4, 2},
{{{0.4061307977691637, 0.7713160203254789}, {-0.4449068592345224, 0.3583692765666902},
{-0.38124958350208205, 0.522004406169808}, {-0.7012591652085159, -0.06445508778706913}}, 0}]];
PseudoInverse[w] == Transpose[w]縦長の
直交行列
について,列
は正規直交である.すなわち,
(
):
{t = OrthogonalMatrix[(| | |
| ------------ | ----------- |
| (1/Sqrt[3]) | (1/Sqrt[3]) |
| (-1/Sqrt[3]) | (1/Sqrt[3]) |
| (1/Sqrt[3]) | 0 |
| 0 | (1/Sqrt[3]) |)], w = t}Table[Subscript[t, [[All, i]]].Subscript[t, [[All, j]]] == KroneckerDelta[ij], {i, 2}, {j, 2}]Table[Subscript[w, [[i]]].Subscript[w, [[j]]] == KroneckerDelta[ij], {i, 2}, {j, 2}]w = RandomVariate[CircularRealMatrixDistribution[5], WorkingPrecision -> 6][[1 ;; 3]]//OrthogonalMatrixw.w == IdentityMatrix[3]
は適切に定義されているが,
であるため,単位行列ではない点に注意のこと:
w.w//MatrixFormt = RandomVariate[CircularRealMatrixDistribution[4], WorkingPrecision -> 6][[All, 1 ;; 2]]//OrthogonalMatrixt.t == IdentityMatrix[2]ここでも,逆の順序での積は適切に定義されているが,恒等行列ではない:
t.t//MatrixForm{o1, o2} = OrthogonalMatrix /@ RandomVariate[CircularRealMatrixDistribution[3], 2]o1.o2o = OrthogonalMatrix[(| | | |
| ------ | ------ | ------ |
| -(1/3) | (2/3) | -(2/3) |
| -(2/3) | (1/3) | (2/3) |
| -(2/3) | -(2/3) | -(1/3) |)]{UnitaryMatrixQ[o], OrthogonalMatrixQ[o] && MatrixQ[o, RealValuedNumberQ]}UnitaryMatrix[o]PolarDecompositionは,デフォルトで,入力が実数のときはOrthogonalMatrixオブジェクトを返す:
PolarDecomposition[RandomReal[1, {3, 3}]]OrderedSchurDecompositionは,デフォルトで,入力が実数のときはOrthogonalMatrixオブジェクトを返す:
OrderedSchurDecomposition[RandomReal[1, {3, 3}]]テキスト
Wolfram Research (2024), OrthogonalMatrix, Wolfram言語関数, https://reference.wolfram.com/language/ref/OrthogonalMatrix.html.
CMS
Wolfram Language. 2024. "OrthogonalMatrix." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/OrthogonalMatrix.html.
APA
Wolfram Language. (2024). OrthogonalMatrix. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/OrthogonalMatrix.html
BibTeX
@misc{reference.wolfram_2026_orthogonalmatrix, author="Wolfram Research", title="{OrthogonalMatrix}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/OrthogonalMatrix.html}", note=[Accessed: 07-November-2026]}
BibLaTeX
@online{reference.wolfram_2026_orthogonalmatrix, organization={Wolfram Research}, title={OrthogonalMatrix}, year={2024}, url={https://reference.wolfram.com/language/ref/OrthogonalMatrix.html}, note=[Accessed: 07-November-2026]}