べき乗と指数
このトピックでは、さまざまな方法を使用して行列のべき乗と指数を計算する方法を説明します。
正の整数のべき乗
A
が正方行列で p
が正の整数の場合、A^p
は A
をそれ自身に p-1
回乗算します。以下に例を示します。
A = [1 1 1 1 2 3 1 3 6]; A^2
ans = 3×3
3 6 10
6 14 25
10 25 46
逆数と分数のべき乗
A
が正方行列で特異でない場合、A^(-p)
は inv(A)
を p-1
回乗算します。
A^(-3)
ans = 3×3
145.0000 -207.0000 81.0000
-207.0000 298.0000 -117.0000
81.0000 -117.0000 46.0000
MATLAB® では inv(A)
と A^(-1)
が同じアルゴリズムで計算されるため、結果はまったく同じになります。行列が特異に近くなる場合、inv(A)
と A^(-1)
はどちらも警告を発生させます。
isequal(inv(A),A^(-1))
ans = logical
1
A^(2/3)
のような分数のべき乗も計算可能です。分数のべき乗を使用した結果は、行列の固有値の分布によって異なります。
A^(2/3)
ans = 3×3
0.8901 0.5882 0.3684
0.5882 1.2035 1.3799
0.3684 1.3799 3.1167
要素単位のべき乗
.^
演算子は要素単位のべき乗を計算します。たとえば、行列の各要素を二乗するには、A.^2
を使用できます。
A.^2
ans = 3×3
1 1 1
1 4 9
1 9 36
平方根
関数 sqrt
は、行列の各要素の平方根を計算するのに便利な方法です。これを行う代替方法は A.^(1/2)
です。
sqrt(A)
ans = 3×3
1.0000 1.0000 1.0000
1.0000 1.4142 1.7321
1.0000 1.7321 2.4495
他の根には nthroot
を使用できます。たとえば、A.^(1/3)
を計算します。
nthroot(A,3)
ans = 3×3
1.0000 1.0000 1.0000
1.0000 1.2599 1.4422
1.0000 1.4422 1.8171
これらの要素ごとの根は、 となるように第 2 の行列 が計算される、行列の平方根とは異なります。関数 sqrtm(A)
は、より正確なアルゴリズムによって A^(1/2)
を計算します。sqrtm
の中の m
によって、この関数は sqrt(A)
と区別されますが、後者は A.^(1/2)
と同様に要素ごとに計算を行います。
B = sqrtm(A)
B = 3×3
0.8775 0.4387 0.1937
0.4387 1.0099 0.8874
0.1937 0.8874 2.2749
B^2
ans = 3×3
1.0000 1.0000 1.0000
1.0000 2.0000 3.0000
1.0000 3.0000 6.0000
スカラー基底
行列をべき乗にするだけでなく、スカラーを行列のべき乗にすることもできます。
2^A
ans = 3×3
10.4630 21.6602 38.5862
21.6602 53.2807 94.6010
38.5862 94.6010 173.7734
スカラーを行列のべき乗にする場合、MATLAB は行列の固有値と固有ベクトルを使用して行列のべき乗を計算します。[V,D] = eig(A)
の場合は、 となります。
[V,D] = eig(A); V*2^D*V^(-1)
ans = 3×3
10.4630 21.6602 38.5862
21.6602 53.2807 94.6010
38.5862 94.6010 173.7734
行列の指数
行列指数は、スカラーを行列のべき乗にする特殊なケースです。行列指数の基底はオイラー数 e = exp(1)
です。
e = exp(1); e^A
ans = 3×3
103 ×
0.1008 0.2407 0.4368
0.2407 0.5867 1.0654
0.4368 1.0654 1.9418
行列指数を計算するには、関数 expm
がより便利です。
expm(A)
ans = 3×3
103 ×
0.1008 0.2407 0.4368
0.2407 0.5867 1.0654
0.4368 1.0654 1.9418
行列指数の計算方法はいくつかあります。詳細については、行列の指数を参照してください。
小さい数値の処理
MATLAB 関数 log1p
および expm1
は、 の非常に小さい値について と を正確に計算します。たとえば、マシンの精度より小さい数値を 1 に加算しようとすると、結果は 1 に丸められます。
log(1+eps/2)
ans = 0
しかし、log1p
は、より精度の高い解を返すことができます。
log1p(eps/2)
ans = 1.1102e-16
同様に では、 が非常に小さいとゼロに丸められます。
exp(eps/2)-1
ans = 0
この場合も、expm1
は、より精度の高い解を返すことができます。
expm1(eps/2)
ans = 1.1102e-16
参考
exp
| expm
| expm1
| power
| mpower
| sqrt
| sqrtm
| nthroot