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

참고 항목

| | | | | | |

관련 항목