DiagonalizableMatrixQ
例題
すべて開く すべて閉じる例 (2)
DiagonalizableMatrixQ[{{0, 1}, {0, 0}}]m = (| | | |
| -- | -- | -- |
| a | b | -a |
| -a | a | b |
| b | -a | a |);DiagonalizableMatrixQ[m]p = Transpose[Eigenvectors[m]];Inverse[p].m.p//FullSimplify//MatrixFormスコープ (9)
基本的な用法 (5)
m = {{1, 2.3}, {2.4, 4}};DiagonalizableMatrixQ[m]p = Transpose[Eigenvectors[m]](Inverse[p].m.p)//ChopEigenvalues[m]m = {{1, 2 - 3I}, {3 + 4I, 4}};DiagonalizableMatrixQ[m]m = (| | | |
| -- | --- | -- |
| 0 | -6 | -4 |
| 5 | -11 | -6 |
| -6 | 9 | 4 |);DiagonalizableMatrixQ[m]DiagonalizableMatrixQ[(m + m^/2)]DiagonalizableMatrixQを任意精度の行列に使う:
m = RandomReal[5, {3, 3}, WorkingPrecision -> 15]DiagonalizableMatrixQ[m]DiagonalizableMatrixQを記号行列に使う:
DiagonalizableMatrixQ[{{a, b}, {b, c}}]特殊行列 (4)
DiagonalizableMatrixQを疎な配列に使う:
SparseArray[{{1, 3} -> 1, {2, 2} -> 2, {3, 1} -> 3}, {3, 3}]DiagonalizableMatrixQ[%]SparseArray[{{x_, y_} /; Abs[x - y] < 3 -> 3}, {5, 5}]DiagonalizableMatrixQ[%]DiagonalizableMatrixQを構造化行列に使う:
SymmetrizedArray[{{1, 2} -> 4, {3, 2} -> 5}, {3, 3}, Symmetric[All]]DiagonalizableMatrixQ[%]QuantityArrayを構造化行列に使う:
QuantityArray[{{1, 2}, {2, 5}}, "Meters"]DiagonalizableMatrixQ[%]DiagonalizableMatrixQ[IdentityMatrix[5]]HilbertMatrixは対角化可能である:
DiagonalizableMatrixQ[HilbertMatrix[5]]オプション (1)
Tolerance (1)
次数
のランダムな摂動がある,対角化不可能な実数値ジョルダン(Jordan)ブロック行列を生成する:
SeedRandom[521];
q = {{0, 1, 0}, {0, 0, 1}, {0, 0, 0}} + 10 ^ -12 * RandomReal[1, {3, 3}];DiagonalizableMatrixQ[q]v = Eigenvectors[q]; MatrixForm[v]Det[v]//Abs固有ベクトルの線形従属性が検出できるように,オプションToleranceを調整する:
DiagonalizableMatrixQ[q, Tolerance -> 10 ^ -12]アプリケーション (6)
行列
が対角化可能な場合,これは
と分解することができる.ただし,
は非特異であり,
は対角である,これを使い,そのベキ級数表現
を使って
として行列関数を計算することができる.
は
を各対角要素に適用することで計算できる.この方法を使っていくつかの異なる行列関数を計算する:
m = {{3, 2}, {1, 4}};
DiagonalizableMatrixQ[m]{λ, v} = Eigensystem[m]p = Transpose[v];
を計算し,MatrixPowerを使って確かめる:
p.DiagonalMatrix[λ ^ k].Inverse[p]% == MatrixPower[m, k]
を計算し,MatrixExpを使って確かめる:
p.DiagonalMatrix[Exp[λ]].Inverse[p]% == MatrixExp[m]
を計算し,MatrixLogを使って確かめる:
p.DiagonalMatrix[Log[λ]].Inverse[p]% == MatrixLog[m]
を計算し,MatrixFunctionを使って確かめる:
p.DiagonalMatrix[f /@ λ].Inverse[p]% == MatrixFunction[f, m]常微分方程式系
,
,
を解く.まず,右辺について係数行列
を構築する:
a = {{0, 1, 0}, {0, 0, 1}, {-2, 1, 2}};係数行列は対角化可能なので,行列の指数を計算するのは簡単である:
DiagonalizableMatrixQ[a]{λ, v} = Eigensystem[a]d = DiagonalMatrix[Exp[t λ]]p = Transpose[v]p.d.Inverse[p] . {C[1], C[2], C[3]}DSolveValueを使って解を確かめる:
Simplify[% == DSolveValue[{x'[t] == y[t], y'[t] == z[t], z'[t] == -2x[t] + y[t] + 2z[t]}, {x[t], y[t], z[t]}, t]]Fibonacciの漸化式
は行列形式を使うと
と書けるという事実を使ってペア
についての式を導き出す.漸化式の解は
である.ここで,
である:
f[1] := {1, 0};m = {{1, 1}, {1, 0}};DiagonalizableMatrixQ[m]したがって,行列のベキはEigenvalueDecomposition[m]を使って簡単に計算できる:
{p, λ} = EigenvalueDecomposition[m]f[n_] := Simplify[p.λ^n - 1.Inverse[p].f[1]];f[100]Fibonacciを使って結果を確かめる:
% == Fibonacci[{100, 99}]正規行列は
(
は対角行列で
はユニタリ行列)のようにユニタリ対角化可能な最も一般的な種類の行列である.等式の両辺が単純に
なので,エルミート行列
はどれも正規行列である:
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].nNormalMatrixQを使って確かめる:
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]量子力学では,エネルギー演算子
はハミルトニアンと呼ばれ,エネルギー
を持つ状態はシュレーディンガー(Schrödinger)方程式
に従って進化する.ここで重要な仮定は,どのような状態も固有状態の和として書けるということである.これが,
方向に一定の磁場を持つスピン1粒子のハミルトニアンの場合に当てはまることを示す:
ℋ = (Subscript[ω, 0]ℏ/Sqrt[2]) (| | | |
| - | -- | -- |
| 0 | -I | 0 |
| I | 0 | -I |
| 0 | I | 0 |);この行列は対角化可能なので,その固有ベクトルは
の基底を形成しなければならない:
DiagonalizableMatrixQ[ℋ]{{Subscript[ℰ, 1], Subscript[ℰ, 2], Subscript[ℰ, 3]}, v} = Eigensystem[ℋ]固有ベクトルが線形独立であり,したがって基底であることを確認する:
MatrixRank[v]{Subscript[e, 1], Subscript[e, 2], Subscript[e, 3]} = Normalize /@ vUnderoverscript[∑, i = 1, 3](Subscript[e, i].{Subscript[z, 1], Subscript[z, 2], Subscript[z, 3]})Subscript[e, i] == {Subscript[z, 1], Subscript[z, 2], Subscript[z, 3]} //SimplifyCircularRealMatrixDistributionを含む多くの行列分布は,対角化可能であることが保証される行列を生成する:
DiagonalizableMatrixQ /@ RandomVariate[CircularRealMatrixDistribution[3], 10]CircularSymplecticMatrixDistribution:
DiagonalizableMatrixQ /@ RandomVariate[CircularSymplecticMatrixDistribution[3], 10]GaussianOrthogonalMatrixDistribution:
DiagonalizableMatrixQ /@ RandomVariate[GaussianOrthogonalMatrixDistribution[3], 10]GaussianUnitaryMatrixDistribution :
DiagonalizableMatrixQ /@ RandomVariate[GaussianUnitaryMatrixDistribution[3], 10]特性と関係 (9)
対角化可能な行列
は固有値分解を使って
のように因子分解することができる.
は対角行列である:
m = RandomVariate[GaussianSymplecticMatrixDistribution[2]];
DiagonalizableMatrixQ[m]EigenvalueDecompositionを使って相似変換行列および対角行列を求める:
{p, d} = EigenvalueDecomposition[m];m - p.d.Inverse[p]//Chop行列が固有ベクトルの完全集合を持つときかつそのときに限ってその行列は対角化可能である:
m = {{-3, -6, 9}, {-18, -15, 27}, {-18, -18, 30}};
DiagonalizableMatrixQ[m]繰り返される固有値を持つにもかかわらず,
は3つの線形独立の固有ベクトルを持つ:
Eigensystem[m]n = {{42, 49, -61}, {-9, -4, 13}, {18, 26, -26}};
DiagonalizableMatrixQ[n]Eigensystemが返す零ベクトルが示すように,2つの独立固有ベクトルしか持たない:
Eigensystem[n]m = {{2, 3, 3}, {4, 6, 7}, {8, 8, 10}};
Eigenvalues[m]DiagonalizableMatrixQ[m]m = Symmetrize[RandomReal[1, {10, 10}]]{SymmetricMatrixQ[m], DiagonalizableMatrixQ[m]}m = Symmetrize[RandomComplex[1 + I, {10, 10}], Hermitian[All]]{HermitianMatrixQ[m], DiagonalizableMatrixQ[m]}m = Symmetrize[RandomReal[1, {10, 10}], Antisymmetric[All]]{AntisymmetricMatrixQ[m], DiagonalizableMatrixQ[m]}m = Symmetrize[RandomComplex[1 + I, {10, 10}], Antihermitian[All]]{AntihermitianMatrixQ[m], DiagonalizableMatrixQ[m]}m = RandomVariate[CircularRealMatrixDistribution[10]];{OrthogonalMatrixQ[m], DiagonalizableMatrixQ[m]}m = RandomVariate[CircularUnitaryMatrixDistribution[10]];{UnitaryMatrixQ[m], DiagonalizableMatrixQ[m]}m = {{1., 3., -1.}, {-1., 1., 3.}, {3., -1., 1.}};
{NormalMatrixQ[m], DiagonalizableMatrixQ[m]}JordanDecomposition[m]の
行列が対角行列なら,行列 m は対角化可能である:
n = {{1, 1, 0}, {-1, 3, (1/4)}, {0, 0, 2}};
{sn, jn} = JordanDecomposition[n];{DiagonalizableMatrixQ[n], jn//MatrixForm}d = {{2, 3, 3}, {4, 6, 7}, {8, 8, 10}};
{sd, jd} = JordanDecomposition[d];{DiagonalizableMatrixQ[d], jd//MatrixForm}q = {{0, 1}, {0, 0}};
MatrixPower[q, 2]m = {{2, -1, 0}, {-1, 3, -1}, {-1, 2, 1}};
DiagonalizableMatrixQ[m]JordanDecompositionを使って
を
と書く.
は対角化可能で
はベキ零である:
{s, j} = JordanDecomposition[m];
d = s.DiagonalMatrix[Diagonal[j]].Inverse[s];
q = s.DiagonalMatrix[Diagonal[j, 1], 1].Inverse[s];
m == d + qDiagonalizableMatrixQ[d]MatrixPower[q, Length[q]]d.q == q.dテクニカルノート
関連するガイド
-
▪
- 行列述語
テキスト
Wolfram Research (2014), DiagonalizableMatrixQ, Wolfram言語関数, https://reference.wolfram.com/language/ref/DiagonalizableMatrixQ.html.
CMS
Wolfram Language. 2014. "DiagonalizableMatrixQ." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/DiagonalizableMatrixQ.html.
APA
Wolfram Language. (2014). DiagonalizableMatrixQ. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/DiagonalizableMatrixQ.html
BibTeX
@misc{reference.wolfram_2026_diagonalizablematrixq, author="Wolfram Research", title="{DiagonalizableMatrixQ}", year="2014", howpublished="\url{https://reference.wolfram.com/language/ref/DiagonalizableMatrixQ.html}", note=[Accessed: 07-October-2026]}
BibLaTeX
@online{reference.wolfram_2026_diagonalizablematrixq, organization={Wolfram Research}, title={DiagonalizableMatrixQ}, year={2014}, url={https://reference.wolfram.com/language/ref/DiagonalizableMatrixQ.html}, note=[Accessed: 07-October-2026]}