Main Content

거듭제곱과 지수

여기에서는 다양한 방식으로 행렬 거듭제곱과 행렬 지수를 계산하는 방법을 보여줍니다.

양의 정수 거듭제곱

A가 정사각 행렬이고 p가 양의 정수이면 A^p은 사실 Ap-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

다음 요소별 제곱근은 A=BB를 충족하는 두 번째 행렬 B를 계산하는 행렬 제곱근과 다릅니다. 함수 sqrtm(A)는 더 정확한 알고리즘으로 A^(1/2)을 계산합니다. sqrt(A)A.^(1/2)처럼 요소별로 계산을 수행합니다. sqrtmm은 이 함수가 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)이면 2A=V 2D V-1입니다.

[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 함수 log1pexpm1x가 매우 작은 값인 경우 정확한 log(1+x)ex-1을 계산합니다. 예를 들어, 1에 기계 정밀도보다 작은 숫자를 추가하려고 하면 결과가 1로 반올림됩니다.

log(1+eps/2)
ans = 0

하지만 log1p는 더 정확한 답을 반환할 수 있습니다.

log1p(eps/2)
ans = 1.1102e-16

ex-1의 경우에도 역시 x가 매우 작으면 0으로 반올림됩니다.

exp(eps/2)-1
ans = 0

이번에도 expm1은 더 정확한 답을 반환할 수 있습니다.

expm1(eps/2)
ans = 1.1102e-16

참고 항목

| | | | | | |

관련 항목