거듭제곱과 지수
여기에서는 다양한 방식으로 행렬 거듭제곱과 행렬 지수를 계산하는 방법을 보여줍니다.
양의 정수 거듭제곱
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
다음 요소별 제곱근은 를 충족하는 두 번째 행렬 를 계산하는 행렬 제곱근과 다릅니다. 함수 sqrtm(A)
는 더 정확한 알고리즘으로 A^(1/2)
을 계산합니다. sqrt(A)
는 A.^(1/2)
처럼 요소별로 계산을 수행합니다. sqrtm
의 m
은 이 함수가 sqrt(A)와는 다르게 동작함을 나타냅니다.
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
의 경우에도 역시 가 매우 작으면 0으로 반올림됩니다.
exp(eps/2)-1
ans = 0
이번에도 expm1
은 더 정확한 답을 반환할 수 있습니다.
expm1(eps/2)
ans = 1.1102e-16
참고 항목
exp
| expm
| expm1
| power
| mpower
| sqrt
| sqrtm
| nthroot