このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。
null
行列のヌル空間
説明
例
行列のヌル空間
関数 null
を使用して、行列のヌル空間の正規直交基底ベクトルと有理基底ベクトルを計算します。行列のヌル空間には、 を満たすベクトル が含まれます。
1 からなる 3 行 3 列の行列を作成します。この行列はランク落ちであり、特異値の 2 つが 0 と等しくなっています。
A = ones(3)
A = 3×3
1 1 1
1 1 1
1 1 1
A
のヌル空間の正規直交基底を計算します。 であり、丸め誤差の範囲内であることを確認します。
x1 = null(A)
x1 = 3×2
-0.5774 -0.5774
-0.2113 0.7887
0.7887 -0.2113
norm(A*x1)
ans = 9.6148e-17
次に、ヌル空間の有理基底を計算します。 であることを確認します。
x2 = null(A,"rational")
x2 = 3×2
-1 -1
1 0
0 1
norm(A*x2)
ans = 0
x1
と x2
は似ていますが、正規化では別になります。x1'*x1
は単位行列ですが、x2'*x2
は違います。
x1'*x1
ans = 2×2
1.0000 -0.0000
-0.0000 1.0000
x2'*x2
ans = 2×2
2 1
1 2
多くの場合、直交性は数値計算の正確性に不可欠です。そのため、"rational"
オプションは、すべて整数の小規模な行列を扱う際に、出力をより読みやすくするために役立つ場合にのみ使用してください。
ヌル空間の許容誤差の指定
行列に小さい特異値がある場合、許容誤差を指定して、ゼロとして扱われる特異値を変更します。
7 行 7 列のヒルベルト行列を作成します。この行列はフル ランクですが、いくつかの小さい特異値があります。
H = hilb(7)
H = 7×7
1.0000 0.5000 0.3333 0.2500 0.2000 0.1667 0.1429
0.5000 0.3333 0.2500 0.2000 0.1667 0.1429 0.1250
0.3333 0.2500 0.2000 0.1667 0.1429 0.1250 0.1111
0.2500 0.2000 0.1667 0.1429 0.1250 0.1111 0.1000
0.2000 0.1667 0.1429 0.1250 0.1111 0.1000 0.0909
0.1667 0.1429 0.1250 0.1111 0.1000 0.0909 0.0833
0.1429 0.1250 0.1111 0.1000 0.0909 0.0833 0.0769
s = svd(H)
s = 7×1
1.6609
0.2719
0.0213
0.0010
0.0000
0.0000
0.0000
H
のヌル空間を計算します。H
はフル ランクであるため、Z
は空です。
Z = null(H)
Z = 7x0 empty double matrix
次に、ヌル空間を再度計算します。ただし、許容誤差を 1e-4
に指定します。この許容誤差により、null
は特異値のうち 3 つをゼロとして扱うようになるため、ヌル空間は空ではなくなります。
Ztol = null(H,1e-4)
Ztol = 7×3
0.0160 -0.0025 0.0002
-0.2279 0.0618 -0.0098
0.6288 -0.3487 0.0952
-0.2004 0.6447 -0.3713
-0.4970 -0.1744 0.6825
-0.1849 -0.5436 -0.5910
0.4808 0.3647 0.1944
H*Ztol
には、指定された許容誤差と比べ非常に小さい要素があることを確認します。
norm(H*Ztol)
ans = 2.9386e-05
劣決定方程式系の一般解
劣決定システムについてある特定の解を求め、その後すべての解について一般的な形式を求めます。
劣決定の線形システム は方程式より未知数の数が多くなります。劣決定システムは、無限に解をもつ場合もあれば、解がない場合もあります。システムの解が無限にある場合、その解はすべて一直線上にあります。直線上のすべての点は、ヌル空間ベクトルの線形結合により得られます。
2 行 4 列の係数行列を作成し、バックスラッシュを使用して方程式 を解きます。ここで、 は 1 から成るベクトルです。バックスラッシュにより、問題の最小二乗解が計算されます。
A = [1 8 15 67; 7 14 16 3]
A = 2×4
1 8 15 67
7 14 16 3
b = ones(2,1); x0 = A\b
x0 = 4×1
0
0
0.0623
0.0010
劣決定システムの完全な一般解は という形式になります。ここで、以下のようになります。
は のヌル空間。
は適切な長さの任意のベクトル。
はバックスラッシュにより計算された解。
A
のヌル空間を計算し、その結果を使用してこの方程式系の別の解を求めます。新しい解が、丸め誤差の範囲内で を満たしていることを確認します。
N = null(A)
N = 4×2
-0.2977 -0.8970
-0.6397 0.4397
0.7044 0.0157
-0.0769 -0.0426
x = x0 + N*[1; -2]
x = 4×1
1.4963
-1.5192
0.7354
0.0093
norm(A*x-b)
ans = 1.8291e-14
入力引数
A
— 入力行列
行列
入力行列。
データ型: single
| double
複素数のサポート: あり
tol
— 特異値の許容誤差
スカラー
特異値の許容誤差。実数値スカラーとして指定します。許容誤差未満の A
の特異値はゼロとして扱われ、これは null
によって返されるヌル空間ベクトルの数に影響を与えます。既定の許容誤差は max(size(A)) * eps(norm(A))
です。
出力引数
Z
— ヌル空間の基底ベクトル
行列
ヌル空間の基底ベクトル。行列の列として返されます。Z
は以下の特性を満たします。
A*Z
に非常に小さい要素がある。size(Z,2)
はA
の退化次数の推定値である。
rank(A)
(または rank(A,tol)
) が size(A,2)
と等しい場合、Z
は空です。
アルゴリズム
null(A)
は、A = U*S*V'
となるように、行列 A
の特異値分解を計算します。(許容誤差内で) ゼロと等しい特異値に対応する V
の列は、ヌル空間の一連の正規直交基底ベクトルを形成します。
ヌル空間 null(A,"rational")
の有理基底は、rref
によって計算される A
の行簡約階段形から得られます。
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
生成されたコードは MATLAB® と異なる基底を返す場合があります。
コード生成では、合理的な基底オプション (2 番目の入力) はサポートされていません。
コード生成では、この関数のスパース行列入力はサポートされません。
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
使用上の注意事項および制限事項:
構文
Z = null(A,"rational")
はサポートされていません。
詳細については、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
分散配列
Parallel Computing Toolbox™ を使用して、クラスターの結合メモリ上で大きなアレイを分割します。
使用上の注意事項および制限事項:
構文
Z = null(A,"rational")
はサポートされていません。
詳細については、分散配列を使用した MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2006a より前に導入R2022a: 許容誤差の指定
tol
引数を使用して、ヌル空間の形成に使用される特異値の許容誤差しきい値を指定します。許容誤差より小さい入力行列の特異値は、ゼロとして扱われます。
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)