21.2.1 Expressions Involving Diagonal Matrices

Last-modified: 2025-03-06 (木) 20:41:59

21.2.1 対角行列を含む式

Dは対角行列であると仮定する。Mが完全行列である場合、 はMD*Mの行をスケールする。つまり、 の場合、各インデックス i,j のペアに対して、 S = D*M

S(i,j) = D(i,i) * M(i,j).

同様に、M*D列のスケーリングも行います。

行列Dは、m行n列の長方形行列である場合もありますm != n。 の場合m < n、式はD*M次の式と等しくなります。

D(:,1:m) * M(1:m,:),

つまり、Mn-mの末尾の行は無視されます。 の場合、 は次と同等です。 m > nD*M

[D(1:n,:) * M; zeros(m-n, columns (M))],

つまり、結果に null 行が追加されます。右乗算の場合もM*D同様です。

式D \ Mと はM / D逆スケーリングを実行します。これらは、最小二乗法の最小ノルムの意味で対角行列 (または直交対角行列) を解くことと同等です。正確な算術では、これは擬似逆行列を掛けることと同等です。直交対角行列の擬似逆行列は、次元が入れ替わった直交対角行列で、非ゼロの各対角要素がその逆数に置き換えられます。行列除算アルゴリズムは、実際には、数値精度を高めるために逆数による乗算ではなく除算を使用します。それ以外は、上記の定義に従います。対角行列は、悪条件によって切り捨てられることはないことに注意してください。そうでなければ、スケーリングにはあまり役立ちません。これは通常、線形代数のニーズと一致しています。たまたま対角行列であるだけの完全な行列 (したがって、特別なオブジェクトではない) は、もちろん通常どおり扱われます。

対角行列による乗算と除算は、疎行列と組み合わせた場合にも効率的に機能します。つまりD*S、 ( Dは対角行列、Sは疎行列)は、疎行列の行をスケーリングして、疎行列を返します。式S*D、D\SはS/D 同様に機能します。

D1とD2が両方とも対角行列である場合、式

D1 + D2
D1 - D2
D1 * D2
D1 / D2
D1 \ D2

通常の次元マッチング規則に従って、再び対角行列を生成します。使用される関係は上記と同じです。

また、対角行列D は、スカラーで乗算または除算することも、平方行列の場合はスカラー累乗することもでき、すべてのケースで対角行列の結果が生成されます。

対角行列は転置または共役転置することもでき、期待どおりの結果が得られます。対角行列の先頭部分行列、つまり を抽出すると D(1:m,1:n)対角行列が生成され、その他のインデックス式は暗黙的に完全な行列に変換されます。

対角行列を完全行列に加えると、対角要素のみが処理されます。したがって、

A = A + eps * eye (n)

行列の対角要素を増やす効率的な方法です。減算も同様に機能します。

他の要素ごとの演算子、、、またはを含む式に含まれる場合 .*、./完全な行列への暗黙的な変換が行われます。これは必ずしも必要ではありません.\が、 MATLAB.^との一貫性を高めるために選択されています。