ドキュメンテーション

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

構文

  • X = sqrtm(A)
  • [X,residual] = sqrtm(A)
  • [X,alpha,condx] = sqrtm(A)

説明

X = sqrtm(A) は、X*X = A であるような行列 A の主平方根を計算します。

X は、すべての固有値が非負の実数値をもつ、ユニークな平方根です。A に負の実数部をもつ固有値が 1 つでも含まれる場合、結果は複素数になります。A が特異行列の場合、A は平方根をもたないことがあります。厳密な特異性が検出された場合は警告が出力されます。

[X,residual] = sqrtm(A) は、残差 residual = norm(A-X^2,1)/norm(A,1) も返します。この構文では、厳密な特異性が検出されても警告が出力されません。

[X,alpha,condx] = sqrtm(A) は、安定因子 alpha と 1 ノルムでの X の行列の平方根の推定条件数 condx を返します。残差 norm(A-X^2,1)/norm(A,1)n*alpha*eps を境界とし、X の 1 ノルムの相対誤差は n*alpha*condx*eps を境界とします。ここで n = max(size(A)) です。

すべて折りたたむ

4 階差分演算子の行列表現 A を作成します。この行列は対称で正定です。

A = [5 -4 1 0 0; -4 6 -4 1 0; 1 -4 6 -4 1; 0 1 -4 6 -4; 0 0 1 -4 6]
A =

     5    -4     1     0     0
    -4     6    -4     1     0
     1    -4     6    -4     1
     0     1    -4     6    -4
     0     0     1    -4     6

sqrtm を使用して、A の一意的な正定平方根を計算します。X は 2 階差分演算子の行列表現です。

X = round(sqrtm(A))
X =

     2    -1     0     0     0
    -1     2    -1     0     0
     0    -1     2    -1     0
     0     0    -1     2    -1
     0     0     0    -1     2

4 つの平方根をもつ行列 A について考えてみます。

$$A = \left[ \matrix{7 & 10 \cr 15 & 22} \right]$$

A の平方根のうち 2 つは Y1 および Y2 で求められます。

$$Y_1 = \left[ \matrix{1.5667 & 1.7408 \cr 2.6112 & 4.1779} \right]$$

$$Y_2 = \left[ \matrix{1 & 2 \cr 3 & 4} \right] $$

Y1 および Y2 が、行列 A の平方根であることを確認します。

A = [7 10; 15 22];
Y1 = [1.5667 1.7408; 2.6112 4.1779];
A - Y1*Y1
ans =

   1.0e-03 *

   -0.1258   -0.1997
   -0.2995   -0.4254

Y2 = [1 2; 3 4];
A - Y2*Y2
ans =

     0     0
     0     0

A の残りの 2 つの平方根は、-Y1 および -Y2 です。これら 4 つの平方根はすべて A の固有値および固有ベクトルから得ることができます。[V,D] = eig(A) である場合、平方根の一般的な形式は Y = V*S/V となります。ここで D = S*S および S には 4 つの符号の選択肢があり、それによって Y に 4 つの異なる値が得られます。

$$S = \left[ \matrix{\pm 0.3723 & 0 \cr 0 & \pm 5.3723} \right]$$

sqrtmA の平方根を計算します。Y2 の方がより自然な結果であるように見えますが、関数 sqrtm は正の平方根を選択して Y1 を生成します。

Y = sqrtm(A)
Y =

    1.5667    1.7408
    2.6112    4.1779

入力引数

すべて折りたたむ

入力行列。正方行列として指定します。

データ型: single | double
複素数のサポート: はい

詳細

すべて折りたたむ

ヒント

  • A = [0 1; 0 0] のような行列は、実数や複素数の平方根をもたず、関数 sqrtm の結果は予期できません。

アルゴリズム

関数 sqrtm のアルゴリズムは[3]に記述されています。

参照

[1] N.J. Higham, “Computing real square roots of a real matrix,” Linear Algebra and Appl., 88/89, pp. 405–430, 1987

[2] Bjorck, A. and S. Hammerling, “A Schur method for the square root of a matrix,” Linear Algebra and Appl., 52/53, pp. 127–140, 1983

[3] Deadman, E., Higham, N. J. and R. Ralha, “Blocked Schur algorithms for computing the matrix square root,” Lecture Notes in Comput. Sci., 7782, Springer-Verlag, pp. 171–182, 2013

参考

| |

R2006a より前に導入

この情報は役に立ちましたか?