Main Content

sqrtm

説明

X = sqrtm(A) は、X2 = A かつ X の固有値が A の平方根となるような行列 X を返します。

[X,resnorm] = sqrtm(A) は、行列 X および残差 norm(A-X^2,'fro')/norm(A,'fro') を返します。

行列の平方根の計算

次の行列の平方根を計算します。これらの数値はシンボリック オブジェクトではないため、結果は浮動小数点数となります。

A = [2 -2 0; -1 3 0; -1/3 5/3 2];
X = sqrtm(A)
X =
    1.3333   -0.6667    0.0000
   -0.3333    1.6667   -0.0000
   -0.0572    0.5286    1.4142

次に、この行列をシンボリック オブジェクトに変換し、その平方根を再び計算します。

A = sym([2 -2 0; -1 3 0; -1/3 5/3 2]);
X = sqrtm(A)
X =
[               4/3,          -2/3,       0]
[              -1/3,           5/3,       0]
[ (2*2^(1/2))/3 - 1, 1 - 2^(1/2)/3, 2^(1/2)]

結果が正しいかチェックします。

isAlways(X^2 == A)
ans =
  3×3 logical array
   1   1   1
   1   1   1
   1   1   1

行列の平方根の残差を返す

2 つの出力引数をもつ構文を使用して、行列の平方根および残差を求めます。

A = vpa(sym([0 0; 0 5/3]), 100);
[X,resnorm] = sqrtm(A)
X =
[ 0,                                 0]
[ 0, 1.2909944487358056283930884665941]
 
resnorm =
2.9387358770557187699218413430556e-40

入力引数

すべて折りたたむ

入力。シンボリック行列として指定します。

出力引数

すべて折りたたむ

行列の平方根。X2 = A となるようなシンボリック行列として返されます。

残差。シンボリック式として返されます。残差は、norm(A-X^2,'fro')/norm(A,'fro') として計算されます。

ヒント

  • シンボリック オブジェクトではない行列について sqrtm を呼び出すと、MATLAB® 関数 sqrtm が呼び出されます。

バージョン履歴

R2013a で導入

参考

| | | | | |