실습 · 연습문제 2개
SO(3)의 지수사상: Rodrigues 공식 so3-exp
회전군 의 항등원 에서의 접공간은 반대칭 행렬의 공간이고, 반대칭 행렬은 벡터 하나로 정해진다.
지수사상 는 축 둘레로 각 [rad]만큼 도는 회전이고, Rodrigues 공식으로 닫힌 형태로 계산된다.
함수 so3_exp(omega)를 완성해 shape (3, 3)인 회전 행렬을 반환한다.
테스트는 다음을 확인한다.
scipy.linalg.expm(hat(omega))와 같다.- , 이다.
- 회전축 는 고정된다: .
- 이면 를 반환하고, 처럼 아주 작은 각에서도 NaN이 나오지 않는다.
힌트: 이면 , 이다. 작은 각에서는 Taylor 전개의 첫 몇 항을 쓰거나, 아주 작은 에서 0으로 나누지 않도록 분기한다. 본문의 셀은 를 정규화하므로 에서 실패한다.
구면의 지수사상과 측지선 sphere-exp-map
단위구면 위의 점 에서 접공간은 에 수직인 벡터들의 집합 이다. 지수사상 는 에서 방향으로 출발해 대원(great circle)을 따라 길이 만큼 간 점이다.
두 함수를 완성한다.
tangent_project(p, x): 임의의 벡터 를 의 접공간으로 직교사영한다. .sphere_exp(p, v): 위 식을 계산한다. 테스트는 이 함수를 채점 진입점으로 쓴다.
테스트는 다음을 확인한다.
- 결과가 단위구면 위에 있다.
- 이면 와 결과 사이의 측지 거리 가 와 같다.
- 이면 를 그대로 반환한다(NaN 없이).
- 작은 에서는 다. 지수사상의 1차 근사가 접벡터 자체다.
- 뿐 아니라 임의의 차원 에서 동작한다.
힌트: 직선 보간 를 정규화하는 것은 같은 대원 위의 점을 주지만, 같은 속도로 움직이지 않는다. 테스트는 거리까지 확인한다.