도구스학업·수학

상태공간 가제어성 판정 계산기

상태행렬 A, 입력행렬 B에서 가제어성 행렬 [B AB A²B ... A^(n-1)B]의 계수(rank)를 구해, 입력을 잘 골라 넣으면 상태를 원하는 값으로 몰고 갈 수 있는지(완전가제어) 판정합니다.

시스템 크기 n

한 줄에 한 행, 값은 공백이나 쉼표로 구분합니다.

한 줄에 한 행(입력이 하나면 한 열).

가제어성 판정

완전가제어

계수(rank) = 2 / n = 2

A^k · B — 영향이 퍼지는 과정

kA^k·B
0[0] [1]
1[1] [0]
가제어성 행렬 C = [B AB ... A^(n-1)B]
1행[0, 1]
2행[1, 0]
계수가 n과 같아 완전가제어로 추정됩니다. 입력을 적절히 골라 넣으면 상태를 원하는 값으로 유한 시간 안에 몰고 갈 수 있는 것으로 추정됩니다.
A^n 이상의 거듭제곱은 케일리-해밀턴 정리에 의해 A^0, ..., A^(n−1)의 선형결합으로 항상 표현되므로, n개까지만 봐도 충분합니다.

계산 방법

  1. 1상태행렬 A(n×n)를 입력합니다.
  2. 2입력행렬 B(n×m)를 입력합니다.
  3. 3A^k·B가 쌓여 가제어성 행렬이 만들어지는 과정을 봅니다.
  4. 4계수(rank)가 n이면 완전가제어입니다.

자주 묻는 질문

입력 u를 적절히 골라 넣으면 시스템의 상태 x를 유한 시간 안에 원하는 값으로 몰고 갈 수 있는지를 뜻합니다. dx/dt=Ax+Bu 형태의 선형 시스템에서, 칼만의 판정법은 가제어성 행렬 C=[B, AB, A²B, ..., A^(n−1)B]의 계수(rank)가 n(상태 개수)과 같으면 완전가제어라고 말합니다.

u가 직접 건드리는 것은 B로 연결된 상태뿐이고, 나머지 상태는 A를 거쳐(=시간이 흐르며 상태끼리 서로 영향을 주고받으며) 간접적으로만 영향을 받기 때문입니다. AB, A²B, ...는 「u의 영향이 한 스텝, 두 스텝 뒤에 어디까지 퍼지는가」를 나타내고, 그 퍼진 방향들을 다 모았을 때 n차원 공간 전체를 채우면 어떤 상태로도 몰고 갈 수 있다는 뜻입니다.

케일리-해밀턴 정리에 따라 A^n 이상의 거듭제곱은 항상 A^0, ..., A^(n−1)의 선형결합으로 표현할 수 있습니다. 그래서 A^n B, A^(n+1) B, ...를 더 넣어도 이미 있는 열들이 만드는 공간을 넓히지 못해, n개까지만 보면 충분합니다.

edu/eigenvalue는 행렬의 고유값·고유벡터 자체를 구합니다. 이 도구는 그와 별개로, A와 B 두 행렬의 관계에서 「입력으로 상태 전체를 다룰 수 있는가」라는 시스템 설계 질문에 답합니다. 안정성 판정(고유값의 실수부 부호)과는 다른 축의 질문입니다.

입력이 아무리 정교해도 절대 도달할 수 없는 상태 방향이 있다는 뜻입니다. 예를 들어 한 상태가 다른 상태·입력과 전혀 얽히지 않고 독립적으로 움직인다면, 그 방향은 입력으로 제어할 수 없습니다.

전송되지 않습니다. 계산은 모두 브라우저 안에서 이뤄지고 입력값은 이 기기에만 남습니다.

알아두면 좋은 점

  • 적분기 연쇄(dx1/dt=x2, dx2/dt=u 같은 교과서 예제)가 완전가제어로 판정되는지, 입력이 안 닿는 상태가 있는 예제(B가 특정 상태와 전혀 얽히지 않는 경우)가 가제어 아님으로 판정되는지 확인했습니다.
  • B가 영행렬이면 계수가 0이 되어 전혀 가제어가 아닌 것으로 나오는지 확인했습니다.
  • 가우스 소거(부분 피벗)로 구한 계수(rank)가 단위행렬·영행렬·종속된 행이 있는 행렬에서 올바르게 나오는지 검산했습니다.
  • 이 계산기는 2×2·3×3 정도의 작은 시스템만 다룹니다. 부동소수점 계산의 반올림 오차 때문에 아주 작은 값은 0으로 간주하는 허용오차(1e-9)를 씁니다.

함께 보면 좋은 도구

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