도구스학업·수학

행렬 지수 e^{At} 계산기

행렬 지수 e^{At}를 스케일링–제곱법과 파데 근사로 계산하고 선형 미분방정식 x′ = Ax의 해를 냅니다. 급수를 그대로 더하면 상쇄로 무너지는 것을 같은 화면에서 보여 주고, det(e^A) = e^(tr A)로 검산합니다.

한 줄에 한 행씩, 칸은 공백이나 쉼표로 나눕니다. 6×6까지 다룹니다.

e^{At}를 계산합니다. t = 0이면 단위행렬이 나와야 합니다.

비워 두거나 길이가 맞지 않으면 e^{At}만 냅니다.

e^{At} (t = 1)

2×2 행렬

‖At‖ = 95 · 반으로 8번 접고 파데 6/6차로 계산했습니다

e^{At}

-0.7357590.551819
-1.4715181.103638

x′ = Ax의 해

x(0)1 0
x(1) = e^{At}·x(0)-0.735759 -1.471518
스칼라 미분방정식 x′ = ax의 해가 x(0)e^{at}인 것과 똑같은 꼴입니다. 연립 선형 미분방정식은 이 한 줄로 풀립니다 — 시간을 잘게 쪼개 적분할 필요가 없고, 아무리 먼 t도 한 번에 갑니다.

검산 — det(e^A) = e^(tr A)

대각합 tr(At)-18
det(e^{At}) — 실제로 계산한 값1.5230e-8
e^(tr At) — 항등식이 말하는 값1.5230e-8
상대 차이7.20e-9
왼쪽은 2² 개 성분을 모두 거쳐 나온 값이고 오른쪽은 대각합 하나로 끝나는 값입니다. 서로 전혀 다른 길로 온 두 값이 맞아떨어지면 계산 전체가 어긋나지 않았다는 뜻이라, 행렬 지수에서 가장 좋은 검산입니다.
다만 대각합이 크게 음수(여기서는 -18)면 이 검사 자체가 무뎌집니다. det(e^A)가 아주 작은데 e^A의 성분은 1 남짓이라, 행렬식을 구할 때 «비슷한 두 값을 빼는» 상쇄가 일어나기 때문입니다. 위의 상대 차이가 커 보여도 e^{At} 자체가 틀린 것은 아닐 수 있습니다.

급수를 그대로 더하면 — 하면 안 되는 쪽

-0.7357590.551819
-1.4715181.103638
더한 항의 수77항
중간 항의 최대 크기1.3955e+7
위 결과와 어긋난 정도6.55e-9
e^A = I + A + A²/2! + ⋯를 정의대로 더한 결과입니다. ‖A‖가 작으면 이것도 멀쩡하지만, 성분의 부호가 엇갈리면 중간 항이 답보다 훨씬 커졌다가 상쇄되면서 유효숫자가 날아갑니다. 「급수가 무너지는 예」를 눌러 보시면 고윳값이 −1과 −17뿐이라 답의 성분은 1 남짓인데 중간 항이 10⁷을 넘는 것을 볼 수 있습니다. 「행렬 지수를 계산하는 19가지 방법」으로 유명한 함정입니다.

어떻게 계산했는가

‖At‖ (행 절댓값 합의 최댓값)95
반으로 접은 횟수 s8회 → ‖At‖/2^s = 0.371094
파데 근사 차수6 / 6
지수법칙 e^A = (e^(A/2^s))^(2^s)를 씁니다. 먼저 A를 반으로 s번 접어 크기를 0.5 아래로 내리고, 작아진 행렬을 파데 근사(급수 대신 유리함수 D⁻¹N으로 근사하는 방법)로 계산한 뒤, 결과를 s번 제곱해 되돌립니다. 상쇄가 일어날 만큼 큰 항이 애초에 생기지 않는다는 것이 이 방법의 값어치입니다.

계산 방법

  1. 1행렬 A를 한 줄에 한 행씩 적습니다. 정사각이어야 합니다.
  2. 2시간 t를 넣으면 e^{At}가 나옵니다. t = 0이면 단위행렬이어야 합니다.
  3. 3초기값 x(0)을 넣으면 x′ = Ax의 해 x(t)가 함께 나옵니다.
  4. 4«검산» 칸에서 det(e^{At})와 e^(tr At)가 맞는지 확인합니다.
  5. 5«급수를 그대로 더하면» 칸과 견줘 보십시오. 예시 중 첫 번째가 그 차이가 뚜렷합니다.

