1. 개요[편집]
자코비안 행렬(Jacobian matrix)은 여러 입력과 여러 출력을 갖는 다변수 벡터함수의 1차 편도함수를 전부 모아 놓은 행렬로, 그 함수의 국소적인 최선의 선형근사를 나타낸다. 함수 이 성분별로 이라면 자코비안은
로 정의되는 행렬이다. 행 열 성분은 다. 스칼라 함수의 도함수가 다변수로 확장된 것이라고 보면 되며, 실제로 테일러 급수의 1차 근사 에서 곱해지는 행렬이 바로 자코비안이다.1
이 하나의 행렬이 뉴턴-랩슨법의 심장이자, 좌표변환의 부피 척도이자, 비선형 해석에서 수렴을 좌우하는 열쇠다. CAE 하는 사람에게 자코비안은 “매 반복마다 만들고 부수는 그것”이다.
2. 뉴턴-랩슨법의 심장[편집]
비선형 연립방정식 을 풀 때, 스칼라 뉴턴-랩슨법의 미분 자리에 들어가는 것이 정확히 자코비안이다. 갱신식은 다음과 같다.
즉 매 반복마다 (1) 현재 점에서 자코비안을 만들고, (2) 그 자코비안을 계수행렬로 하는 선형계를 풀어 스텝을 구한다. 뉴턴법이 근 근처에서 2차 수렴하는 아름다움은 여기서 나오지만, 그 대가로 매 반복 자코비안을 새로 조립하고 선형계를 풀어야 하는 비용을 치른다. 큰 문제에서는 이 선형계를 LU 분해로 직접 풀거나, 희소행렬이면 크리로프 부분공간법에 전처리기를 얹어 반복적으로 푼다.
자코비안이 특이(singular)에 가까우면, 즉 조건수가 폭발하면 스텝 가 엉뚱하게 커지거나 방향이 무너져 뉴턴 반복이 발산한다. 그래서 실무에서는 자코비안 조건수를 은근히 예의주시한다. 비선형 나비에-스토크스 방정식의 완전 음해법(fully implicit) 솔버, 비선형 구조해석의 접선강성행렬이 모두 이 자코비안이다.
3. 자코비안을 어떻게 만드나[편집]
문제는 자코비안을 실제로 얻는 일이 만만치 않다는 것이다. 세 가지 길이 있다.
- 해석적 미분. 손으로(혹은 심볼릭 도구로) 를 다 구해 코드에 박아 넣는다. 가장 정확하고 빠르지만, 방정식이 복잡하면 유도가 지옥이고 오타 한 번에 수렴이 통째로 날아간다.
- 수치 미분. 수치미분의 유한차분으로 를 근사한다. 구현은 쉽지만 스텝 선택이 까다롭고(부동소수점 연산의 자리수 손실 주의), 개 변수마다 함수를 재평가해야 해서 비싸다.
- 자동미분(AD). 연쇄법칙을 코드 수준에서 기계적으로 적용해 반올림오차 없이 해석적 정확도로 미분을 얻는다. 요즘 최적화·머신러닝에서 사실상 표준이 된 방법.2
자코비안을 매번 새로 만들기 싫을 때 쓰는 꼼수도 있다. 자코비안을 처음 한 번만 만들고 여러 반복에서 재사용하는 것을 수정 뉴턴법(modified Newton), 자코비안 자체를 직접 안 구하고 근사로 갱신해 나가는 것을 준뉴턴법(quasi-Newton, 예: 브로이던·BFGS)이라 한다. 정확도를 조금 포기하는 대신 비싼 자코비안 조립을 아끼는, 전형적인 공학적 타협이다.
4. 좌표변환과 야코비안 행렬식[편집]
자코비안이 정사각행렬()일 때 그 행렬식 를 야코비안(Jacobian, 야코비 행렬식)이라 부른다. 이 스칼라값은 변환이 국소적으로 부피(넓이)를 얼마나 늘리거나 줄이는지를 나타내는 배율이다. 다중적분의 변수변환 공식이 바로 이 값을 쓴다.
극좌표 변환의 그 유명한 에서 튀어나오는 이 바로 야코비안이다. 유한요소법에서는 이 개념이 특히 중요하다. 실제 형상의 뒤틀린 요소를 반듯한 기준요소(reference element)로 사상(mapping)한 뒤 적분하는 등매개변수 요소 기법이 야코비안에 전적으로 의존하기 때문이다.3
여기서 실무 격언 하나. 야코비안 행렬식은 부호를 유지해야 한다. 가 요소 내부 어디선가 0이 되거나 음수로 뒤집히면 그 요소는 “뒤집힌(inverted)” 것이고, 사상이 일대일이 아니게 되어 적분이 무의미해진다. 격자 생성기가 뱉는 “negative Jacobian” 경고에 CAE 엔지니어들이 치를 떠는 이유가 이것. 격자가 다 했다는 말은 여기서도 유효하다.
5. 응용의 지형도[편집]
자코비안은 수치해석 곳곳에 얼굴을 내민다.
- 동역학과 안정성. 비선형 동역학계 의 평형점 안정성은 그 점에서의 자코비안 고유값 실수부 부호로 판별한다. 음이면 안정, 양이면 불안정. 룽게-쿠타법 같은 시간적분기의 강성(stiffness) 판단도 자코비안 고유값 스펙트럼으로 한다.
- 로보틱스. 로봇 팔의 관절 속도를 말단(end-effector) 속도로 잇는 것이 기구학적 자코비안이며, 이것이 특이해지는 자세가 그 유명한 “특이점(singularity)“이다.
- 민감도 해석·최적설계. 설계 변수에 대한 응답의 자코비안이 곧 민감도이며, 이것이 경사기반 최적화 알고리즘의 연료가 된다.
6. 관련 문서[편집]
- 뉴턴-랩슨법 · 테일러 급수
- 수치미분 · 부동소수점 연산
- 조건수 · 고유값 문제
- LU 분해 · 크리로프 부분공간법 · 전처리기
- 등매개변수 요소 · 수치적분
- 희소행렬 · 나비에-스토크스 방정식
- 전산과학 · 검증 및 확인
7. Footnotes[편집]
-
이름은 19세기 수학자 카를 구스타프 야코프 야코비(Carl Gustav Jacob Jacobi)에서 왔다. 그래서 한국어로는 “자코비안”, “야코비안”, “야코비 행렬”이 뒤섞여 쓰이는데, 다 같은 사람 이름이다. 발음 표기 국룰은 아직도 합의가 안 됐다. ↩
-
자동미분은 수치미분(근사·오차 있음)과도, 심볼릭미분(수식 폭발)과도 다른 제3의 길이다. 순방향 모드와 역방향 모드가 있으며, 역방향 모드가 곧 딥러닝의 역전파(backpropagation)다. 출력이 하나뿐인 스칼라 목적함수의 그래디언트를 싸게 뽑는 데 최적화되어 있다. ↩
-
등매개변수 요소에서는 형상함수(shape function)로 좌표를 보간하고, 그 보간의 미분에서 자코비안이 나온다. 가우스 구적점마다 자코비안을 계산해 수치적분에 곱하는데, 요소가 심하게 찌그러지면 이 값이 요동쳐 적분 정확도가 무너진다. “요소 품질”이라는 말의 절반은 사실 자코비안 이야기다. ↩