cond
逆行列計算の条件数
説明
例
行列の条件数
行列の条件数を計算し、逆行列計算に対する感度を調べます。
2 行 2 列の行列を作成します。
A = [4.1 2.8; 9.7 6.6];
A
の 2 ノルムの条件数を計算します。
C = cond(A)
C = 1.6230e+03
A
の条件数は 1 よりはるかに大きいため、この行列は逆行列計算に対して敏感です。A
の逆行列を計算した後に、A
の 2 番目の行を少し変更して、再び逆行列を計算します。
invA = inv(A)
invA = 2×2
-66.0000 28.0000
97.0000 -41.0000
A2 = [4.1 2.8; 9.671 6.608]
A2 = 2×2
4.1000 2.8000
9.6710 6.6080
invA2 = inv(A2)
invA2 = 2×2
472.0000 -200.0000
-690.7857 292.8571
その結果は、A
を少し変更すると、逆行列の計算結果が大幅に変化することを示します。
1 ノルムの条件数
行列の 1 ノルムの条件数を計算します。
3 行 3 列の行列を作成します。
A = [1 0 -2; 3 4 6; -1 5 7];
A
の 1 ノルムの条件数を計算します。m 行 n 列の行列の 1 ノルムの条件数の値は以下のとおりです。
,
ここで、1 ノルムは、行列要素の絶対値の列に沿った和の最大値であり、以下で与えられます。
C = cond(A,1)
C = 18.0000
この行列の条件数は過度に大きくないため、行列は逆行列の計算に対して特に敏感ではありません。
入力引数
A
— 入力行列
行列
入力行列。A
は、正方形または長方形のサイズにすることができます。
データ型: single
| double
複素数のサポート: あり
p
— ノルムのタイプ
2
(既定値) | 1
| 'fro'
| Inf
ノルムのタイプ。次の表に挙げる値のいずれかとして指定します。cond
は、p
が 2 以外の値の場合に norm(A,p) * norm(inv(A),p)
を使用して条件数を計算します。これらのノルムのタイプの詳細については、norm
のページを参照してください。
p の値 | ノルムのタイプ |
---|---|
| 1 ノルムの条件数 |
| 2 ノルムの条件数 |
| 無限大ノルムの条件数 |
| Frobenius ノルムの条件数 |
例: cond(A,1)
は 1 ノルムの条件数を計算します。
出力引数
C
— 条件数
スカラー
条件数。スカラーとして返されます。C
の値が 1 に近い場合は条件の良い行列であることを示し、C
の値が大きい場合は条件の悪い行列であることを示します。特異行列の条件数は Inf
です。
慣例により、空行列の条件数はゼロです。
詳細
逆行列計算の条件数
行列と計算タスクの "条件数" は、入力データの変更と解法プロセスでの丸め誤差に対する解の感度を表します。
行列の "逆行列計算の条件数" は、データの誤差に対する線形方程式系の解の感度を表します。これによって、逆行列化や線形方程式から得られる結果の精度がわかります。たとえば、正方行列の 2 ノルムの条件数は次のとおりです。
このコンテキストでは、大きな条件数は、係数行列 A
のわずかな変化によって線形方程式 Ax = b と xA = b の出力 b
が大幅に変化する可能性があることを示します。極端な例は、A
が特異 (条件数が無限大) という非常に悪い条件であり、この場合は逆行列がなく、線形方程式の一意な解はありません。
ヒント
cond
と比較して、rcond
はより効率的ですが信頼性が低い行列の条件の推定方法です。
アルゴリズム
cond
のアルゴリズムには次の 3 つの部分があります。
p = 2
である場合、cond
はsvd
が提供する特異値分解を使用して、最小特異値に対する最大特異値の比を計算します。p = 1
、Inf
、または'fro'
である場合、cond
は入力行列とその逆行列の適切なノルムをnorm(A,p) * norm(inv(A),p)
で使用して条件数を計算します。入力行列がスパースである場合、
cond
は、指定されたp
値を無視してcondest
を呼び出します。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
cond
はスパース行列をサポートしません。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
この関数は GPU 配列を完全にサポートしています。詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
使用上の注意事項および制限事項:
cond
はスパース行列をサポートしません。
詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入R2021b: cond
は非有限の入力に対して NaN
を返す
cond
は、入力に非有限の値 (Inf
または NaN
) が含まれていると NaN
を返します。以前は、入力に非有限の値が含まれていると cond
からエラーがスローされていました。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)