자주 묻는 질문

e^{At} = I + At + (At)²/2! + ⋯로 정의되는 행렬입니다. 스칼라 미분방정식 x′ = ax의 해가 x(0)e^{at}인 것처럼, 연립 선형 미분방정식 x′ = Ax의 해가 x(t) = e^{At}·x(0)이 됩니다. 제어공학의 상태천이행렬이 바로 이것입니다.

성분의 부호가 엇갈리면 중간 항이 답보다 훨씬 커졌다가 상쇄되면서 유효숫자가 날아가기 때문입니다. 스칼라로 보면 e^(−30)을 급수로 더할 때 중간 항이 10¹²를 넘는데 답은 10⁻¹⁴라 반올림오차만 남는 것과 같습니다. 행렬에서는 고윳값이 작아도 성분이 클 수 있어 더 나쁩니다. 「행렬 지수를 계산하는 19가지 방법, 25년 뒤」라는 논문 제목이 이 어려움을 그대로 말해 줍니다.

급수는 A가 작을 때만 잘 듣는다는 점을 이용합니다. 지수법칙 e^A = (e^(A/2^s))^(2^s)를 써서, 먼저 A를 반으로 s번 접어 작게 만들고, 작아진 행렬을 계산한 뒤, 결과를 s번 제곱해 되돌립니다. 상쇄가 일어날 만큼 큰 항이 애초에 생기지 않는 것이 이 방법의 값어치입니다.

같은 항수로 더 정확하기 때문입니다. 테일러 급수가 다항식으로 근사하는 것이라면 파데는 유리함수 D⁻¹N으로 근사하는 것이며, 지수함수처럼 한쪽으로 발산하는 함수에서 특히 잘 맞습니다. 이 계산기는 6/6차 파데를 쓰고, 접은 뒤 크기가 0.5 아래라 배정밀도 한계까지 갑니다.

두 값이 전혀 다른 길로 나오기 때문입니다. 왼쪽은 계산된 행렬의 모든 성분을 거쳐 나오고 오른쪽은 원래 행렬의 대각합 하나로 끝납니다. 서로 무관한 두 계산이 맞아떨어지면 중간에 어긋난 곳이 없다는 뜻이 됩니다. 다만 대각합이 크게 음수면 행렬식 자체가 상쇄를 타므로, 상대 차이가 커 보여도 e^{At}가 틀린 것은 아닐 수 있습니다.

아닙니다. AB = BA일 때, 곧 두 행렬이 교환될 때만 성립합니다. 스칼라에서는 늘 맞던 성질이 행렬에서는 깨지는 대표적인 예이며, 이것이 양자역학의 트로터 분해나 수치 적분의 분할법이 필요한 이유입니다. 같은 A끼리는 언제나 교환되므로 e^{A(s+t)} = e^{As}·e^{At}는 늘 성립합니다.

A를 대각화할 수 있다면 e^A = V·diag(e^λ)·V⁻¹로 구할 수 있고 실제로 그것이 가장 이해하기 쉽습니다. 다만 대각화가 안 되는 행렬(중복 고윳값에 고유벡터가 모자란 경우)이 있고, 대각화가 되더라도 V가 거의 특이하면 V⁻¹에서 오차가 폭발합니다. 스케일링–제곱법은 그런 조건을 따지지 않아도 됩니다.

전송되지 않습니다. 계산은 모두 브라우저 안에서 이루어지며 입력한 행렬은 이 기기에만 남습니다.

알아두면 좋은 점

  • 행렬은 6×6까지 다룹니다. 눈으로 확인하는 것이 목적인 계산기입니다.
  • ‖At‖가 500을 넘으면 결과가 배정밀도를 넘으므로 계산하지 않습니다. t를 줄여 보십시오.
  • «급수를 그대로 더하면» 칸은 견주기 위해 일부러 나쁜 방법으로 계산한 값입니다. 답으로 쓰지 마십시오.
  • 실수 행렬만 다룹니다. 복소수 고윳값이 있어도 e^{At}는 실수 행렬이므로 계산에는 문제가 없습니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 2일 · 결과는 참고용 추정치입니다.