Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

rank

説明

k = rank(A) は、行列 Aランクを返します。

スパース行列の構造化ランクを求めたい場合は、関数 sprank を使用してください。

k = rank(A,tol) は、ランクの計算に使用する別の許容誤差を指定します。ランクは、tol よりも大きい A の特異値の数として計算されます。

すべて折りたたむ

行列がフル ランクであるかどうかを判定します。

3 行 3 列の行列を作成します。3 列目の値は、2 列目の値の 2 倍になっています。

A = [3 2 4; -1 1 2; 9 5 10]
A = 3×3

     3     2     4
    -1     1     2
     9     5    10

行列のランクを計算します。行列がフル ランクの場合、ランクは列数 size(A,2) と等しくなります。

rank(A)
ans = 2
size(A,2)
ans = 3

これらの列が線形従属しているため、この行列はランク落ちです。

許容誤差を使用して行列のランクを計算します。

4 行 4 列の対角行列を作成します。この対角行列には、1e-15 に等しい 1 つの小さな値があります。

A = [10 0 0 0; 0 25 0 0; 0 0 34 0; 0 0 0 1e-15]
A = 4×4

   10.0000         0         0         0
         0   25.0000         0         0
         0         0   34.0000         0
         0         0         0    0.0000

行列のランクを計算します。

rank(A)
ans = 3

この行列がフル ランクとして認識されないのは、行列の既定のアルゴリズムでは max(size(A))*eps(norm(A)) より大きな特異値の数が計算されるためです。この行列では、対角上の小さな値は許容誤差より小さいため、除外されます。

行列のランクを再度計算します。ただし、許容誤差は 1e-16 に指定します。

rank(A,1e-16)
ans = 4

入力引数

すべて折りたたむ

入力行列。

データ型: single | double
複素数のサポート: あり

許容誤差。スカラーとして指定します。詳細については、アルゴリズムの節を参照してください。

例: rank(A,1e-5)

詳細

すべて折りたたむ

ランク

行列内で線形に独立している列の数が、その行列の "ランク" となります。行列の行と列のランクは常に等しくなります。

行列は、同じサイズの行列で可能な最高のランクである場合に "フル ランク" となり、フル ランクでない場合に "ランク落ち" となります。このランクは、行列の "範囲" または "列空間" (列のすべての線形結合の集合) の次元を測定したものです。

アルゴリズム

rank は特異値分解 (SVD) に基づくメソッドを使用します。SVD アルゴリズムは他のいくつかの代替方法より時間がかかりますが、信頼性は最も高くなります。

行列 A のランクは、許容誤差より大きな特異値の数として計算されます。既定では、許容誤差は max(size(A))*eps(norm(A)) です。ただし、コマンド rank(A,tol) を使用して別の許容誤差を指定することもできます。

拡張機能

バージョン履歴

R2006a より前に導入

参考

| | |