117강은 한 개의 방정식을 다뤘습니다. 이제 여러 개로 넓힙니다.
여기서 S4가 통째로 도구가 됩니다. 해가 이렇게 생겼기 때문입니다.
행렬의 지수함수를 어떻게 다룰지가 문제인데, 86강의 대각화가 답을 줍니다. 이면
각 고유방향이 자기 속도로 움직입니다. 109강 문제 1에서 이산 점화식을 성분별로 분해한 것과 정확히 같은 구조입니다.
| 강의 | 대상 | 성분별 인자 |
|---|---|---|
| 109 | (I-\eta H)^ | (1-\eta\lambda_{i})^ |
| 118 | e^ |
새로 나타나는 것이 하나 있습니다. 실수 행렬이어도 고유값이 복소수일 수 있고, 그러면 진동이 생깁니다. 117강 심화 1에서 1차원 자율계는 진동할 수 없다고 했는데, 2차원부터 가능해집니다.
문제. 를 , 에서 봅니다.
(1) 성분별로 풀어 해석해를 구하세요.
(2) 를 계산해 비교하세요.
(3) 두 성분의 감쇠 속도를 비교하세요.
생각의 실마리. 가 대각이면 두 방정식이 서로 간섭하지 않습니다. 각각 117강의 문제입니다.
풀이. (1) 성분별로
이므로 , 입니다.
(2) 검산에서
| 해석해 | e^{At}\mathbf{x}_ | |
|---|---|---|
(3) 둘째 성분이 훨씬 빨리 죽습니다. 에서 첫 성분은 인데 둘째는 입니다.
이 문제에서 배우는 것: 행렬 지수함수.
행렬 지수함수.
54강의 지수 급수를 행렬로 옮긴 것이며, 모든 행렬에 대해 수렴합니다. 90강의 준곱셈성으로
이고 오른쪽이 수렴하는 급수라 절대수렴합니다.
해의 공식. , 의 해는 이며 유일합니다.
확인이 급수 미분으로 됩니다.
대각행렬이면 계산이 쉽습니다.
대각이 아니면 대각화합니다. 문제 2에서 다룹니다.
주의할 점이 하나 있습니다. 일반적으로
이며 일 때만 성립합니다. 66강에서 행렬 곱이 교환법칙을 어긴다고 한 것이 여기서 나타납니다.
바로 확인 1.
확인 1-1. 선형계의 해를 쓰세요.
답. 입니다.
확인 1-2. 대각행렬의 지수함수를 쓰세요.
답. 대각 성분을 각각 지수화한 것입니다.
확인 1-3. 는 언제 성립합니까?
답. 일 때입니다.
문제. 과 을 봅니다.
(1) 고유값과 고유벡터를 구하세요.
(2) 을 고유기저로 표현하세요.
(3) 각 성분의 기여를 더해 해와 비교하세요.
생각의 실마리. 86강에서 대각화하면 좌표가 분리된다고 했습니다. 고유기저로 옮기면 문제 1이 됩니다.
풀이. (1) 검산에서 고유값이 과 이고 고유벡터가
(2) 를 풀면 검산에서
(3) 검산에서
| c_{1}e^{\lambda_{1}t}\mathbf{v}_ | c_{2}e^{\lambda_{2}t}\mathbf{v}_ | 합 | 직접 e^{Bt}\mathbf{x}_ | |
|---|---|---|---|---|
두 성분의 합이 정확히 해입니다.
이 문제에서 배우는 것: 고유기저 분해.
분해 정리. 가 대각화 가능하면
입니다.
절차가 세 단계입니다.
| 단계 | 하는 일 |
|---|---|
| 고유값과 고유벡터를 구합니다 | |
| 초기조건을 고유기저 좌표로 바꿉니다 | |
| 각 좌표에 를 곱하고 되돌립니다 |
75강의 기저 변환이 그대로 쓰입니다. 고유기저에서 문제가 대각이 되고, 풀고 나서 원래 좌표로 되돌립니다.
이 예의 방정식이 어디서 왔는지도 볼 만합니다. 을 , 로 두면 이 가 나옵니다.
특성방정식이 고유값 방정식입니다. 의 근이 이며 검산과 맞습니다. 32강의 선형 점화식과 111강 심화 1의 모멘텀 해석이 같은 구조입니다.
대각화가 안 되면 조르당 형이 필요하고 해에 같은 항이 나타납니다. 85강에서 본 결손 행렬의 경우이며, 이 과목에서는 다루지 않습니다.
바로 확인 2.
확인 2-1. 대각화 가능할 때 해의 형태를 쓰세요.
답. 입니다.
확인 2-2. 을 1계 계로 바꾸는 방법을 쓰세요.
답. , 로 두면 됩니다.
확인 2-3. 특성방정식과 고유값의 관계를 쓰세요.
답. 같은 것이며 특성방정식의 근이 고유값입니다.
문제. 다섯 행렬의 고유값을 구하고 안정성을 판정하세요.
(1) ,
(2) ,
(3) \begin{pmatrix}0&1\\-2&-3\end
생각의 실마리. 문제 2의 분해에서 각 성분이 입니다. **가 복소수여도 크기는 **입니다.
풀이. 검산에서
| 행렬 | 고유값 | 실수부 최대 | 판정 |
|---|---|---|---|
| 안정 | |||
| 불안정 | |||
| 경계(중립) | |||
| 안정 | |||
| 안정 |
이 문제에서 배우는 것: 실수부가 안정성을 정합니다.
안정성 판정. 의 원점이
조건 판정 모든 점근안정 어떤 불안정 최대가 경계, 추가 분석 필요
****이기 때문입니다. 허수부는 진동을 만들 뿐 크기에 영향을 주지 않습니다.
117강 문제 3의 1차원 조건 의 일반화입니다.
셋째 줄의 경계 경우를 봅니다. 고유값이 순허수이면 크기가 유지되며, 해가 원 위를 돕니다. 감쇠도 발산도 하지 않습니다.
| 물리 | 예 |
|---|---|
| 마찰 없는 진자 | 영원히 진동 |
| 무손실 LC 회로 | 에너지 보존 |
| 해밀턴 계 | 위상공간 부피 보존 |
비선형 계에서는 이 경우가 위험합니다. 선형화가 판정을 주지 못하고 고차 항이 결정하며, 101강의 준정치 상황과 같습니다.
에서 대각합과 행렬식으로 판정할 수 있습니다. 84강에서
이므로
| 조건 | 판정 |
|---|---|
| 이고 | 안정 |
| 안장, 불안정 | |
| 이고 | 불안정 |
101강의 이변수 판정법과 형태가 같습니다. 그때도 와 대각합으로 갈랐습니다.
바로 확인 3.
확인 3-1. 안정성 판정 조건을 쓰세요.
답. 모든 고유값의 실수부가 음수면 점근안정입니다.
확인 3-2. 허수부는 무엇을 정합니까?
답. 진동수를 정하며 크기에는 영향이 없습니다.
확인 3-3. 에서 대각합과 행렬식으로 판정하세요.
답. 이고 이면 안정입니다.
문제. 와 을 봅니다.
(1) 고유값의 실수부와 허수부를 구하세요.
(2) 여러 에서 와 그 크기를 구하세요.
(3) 크기의 거동을 설명하세요.
생각의 실마리. 실수부가 음수이니 줄어들 텐데, 허수부가 있으면 어떻게 줄어드는지가 문제입니다.
풀이. (1) 검산에서 고유값이 이므로 실수부가 이고 허수부가 입니다.
(2) 검산에서
| e^ | |||
|---|---|---|---|
크기가 정확히 입니다.
(3) 크기는 지수적으로 줄고 방향은 계속 돕니다. 나선을 그리며 원점으로 감깁니다.
이 문제에서 배우는 것: 복소 고유값과 진동.
실수부가 봉투이고 허수부가 진동수입니다.
| 부분 | 역할 |
|---|---|
| e^ | 크기의 증감 |
| 회전 |
실수 행렬인데 고유값이 복소수인 것이 처음에는 이상해 보입니다. 그러나 해는 실수이며, 켤레쌍이 짝을 이뤄 허수부가 상쇄됩니다.
상평면의 분류가 고유값에 따라 정해집니다.
| 고유값 | 이름 | 그림 |
|---|---|---|
| 실수, 둘 다 음수 | 안정 마디 | 곧장 모입니다 |
| 실수, 둘 다 양수 | 불안정 마디 | 곧장 퍼집니다 |
| 실수, 부호 다름 | 안장 | 한 방향 모이고 한 방향 퍼집니다 |
| 복소, 실수부 음수 | 안정 나선 | 감기며 모입니다 |
| 복소, 실수부 양수 | 불안정 나선 | 풀리며 퍼집니다 |
| 순허수 | 중심 | 닫힌 궤도 |
셋째 줄이 101강의 안장과 같은 이름인 것이 우연이 아닙니다. 문제 5에서 확인합니다.
111강 심화 1과 정확히 대응합니다. 그때 모멘텀의 특성방정식이 복소근을 가지면 수렴률이 로 균일해진다고 했는데, 여기서는 그것이 감쇠 나선입니다.
감쇠 진동의 분류도 정리합니다. 에서
| 이름 | 고유값 | |
|---|---|---|
| 과소감쇠 | 복소 | |
| 임계감쇠 | 중근 | |
| 과대감쇠 | 실수 |
임계감쇠가 가장 빠르게 정지하며, 111강 심화 4에서 최적 모멘텀이 이 조건이라 한 것과 같습니다.
바로 확인 4.
확인 4-1. 복소 고유값의 실수부와 허수부가 각각 무엇을 정합니까?
답. 실수부가 크기의 증감을, 허수부가 진동수를 정합니다.
확인 4-2. 실수부가 음수인 복소 고유값의 상평면 이름을 쓰세요.
답. 안정 나선입니다.
확인 4-3. 순허수이면 어떤 궤도입니까?
답. 닫힌 궤도이며 중심이라 부릅니다.
문제. 의 경사흐름 를 봅니다.
(1) 계수행렬과 그 고유값을 구하세요.
(2) 해의 거동을 보세요.
(3) 안장인 경우와 비교하세요.
생각의 실마리. 이므로 입니다. **계수행렬이 **입니다.
풀이. (1) 검산에서 의 고유값이 과 이라 모두 음수이고 원점이 안정입니다.
(2) 검산에서
성분이 훨씬 빨리 죽습니다. 방향이라 로 줄어듭니다.
(3) 이면 헤세가 이고 의 고유값이 과 이라 불안정입니다. 검산에서
작은 교란이 자라 지배합니다.
이 문제에서 배우는 것: 임계점 분류가 안정성 분류입니다.
경사흐름의 선형화. 의 임계점에서 야코비가 입니다.
98강에서 라 했고, 부호가 뒤집힙니다.
101강의 분류가 그대로 옮겨집니다.
| 임계점 | 의 고유값 | 의 고유값 | 안정성 |
|---|---|---|---|
| 극소 | 모두 양수 | 모두 음수 | 안정 |
| 극대 | 모두 음수 | 모두 양수 | 불안정 |
| 안장 | 섞임 | 섞임 | 불안정 |
101강 문제 5의 관찰이 새 뜻을 얻습니다. 고차원에서 임계점이 대개 안장이라 했는데, 경사흐름의 언어로는 대부분의 평형점이 불안정하다는 뜻입니다.
그래서 흐름이 안장에 머물지 않습니다. 불안정 방향으로 밀려나며, 잡음이 있으면 더 빨리 벗어납니다. 235강의 확률적 경사하강법이 그 효과를 씁니다.
리아푸노프 함수의 관점도 있습니다. 117강 심화 2에서 봤듯
자신이 리아푸노프 함수입니다. 흐름을 따라 단조 감소하므로 발산할 수 없고, 아래로 유계이면 임계점으로 수렴합니다.
조건수가 여기서도 나타납니다. 의 고유값이 과 이라 시간 척도가 배 다릅니다.
| 방향 | 시간 상수 |
|---|---|
뻣뻣한 방정식이라 부르며, 120강에서 이것이 수치해법에 어떤 어려움을 주는지 봅니다. 91강의 조건수 문제가 미분방정식에서 나타난 형태입니다.
바로 확인 5.
확인 5-1. 경사흐름의 계수행렬을 쓰세요.
답. 입니다.
확인 5-2. 극소와 안장의 안정성을 각각 쓰세요.
답. 극소는 안정하고 안장은 불안정합니다.
확인 5-3. 경사흐름의 리아푸노프 함수를 쓰세요.
답. 자신이며 입니다.
| 개념 | 내용 |
|---|---|
| 해 | \mathbf{x}(t)=e^{At}\mathbf{x}_ |
| 분해 | \sum c_{i}e^{\lambda_{i}t}\mathbf{v}_ |
| 안정 | 모든 |
| 복소 고유값 | 봉투에 진동 |
| 경사흐름 | 계수행렬이 |
| 상평면 | 고유값 |
|---|---|
| 안정 마디 | 실수, 둘 다 음수 |
| 불안정 마디 | 실수, 둘 다 양수 |
| 안장 | 실수, 부호 다름 |
| 안정 나선 | 복소, 실수부 음수 |
| 중심 | 순허수 |
| 판정 | 조건 |
|---|---|
| 안정 | , |
| 안장 | |
| 나선 | 판별식 |
| 자주 하는 실수 | 바로잡기 |
|---|---|
| 라 봅니다 | 교환할 때만입니다 |
| 허수부로 안정성을 봅니다 | 실수부입니다 |
| 경계 경우를 안정이라 합니다 | 추가 분석이 필요합니다 |
| 경사흐름의 야코비를 라 씁니다 | 입니다 |
문제 6. 의 해를 쓰세요.
답. 입니다.
문제 7. 의 지수함수를 쓰세요.
답. 입니다.
문제 8. 의 안정성을 판정하세요.
답. 고유값에 양수가 있어 불안정합니다.
문제 9. 을 1계 계로 바꾸세요.
답. , 로 두면 입니다.
문제 10. 문제 9의 고유값을 구하세요.
답. 에서 과 입니다.
문제 11. 의 고유값과 거동을 쓰세요.
답. 이며 주기 인 닫힌 궤도입니다.
문제 12. 에서 안정 조건을 대각합과 행렬식으로 쓰세요.
답. 이고 입니다.
문제 13. 이면 무엇입니까?
답. 고유값의 부호가 달라 안장이며 불안정합니다.
문제 14. 복소 고유값 의 거동을 쓰세요.
답. 로 줄면서 진동수 으로 도는 안정 나선입니다.
문제 15. 경사흐름의 계수행렬을 쓰세요.
답. 입니다.
문제 16. 극대점의 경사흐름 안정성을 쓰세요.
답. 의 고유값이 모두 양수라 불안정합니다.
문제 17. 경사흐름의 리아푸노프 함수와 그 도함수를 쓰세요.
답. 이며 입니다.
문제 18. 시간 척도가 크게 다른 계를 무엇이라 합니까?
답. 뻣뻣한 계이며 수치해법에 어려움을 줍니다.
심화 1. 행렬 지수함수의 성질을 정리하세요.
급수 정의에서 여러 성질이 나옵니다.
| 성질 | 조건 |
|---|---|
| 언제나 | |
| 언제나 | |
| (e^{A})^{-1}=e^ | 언제나 |
| e^{A+B}=e^{A}e^ | 일 때 |
| e^{PAP^{-1}}=Pe^{A}P^ | 언제나 |
| 언제나 |
셋째 줄이 중요합니다. 는 언제나 가역이며, 이는 해가 시간을 거슬러 올라갈 수 있다는 뜻입니다.
궤적이 교차하지 않는 근거이며, 117강 심화 1에서 언급한 성질의 일반화입니다.
다섯째 줄이 대각화의 근거입니다. 이면
이고 가 대각이라 계산됩니다.
여섯째 줄은 야코비 공식이며 79강과 이어집니다. 이므로
| 위상공간 부피 | |
|---|---|
| 음수 | 줄어듭니다 |
| 보존됩니다 | |
| 양수 | 늘어납니다 |
둘째 줄이 해밀턴 계입니다. 부피가 보존되며 리우빌 정리라 부릅니다.
**경사흐름에서는 **입니다. 99강 심화 3의 라플라시안이 여기서 부피 수축률로 나타납니다.
계산 방법도 여럿 있습니다.
| 방법 | 조건 |
|---|---|
| 대각화 | 대각화 가능할 때 |
| 조르당 형 | 언제나, 복잡함 |
| 급수 절단 | 작은 |
| 스케일링과 제곱 | 실무 표준 |
넷째 줄이 표준 알고리즘입니다. 를 이용해 지수를 작게 만든 뒤 제곱을 반복하며, 92강의 수치 안정성 고려가 들어갑니다.
심화 2. 비선형 계의 선형화 정리를 소개하세요.
실제 계는 대개 비선형입니다.
평형점 에서 이고, 95강의 선형근사를 쓰면
98강의 야코비가 계수행렬입니다.
하르트만-그로브만 정리. 평형점에서 야코비의 고유값이 모두 실수부가 이 아니면(쌍곡적), 그 근방에서 비선형 계의 궤적이 선형화 계의 궤적과 위상적으로 같습니다.
"쌍곡적"이 조건이며, 실수부가 인 고유값이 있으면 정리가 적용되지 않습니다.
| 야코비 | 비선형 계의 국소 거동 |
|---|---|
| 모든 | 점근안정 |
| 어떤 | 불안정 |
| 실수부 존재 | 판정 불가 |
셋째 줄에서 고차 항이 결정합니다. 117강 심화 1의 반안정 평형점과 101강의 준정치 상황이 같은 자리입니다.
예를 봅니다. , 인 반데르폴 방정식에서 원점의 야코비가
이고 고유값이 입니다.
| 원점 | 전역 거동 | |
|---|---|---|
| 안정 | 원점으로 | |
| 불안정 | 극한주기로 |
에서 극한주기가 나타납니다. 원점에서 밀려나지만 무한히 커지지도 않고, 닫힌 궤도로 수렴합니다.
선형계의 닫힌 궤도는 중심 주변에 연속체로 있는데, 극한주기는 고립된 하나이며 주변 궤도가 그것으로 모입니다. 비선형성이 만드는 구조입니다.
심화 3. 리아푸노프 방법을 소개하세요.
선형화가 판정을 주지 못할 때 쓰는 방법입니다.
리아푸노프 정리. 평형점 의 근방에서 이고 ()이며 인 함수 가 있으면 가 안정합니다. 이면 점근안정입니다.
**"에너지가 줄어들면 안정하다"**는 물리적 직관의 수학적 형태입니다.
97강의 연쇄법칙 한 줄로 계산됩니다.
**경사흐름에서 **를 잡으면
자동으로 만족합니다. 문제 5에서 본 그대로이며, 퍼텐셜이 있는 계의 큰 이점입니다.
선형계에서는 이차형식을 씁니다.
이려면 이어야 하고, 이를 리아푸노프 방정식이라 합니다.
정리. 가 안정이면 임의의 에 대해 이 방정식의 해 이 유일하게 존재합니다.
87강의 양정치성 판정이 여기서 쓰이며, 제어이론의 기본 도구입니다.
리아푸노프 함수의 값어치는 선형화 없이도 판정한다는 점입니다.
| 상황 | 선형화 | 리아푸노프 |
|---|---|---|
| 쌍곡적 평형점 | 가능 | 가능 |
| 경계 경우 | 불가 | 가능할 수 있음 |
| 전역 안정성 | 불가 | 가능 |
| 함수 찾기 | 자동 | 어려움 |
넷째 줄이 대가입니다. 적절한 를 찾는 일반적 방법이 없고, 문제마다 궁리해야 합니다. 다만 퍼텐셜이 있으면 그것을 쓰면 됩니다.
280강의 강화학습에서도 이 발상이 나타납니다. 벨만 잔차가 리아푸노프 함수 역할을 하며 수렴 증명에 쓰입니다.
심화 4. 비제차 계와 변수변화법을 다루세요.
117강 문제 2의 적분인자를 행렬로 옮깁니다. 양변에 를 곱하면
적분하면
변수변화 공식 또는 뒤아멜 공식이라 합니다.
해의 구조가 두 부분입니다.
| 항 | 뜻 |
|---|---|
| e^{At}\mathbf{x}_ | 초기조건의 응답 |
| 적분항 | 입력의 응답 |
둘째 항이 합성곱입니다. 59강의 푸리에와 이어지며, 신호처리에서 를 충격 응답이라 부릅니다.
가 안정이면 정상상태가 존재합니다. 가 상수이면
이며 117강 문제 2의 이 이 형태입니다.
주기 입력이면 주파수 응답이 나옵니다. 이면 정상해가
이 전달함수이며, 가 고유값에 가까우면 크기가 폭발합니다.
91강의 조건수와 같은 이야기입니다. 행렬이 특이에 가까우면 역행렬이 크고, 작은 입력이 큰 출력을 만듭니다.
심화 5. 이 관점이 기계학습에서 나타나는 자리를 정리하세요.
첫째, 최적화의 연속 극한입니다. 119강에서 정면으로 다룹니다.
둘째, 순환신경망입니다. 은닉 상태의 갱신이
이며, 선형화하면 입니다. 의 고유값 크기가 기억의 수명을 정합니다.
| 거동 | |
|---|---|
| 기울기 소실 | |
| 기억 유지 | |
| 기울기 폭발 |
97강 문제 3에서 본 기울기 소실이 이 언어로 설명됩니다. 그리고 249강의 대책들이 을 유지하려는 시도입니다.
셋째, 신경 상미분방정식입니다. 은닉 상태를 연속 시간의 흐름으로 봅니다.
잔차 연결의 연속 극한이며, 250강에서 가 오일러 한 걸음임을 봅니다.
넷째, 확산모형입니다. 266강의 전방 과정이 확률미분방정식이고
결정론적 부분이 이 강의의 선형계입니다. 270강의 확률흐름 ODE가 잡음 항을 없앤 형태이며, 120강의 수치해법으로 풉니다.
다섯째, 상태공간모형입니다. 309강에서 다룰 구조가
정확히 심화 4의 비제차 선형계입니다. 를 특별한 형태로 잡아 긴 문맥을 효율적으로 다루며, 의 구조가 성능을 정합니다.
심화 6. 119강으로 어떻게 이어지는지 정리하세요.
이 강의에서 선형계와 안정성을 세웠습니다. 119강이 그것을 최적화에 적용합니다.
문제 5에서 이미 봤습니다. 119강이 더 나아가는 것을 예고합니다.
첫째, 수렴 속도를 연속시간에서 봅니다. 이차함수에서
110강의 이산 결과와 대응합니다. 가 시간 간격이므로 걸음이 이고
이산과 연속이 맞아떨어집니다.
둘째, 모멘텀이 이차 방정식임을 정식화합니다.
이 강의 문제 4의 감쇠 진동이며, 최적 가 임계감쇠 조건에서 나옵니다.
셋째, 다른 흐름들을 봅니다.
| 흐름 | 방정식 |
|---|---|
| 경사흐름 | |
| 뉴턴 흐름 | |
| 자연경사 흐름 | |
| 미러 흐름 | 쌍대공간에서의 흐름 |
96강 심화 3의 노름 선택이 흐름의 선택으로 나타납니다.
넷째, 리아푸노프 관점으로 수렴을 증명합니다. 심화 3에서 본 대로 자신이 리아푸노프 함수이며, 이 관점이 가속법의 수렴 증명을 단순하게 만듭니다.
120강이 이산화를 다룹니다. 그리고 관문 3이 62강부터 120강까지를 묻습니다.
import numpy as np
def expm(A, t, N=200000):
"""급수 대신 세밀한 오일러로 e^{At} 근사 대신, 대각화 가능하면 정확히"""
w, V = np.linalg.eig(A)
return (V @ np.diag(np.exp(w*t)) @ np.linalg.inv(V)).real
# --- 문제 1: 해가 e^{At} x0 이다 ----------------------------------------
A = np.array([[-1.0, 0.0], [0.0, -3.0]])
x0 = np.array([2.0, 1.0])
print(" dx/dt = A x, A = diag(-1, -3), x0 = (2, 1)")
print(" t x(t) 해석 e^{At} x0 (수치)")
for T in [0.0, 0.5, 1.0, 2.0]:
ex = np.array([2*np.exp(-T), 1*np.exp(-3*T)])
print(" %7.1f %-22s %s" % (T, np.array2string(np.round(ex,6)),
np.array2string(np.round(expm(A,T) @ x0, 6))))
print(" 성분마다 e^{lam_i t} 로 줄어듭니다")
# dx/dt = A x, A = diag(-1, -3), x0 = (2, 1)
# t x(t) 해석 e^{At} x0 (수치)
# 0.0 [2. 1.] [2. 1.]
# 0.5 [1.213061 0.22313 ] [1.213061 0.22313 ]
# 1.0 [0.735759 0.049787] [0.735759 0.049787]
# 2.0 [0.270671 0.002479] [0.270671 0.002479]
# 성분마다 e^{lam_i t} 로 줄어듭니다
# --- 문제 2: 대각화로 분해한다 ------------------------------------------
B = np.array([[0.0, 1.0], [-2.0, -3.0]])
w, V = np.linalg.eig(B)
print(" B = [[0,1],[-2,-3]] 의 고유값 %s" % np.round(w.real, 6))
print(" 고유벡터(열) =\n", np.round(V.real, 6))
z0 = np.array([1.0, 0.0])
c = np.linalg.solve(V.real, z0)
print(" x0 = (1,0) 을 고유기저로 쓰면 c = %s" % np.round(c, 6))
print(" t 성분 c1 e^{l1 t} 성분 c2 e^{l2 t} 합 직접 e^{Bt}x0")
for T in [0.0, 0.5, 1.0, 2.0]:
t1 = c[0]*np.exp(w.real[0]*T)*V.real[:,0]
t2 = c[1]*np.exp(w.real[1]*T)*V.real[:,1]
print(" %6.1f %-16s %-16s %-16s %s"
% (T, np.array2string(np.round(t1,4)), np.array2string(np.round(t2,4)),
np.array2string(np.round(t1+t2,6)), np.array2string(np.round(expm(B,T) @ z0, 6))))
# B = [[0,1],[-2,-3]] 의 고유값 [-1. -2.]
# 고유벡터(열) =
# [[ 0.707107 -0.447214]
# [-0.707107 0.894427]]
# x0 = (1,0) 을 고유기저로 쓰면 c = [2.828427 2.236068]
# t 성분 c1 e^{l1 t} 성분 c2 e^{l2 t} 합 직접 e^{Bt}x0
# 0.0 [ 2. -2.] [-1. 2.] [1. 0.] [1. 0.]
# 0.5 [ 1.2131 -1.2131] [-0.3679 0.7358] [ 0.845182 -0.477302] [ 0.845182 -0.477302]
# 1.0 [ 0.7358 -0.7358] [-0.1353 0.2707] [ 0.600424 -0.465088] [ 0.600424 -0.465088]
# 2.0 [ 0.2707 -0.2707] [-0.0183 0.0366] [ 0.252355 -0.234039] [ 0.252355 -0.234039]
# 두 고유방향의 기여를 더하면 정확히 해가 됩니다.
# --- 문제 3: 안정성은 고유값의 실수부 -----------------------------------
print(" 행렬 고유값 실수부 최대 판정")
cases = [("diag(-1,-3) ", np.array([[-1.,0.],[0.,-3.]])),
("diag(-1, 2) ", np.array([[-1.,0.],[0.,2.]])),
("[[0,1],[-1,0]]", np.array([[0.,1.],[-1.,0.]])),
("[[-.2,1],[-1,-.2]]", np.array([[-0.2,1.],[-1.,-0.2]])),
("[[0,1],[-2,-3]]", np.array([[0.,1.],[-2.,-3.]]))]
for name, M in cases:
ww = np.linalg.eigvals(M)
r = ww.real.max()
kind = "안정" if r < -1e-12 else ("불안정" if r > 1e-12 else "경계(중립)")
print(" %-20s %-28s %+10.4f %s" % (name, np.array2string(np.round(ww,4)), r, kind))
# 행렬 고유값 실수부 최대 판정
# diag(-1,-3) [-1. -3.] -1.0000 안정
# diag(-1, 2) [-1. 2.] +2.0000 불안정
# [[0,1],[-1,0]] [0.+1.j 0.-1.j] +0.0000 경계(중립)
# [[-.2,1],[-1,-.2]] [-0.2+1.j -0.2-1.j] -0.2000 안정
# [[0,1],[-2,-3]] [-1. -2.] -1.0000 안정
# --- 문제 4: 복소 고유값은 진동을 만든다 --------------------------------
C = np.array([[-0.2, 1.0], [-1.0, -0.2]])
wc = np.linalg.eigvals(C)
print(" C 의 고유값 %s (실수부 %.1f, 허수부 %.1f)" % (np.round(wc,4), wc.real[0], abs(wc.imag[0])))
print(" 해는 e^{-0.2 t}(cos t, sin t) 조합이라 감쇠 진동입니다")
y0 = np.array([1.0, 0.0])
print(" t x(t) |x(t)| e^{-0.2t}")
for T in [0.0, 1.5, 3.0, 6.0, 12.0]:
xt = expm(C, T) @ y0
print(" %7.1f %-24s %10.6f %10.6f" % (T, np.array2string(np.round(xt,4)),
np.linalg.norm(xt), np.exp(-0.2*T)))
print(" 크기는 e^{-0.2t} 로 줄고 방향은 계속 돕니다")
# C 의 고유값 [-0.2+1.j -0.2-1.j] (실수부 -0.2, 허수부 1.0)
# 해는 e^{-0.2 t}(cos t, sin t) 조합이라 감쇠 진동입니다
# t x(t) |x(t)| e^{-0.2t}
# 0.0 [1. 0.] 1.000000 1.000000
# 1.5 [ 0.0524 -0.739 ] 0.740818 0.740818
# 3.0 [-0.5433 -0.0774] 0.548812 0.548812
# 6.0 [0.2892 0.0842] 0.301194 0.301194
# 12.0 [0.0766 0.0487] 0.090718 0.090718
# 크기는 e^{-0.2t} 로 줄고 방향은 계속 돕니다
# 크기가 정확히 e^{-0.2t} 입니다. 실수부가 봉투를 정합니다.
# --- 문제 5: 경사흐름의 야코비는 -H 다 ----------------------------------
print(" f = (x^2 + 100y^2)/2 의 경사흐름 dx/dt = -grad f = -H x")
H = np.array([[1.0, 0.0], [0.0, 100.0]])
print(" -H 의 고유값 %s -> 모두 음수라 원점이 안정" % np.linalg.eigvals(-H))
print(" t x(t) = e^{-Ht} x0, x0 = (1,1)")
for T in [0.0, 0.05, 0.5, 5.0]:
xt = expm(-H, T) @ np.array([1.0, 1.0])
print(" %7.2f %s" % (T, np.array2string(np.round(xt, 8) + 0.0)))
print(" 안장이면 불안정합니다. g = (x^2 - y^2)/2 의 헤세")
Hs = np.array([[1.0, 0.0], [0.0, -1.0]])
print(" -H 의 고유값 %s -> 양수가 있어 불안정" % np.linalg.eigvals(-Hs))
for T in [0.0, 2.0, 5.0]:
xt = expm(-Hs, T) @ np.array([1.0, 0.001])
print(" %7.1f %s" % (T, np.array2string(np.round(xt, 6))))
print(" 101강의 임계점 분류가 그대로 안정성 분류입니다")
# f = (x^2 + 100y^2)/2 의 경사흐름 dx/dt = -grad f = -H x
# -H 의 고유값 [ -1. -100.] -> 모두 음수라 원점이 안정
# t x(t) = e^{-Ht} x0, x0 = (1,1)
# 0.00 [1. 1.]
# 0.05 [0.95122942 0.00673795]
# 0.50 [0.60653066 0. ]
# 5.00 [0.00673795 0. ]
# 안장이면 불안정합니다. g = (x^2 - y^2)/2 의 헤세
# -H 의 고유값 [-1. 1.] -> 양수가 있어 불안정
# 0.0 [1. 0.001]
# 2.0 [0.135335 0.007389]
# 5.0 [0.006738 0.148413]
# 101강의 임계점 분류가 그대로 안정성 분류입니다
# 안장에서는 0.001 의 작은 교란이 자라 지배합니다.
문제 5가 이 강의의 도착점입니다. 101강에서 대수로 만든 임계점 분류가 그대로 안정성 분류가 됩니다.
119강에서 이 흐름을 최적화의 언어로 읽습니다.
정답.
| 기호 | 읽는 법 | 뜻 |
|---|---|---|
| e^ | 행렬 지수함수 | 급수로 정의합니다 |
| 고유값의 실수부 | 안정성을 정합니다 | |
| 허수부 | 진동수를 정합니다 | |
| 점근안정 | asymptotically stable | 평형점으로 수렴합니다 |
| 마디 | node | 실수 고유값의 상평면 |
| 나선 | spiral | 복소 고유값의 상평면 |
| 중심 | center | 순허수, 닫힌 궤도 |
| 쌍곡적 | hyperbolic | 실수부가 이 아닙니다 |
| 리아푸노프 함수 | Lyapunov function | 흐름을 따라 감소합니다 |
| 뻣뻣한 계 | stiff system | 시간 척도가 크게 다릅니다 |
| 극한주기 | limit cycle | 고립된 닫힌 궤도입니다 |
다음 119강에서는 경사흐름과 연속시간 최적화를 다룹니다. 이 강의의 안정성 이론을 최적화에 적용해, 109강의 경사하강법이 의 이산화임을 정식화합니다. 111강의 모멘텀이 감쇠 진동으로 읽히고, 96강 심화 3의 노름 선택이 흐름의 선택으로 나타납니다.