비선형 함수의 정의
확장 칼만 필터에서 중요한 역할을 하는 야코비 행렬은, 비선형 시스템을 선형화할 때 사용된다. 여기서 시스템은 비선형 함수로 표현될 수 있다. 상태 벡터를 \mathbf{x} \in \mathbb{R}^n, 관측 벡터를 \mathbf{z} \in \mathbb{R}^m이라 할 때, 상태와 관측 간의 관계는 다음과 같은 비선형 함수로 표현된다:
여기서 h(\mathbf{x})는 비선형 함수이다.
야코비 행렬의 정의
야코비 행렬은 함수 h(\mathbf{x})의 미분을 표현하며, 이는 함수가 작은 변화에 대해 어떻게 반응하는지 나타낸다. 즉, h(\mathbf{x})를 선형 근사할 때 필요한 기울기 정보가 야코비 행렬로 나타난다. 야코비 행렬 \mathbf{J}_h는 다음과 같이 정의된다:
이 행렬은 각 관측 함수 h_i(\mathbf{x})의 상태 변수 x_j에 대한 편미분을 포함한다.
야코비 행렬의 계산 과정
실제로 야코비 행렬을 계산할 때는 각 성분을 차례대로 편미분해야 한다. 예를 들어, 상태 벡터 \mathbf{x} = \begin{bmatrix} x_1 & x_2 & \cdots & x_n \end{bmatrix}^\top와 관측 벡터 \mathbf{z} = \begin{bmatrix} z_1 & z_2 & \cdots & z_m \end{bmatrix}^\top에서, 각 성분 z_i는 상태 벡터의 각 성분에 대해 편미분될 수 있다. 이때 계산된 편미분 값이 야코비 행렬의 각 원소를 구성한다.
예시
간단한 예로, 2차원 상태 공간에서 비선형 관측 함수가 다음과 같이 주어진다고 가정하자:
이 경우, 야코비 행렬 \mathbf{J}_h는 다음과 같다:
따라서 각 요소는 다음과 같이 계산된다: - \frac{\partial h_1}{\partial x_1} = 2x_1, \frac{\partial h_1}{\partial x_2} = 2x_2 - \frac{\partial h_2}{\partial x_1} = \cos(x_1), \frac{\partial h_2}{\partial x_2} = 0
이렇게 얻은 야코비 행렬은 확장 칼만 필터의 업데이트 단계에서 사용된다.
고차원 시스템에서의 야코비 행렬
고차원 시스템에서도 동일한 원리를 적용하여 야코비 행렬을 계산할 수 있다. 각 성분을 편미분한 후, 행렬 형태로 정리하면 된다. 고차원 시스템에서는 성분이 많아 계산이 복잡해질 수 있으므로, 계산 효율성을 고려해야 한다. 수치적 미분 방법을 사용할 수 있으며, 이는 매우 복잡한 비선형 함수의 경우 유용할 수 있다.
수치적 미분을 통한 야코비 행렬 계산
때로는 비선형 함수가 복잡하거나 그 편미분을 구하기 어려울 수 있다. 이 경우, 수치적 미분(numerical differentiation)을 사용하여 야코비 행렬을 근사적으로 계산할 수 있다. 수치적 미분은 함수의 미세한 변화에 따른 함수 값의 변화를 계산하여 미분 값을 추정하는 방법이다.
수치적 미분을 수행하려면, 상태 벡터 \mathbf{x}의 각 성분을 작은 양 \epsilon만큼 변화시킨 후 함수 값의 변화를 관찰하여 편미분을 근사한다. 이는 다음과 같은 방식으로 계산된다:
여기서 \mathbf{e}_i는 x_i 성분을 제외한 나머지 성분이 0인 단위 벡터이다. 이 방식은 실제 시스템에서 계산이 어려운 경우에도 쉽게 적용할 수 있으며, 편미분을 구할 필요가 없는 장점이 있다. 하지만, \epsilon 값이 너무 작으면 수치적 불안정성이 발생할 수 있으므로 적절한 값을 선택하는 것이 중요하다.
수치적 미분의 장점과 단점
수치적 미분을 사용하는 것에는 장단점이 있다.
장점:
- 편미분을 직접 구하지 않고도 야코비 행렬을 계산할 수 있다.
- 복잡한 비선형 함수에도 적용할 수 있다.
- 빠른 프로토타이핑과 구현에 유용하다.
단점:
- 수치적 불안정성으로 인해 계산의 정확도가 떨어질 수 있다.
- \epsilon의 선택에 따라 결과가 크게 달라질 수 있다.
- 계산 속도가 상대적으로 느릴 수 있다.
수치적 미분을 통한 야코비 행렬 계산의 예
수치적 미분의 예로, 다음과 같은 비선형 함수가 주어졌다고 가정하자:
여기서 상태 벡터 \mathbf{x} = \begin{bmatrix} x_1 & x_2 \end{bmatrix}^\top에 대해 수치적 미분으로 야코비 행렬을 계산하면, 각 성분에 대해 다음과 같은 방법으로 근사할 수 있다:
- x_1에 대해 \epsilon만큼 변화시켜 계산:
- x_2에 대해 \epsilon만큼 변화시켜 계산:
이 과정을 각 성분에 대해 수행하면, 최종적으로 야코비 행렬을 근사할 수 있다.
고차원 상태 벡터의 수치적 미분
고차원 상태 벡터에 대해서도 수치적 미분을 적용할 수 있다. 상태 벡터의 차원이 증가할수록 각 성분에 대해 동일한 방식으로 미세한 변화를 주고 함수 값을 비교하여 편미분을 근사할 수 있다. 고차원 벡터에서는 계산 시간이 증가할 수 있지만, 여전히 편미분을 직접 계산하는 것보다 유용한 방법일 수 있다.