Main Content

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

null

説明

Z = null(A) は、A のヌル空間の正規直交基底を返します。

Z = null(A,'r') は、A のヌル空間の "有理" 基底を返します。これは通常は正規直交ではありません。A が小さな行列で、要素が小さな整数の場合、Z の要素は小さな整数の比率となります。この方法は、null(A) より数値的に精度が低くなります。

すべて折りたたむ

関数 null を使用して、行列のヌル空間の正規直交基底ベクトルと有理基底ベクトルを計算します。行列のヌル空間には、Ax=0 を満たすベクトル x が含まれます。

4 行 4 列の魔方陣行列を作成します。この行列はランク落ちであり、いずれかの特異値が 0 と等しくなっています。

A = magic(4)
A = 4×4

    16     2     3    13
     5    11    10     8
     9     7     6    12
     4    14    15     1

A のヌル空間の正規直交基底を計算します。Ax1=0 であり、丸め誤差の範囲内であることを確認します。

x1 = null(A)
x1 = 4×1

   -0.2236
   -0.6708
    0.6708
    0.2236

norm(A*x1)
ans = 3.0652e-15

次に、ヌル空間の有理基底を計算します。Ax2=0 であることを確認します。

x2 = null(A,'r')
x2 = 4×1

    -1
    -3
     3
     1

norm(A*x2)
ans = 0

x1x2 は似ていますが、正規化では別になります。

劣決定システムについてある特定の解を求め、その後すべての解について一般的な形式を求めます。

劣決定の線形システム Ax=b は方程式より未知数の数が多くなります。劣決定システムは、無限に解をもつ場合もあれば、解がない場合もあります。システムの解が無限にある場合、その解はすべて一直線上にあります。直線上のすべての点は、ヌル空間ベクトルの線形結合により得られます。

2 行 4 列の係数行列を作成し、バックスラッシュを使用して方程式 Ax0=b を解きます。ここで、b は 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

劣決定システムの完全な一般解は x=x0+Ny という形式になります。ここで、以下のようになります。

  • NA のヌル空間

  • y は適切な長さの任意のベクトル

  • x0 はバックスラッシュにより計算された解

A のヌル空間を計算し、その結果を使用してこの方程式系の別の解を求めます。新しい解が、丸め誤差の範囲内で Ax=b を満たしていることを確認します。

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 = 2.8908e-14

入力引数

すべて折りたたむ

入力行列。

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

出力引数

すべて折りたたむ

ヌル空間の基底ベクトル。行列の列として返されます。Z は以下の特性を満たします。

  • A*Z に非常に小さい要素がある。

  • size(Z,2)A の退化次数の推定値である。

アルゴリズム

null(A) は、行列の特異値分解 [U,S,V] = svd(A,0) を計算します。非ゼロの特異値に対応しない V の列は、ヌル空間の一連の正規直交基底ベクトルを構成します。

ヌル空間 null(A,'r') の "有理" 基底は、rref によって計算される A の行簡約階段形から得られます。

拡張機能

参考

| | |

R2006a より前に導入