벡터장과 흐름 — 시간 발전을 그리는 도구
벡터장과 흐름 — 시간 발전을 그리는 도구
다양체 위의 매끄러운 벡터장 가 ODE 의 우변이 되고, 그 흐름 가 시간 발전을 그리며, 두 벡터장의 리 괄호 가 흐름의 비가환성을 잰다.
들어가며
지난 장에서 다양체 의 한 점에 접공간을 붙였다. 그 점에서 출발하는 곡선들의 속도가 모두 한 벡터공간 — 접공간 — 에 모여 산다. 접벡터 하나만으로는 운동을 그릴 수 없다. 접벡터는 한 점에서의 순간 방향일 뿐이라 다음 순간 어디로 갈지는 알려 주지 않는다. 운동을 그리려면 한 점이 아니라 모든 점에 방향이 하나씩 깔려 있어야 한다.
벡터장(vector field) 은 다양체의 모든 점에 접벡터를 한 개씩 매끄럽게 꽂아 둔 양이다. 점마다 화살표가 하나씩 박혀 있는 그림. 이 화살표 밭이 손에 들어오면 세 가지가 한꺼번에 따라온다. 벡터장은 그 자체로 운동 방정식의 우변이 된다 — ODE 한 줄이 곧 “점마다 어느 방향으로 가라”는 지시이기 때문이다. 그 지시를 충실히 따라간 궤적이 적분곡선이고, 모든 점을 한꺼번에 떠밀어 나가는 사상이 흐름(flow) 이다. 벡터장이 두 개 있을 때 그 둘의 흐름이 순서를 바꿔도 같은가를 재는 양이 리 괄호(Lie bracket) 다. 이 비가환성은 다음 장의 미분형식과 외미분의 토대가 된다.
본론 1은 벡터장이 무엇인가 — 점마다 방향을 주는 양이자 ODE 의 우변. 본론 2는 그 벡터장을 따라가면 무엇이 나오는가 — 적분곡선과 흐름, 군 성질. 본론 3은 벡터장 두 개 사이의 리 괄호 — 두 흐름이 가환인가를 재는 양.
본론 1 — 벡터장: 점마다 방향을 주는 양
텔레비전 일기예보의 바람 지도. 한반도 지도 위에 작은 화살표들이 촘촘히 박혀 있고, 각 화살표는 그 지점에서 바람이 어느 방향으로 얼마나 세게 부는지를 가리킨다. 서울의 화살표는 북서쪽을 가리키고, 부산의 화살표는 남쪽을 가리키고, 화살표 길이는 풍속이다. 이 바람 지도가 벡터장이다 — 평면(다양체)의 모든 점에 화살표(접벡터)를 하나씩 붙인 양.
매끄러운 다양체 위의 벡터장(vector field) 란 각 점 에 그 점에서의 접벡터 를 매끄럽게 대응시키는 양이다. “매끄럽게”란 옆 점으로 조금 옮기면 화살표도 조금만 바뀌어야지 뚝뚝 끊기면 안 된다는 뜻이다. 일기예보 바람 지도도 서울에서 한 발짝 옮긴다고 바람이 정반대로 휙 바뀌지는 않는다.
좌표 의 표준 기저 를 쓰면 벡터장은 다음처럼 적힌다(아인슈타인 합 규약).
여기서 는 매끄러운 성분함수다. 는 기저 — 좌표 방향을 가리키는 단위 화살표 — 이고, 는 성분함수 — 그 방향 화살표를 점마다 얼마나 길게 늘일지 정하는 숫자 — 다. 일기예보 비유로, 와 는 “동쪽”과 “북쪽”이라는 고정된 기준 방향이고 와 는 그 지점에서 동·북 성분이 각각 얼마인지를 말하는 두 숫자다. 두 숫자가 점마다 함수로 바뀌니까 화살표가 점마다 다른 방향, 다른 길이로 나온다.
헷갈리기 쉬운 곳 — 벡터장은 점마다 다른 접공간에 사는 화살표다. 일기예보 화살표가 다 같은 종이 위에 그려져 있어서 “서울 화살표”와 “부산 화살표”를 자유롭게 더할 수 있을 것 같지만, 다양체 위에서는 그렇지 않다. 은 점 의 접공간 에 살고 는 에 산다. 이 둘은 서로 다른 벡터공간이다. 화살표끼리 더하려면 같은 벡터공간 안에 있어야 하니, 같은 점의 화살표끼리만 더할 수 있다. 일기예보 지도가 평평한 종이라 다 더할 수 있어 보이는 것은 평면이라는 특수한 경우에 모든 접공간을 한 종이에 겹쳐 놓을 수 있기 때문이다. 구면 같은 휘어 있는 다양체 위에서는 서울 접평면과 부산 접평면이 기울기가 달라 화살표를 그냥 옮겨 더할 수 없다.
벡터장의 진짜 역할은 ODE 의 우변이 된다는 데 있다. 곡선 이 다음을 만족할 때, 그 곡선이 벡터장 를 “따라간다”고 말한다.
왼쪽 는 곡선의 속도 — 곡선이 지금 어디로 움직이는지 — 이고, 오른쪽 는 곡선이 지금 있는 자리에서 벡터장이 가리키는 방향이다. 둘이 같다는 것은 “곡선이 매 순간 자기가 밟고 선 자리의 화살표를 충실히 따라간다”는 뜻이다. 일기예보 비유로는 바람을 타고 떠다니는 풍선 — 풍선은 자기 의지가 없고 지금 자리에 부는 바람대로 움직인다. 좌표를 떼고 다양체 위에서 적으면 . 벡터장 = 운동 방정식의 우변.
평면 단진자. 단진자의 상태는 각도 와 각속도 두 개로 정해지니, 위상공간은 가 사는 2차원 공간 — 정확히는 — 이다. 이 위상공간 위에 다음 벡터장.
가로축을 , 세로축을 라 하자. 화살표의 가로 성분은 , 세로 성분은 다. 위상공간의 위쪽 절반 ()에서는 가로 성분이 양수니 화살표가 오른쪽 — 각도가 커지는 쪽 — 을 향한다. 아래쪽 절반 ()에서는 왼쪽. 인 오른쪽 절반에서는 세로 성분 가 음수니 화살표가 아래로, 인 왼쪽 절반에서는 위로. 네 사분면을 종합하면 — 오른쪽 위에서 오른쪽 아래로, 오른쪽 아래에서 왼쪽 아래로, 왼쪽 아래에서 왼쪽 위로, 왼쪽 위에서 다시 오른쪽 위로 — 원점을 시계 반대 방향으로 감아 도는 소용돌이가 그려진다. 이것이 진자가 좌우로 왔다 갔다 하는 진동을 위상공간에서 본 모습이다. 원점 에서는 화살표 길이가 0 인데, 진자가 맨 아래 멈춰 있는 평형점이다.
두 성분을 따로 읽으면 의미가 분명해진다. 첫 성분 는 ” 가 만큼 변한다”는 각속도의 정의를 그대로 옮긴 것이고, 둘째 성분 가 진짜 운동 방정식이다. 즉 2계 미분방정식 한 줄을 라는 위상공간 위의 1계 벡터장 한 개로 바꿔 적은 것이다. 위치와 속도를 한 묶음으로 보면 모든 운동 방정식이 “위상공간 위의 벡터장 한 개”로 통일된다. 미분방정식의 계수가 아무리 높아도 보조 변수를 도입해 위상공간의 차원을 늘리면 언제나 1계 벡터장 하나로 바꿀 수 있다.
헷갈리기 쉬운 곳 — 에서 는 기저, 는 성분함수다. 는 좌표가 정해 주는 고정된 기준 방향의 모음 — 벡터공간의 기저 — 이다. 점이 바뀌어도 ” 방향”이라는 의미는 그대로다(좌표계 안에서는). 반면 는 점마다 값이 달라지는 함수다. 화살표가 점마다 다르게 생기는 것은 기저 가 변해서가 아니라 성분함수 가 변해서다. 는 동·서·남·북이라는 변하지 않는 나침반 방향, 는 “여기서는 동쪽으로 3, 북쪽으로 -1”처럼 지점마다 바뀌는 지시값.
헷갈리기 쉬운 곳 — 시간 의존 벡터장 vs 자율 벡터장. 이 장의 벡터장 는 점 에만 의존하고 시간 에는 직접 의존하지 않는다 — 자율(autonomous) 벡터장. 바람 지도가 시간이 지나도 바뀌지 않는 경우다. 화살표 밭 자체가 시간에 따라 변하면 — — 시간 의존(non-autonomous) 벡터장. 자율 벡터장은 흐름이 깔끔한 군 성질을 가지지만 시간 의존 벡터장은 “언제 출발했는가”까지 따져야 해서 그림이 복잡해진다. 시간 의존 문제도 시간 를 좌표 하나로 추가해 위상공간을 한 차원 늘리면 자율 문제로 바꿀 수 있다. 이 장에서는 자율 벡터장만 다룬다.
본론 2 — 적분곡선과 흐름
벡터장이 점마다 “이쪽으로 가라”고 지시한다면 그 지시를 충실히 따른 궤적은 무엇인가. 초기점 을 하나 정하자. ODE 의 존재·유일성 정리(이 장에서는 사실로 받아들인다)에 의해 와 를 동시에 만족하는 곡선 가 적어도 짧은 시간 동안 유일하게 존재한다. 이 곡선이 벡터장 의 적분곡선(integral curve) 이다.
적분곡선의 그림은 본론 1의 풍선 비유 그대로다 — 바람을 타고 떠다니는 풍선의 궤적. 풍선을 에 놓고 손을 떼면 풍선은 자기 자리의 바람대로 조금 움직이고, 새 자리에서 또 그 자리의 바람대로 움직이고, 이것을 끝없이 반복한다. “적분”이라는 이름이 붙은 이유는 점마다 주어진 미분(속도) 정보를 시간을 따라 쌓아 실제 궤적을 만드는 과정이 적분이기 때문이다.
지금까지는 초기점 를 고정하고 시간 를 변수로 봤다. 거꾸로 시간 를 고정하고 초기점을 변수로 보면 다음 사상이 정의된다.
는 ” 의 모든 점을 동시에 잡아, 각 점에서 출발한 적분곡선을 따라 시간 만큼 흘려보낸 뒤의 자리로 옮기는” 사상이다. 한 풍선이 아니라 공간을 가득 채운 풍선 떼를 한꺼번에 시간 만큼 떠미는 그림. 이 사상들의 모임 이 벡터장 의 흐름(flow) 이다. 적분곡선이 한 점의 운명을 그린다면 흐름은 공간 전체의 운명을 한 장의 그림으로 그린다.
흐름은 정의에서 곧장 다음 군 성질을 만족한다.
오른쪽 는 “먼저 초 흘려보내고(), 그 결과를 다시 초 흘려보낸다()“는 뜻. 왼쪽 는 ” 초를 한 번에 흘려보낸다”. 풍선을 초 띄운 뒤 멈췄다가 다시 초 띄우든, 처음부터 초 내내 띄우든, 풍선이 매 순간 따르는 바람 지도가 똑같기 때문에 — 즉 벡터장이 시간에 의존하지 않는 자율 벡터장이기 때문에 — 결과가 같다. 중간에 멈춘 사실은 궤적에 아무 흔적도 남기지 않는다. 은 “0 초 흘려보내면 아무도 안 움직인다”. 이 두 식이 흐름이 군을 이룬다는 말의 내용이다 — 가 의 역원이 되니 시간을 거꾸로 흘려보내면 원래 자리로 정확히 돌아온다.
선형의 경우. 위에서 벡터장이 ( 는 행렬). 즉 점 에서의 화살표가 그 점에 행렬 를 곱한 것. ODE 의 해는
흐름이 행렬 지수다. 군 성질 도 자동으로 따라 나온다. 0장에서 미리 던졌던 “ODE 가 어디로 가는지를 알려면 결국 행렬 지수다”라는 예고가 여기서 일반 다양체 버전으로 옷을 갈아입은 것 — 일반 벡터장의 흐름 가 선형 사례에서 정확히 가 된다.
손으로 끝까지 계산할 수 있는 선형 사례 — 회전 생성자. 위에서
이 주는 벡터장은 점 에서 화살표 . 화살표 는 위치벡터 와 항상 수직이다 — 내적 . 위치벡터에 수직인 방향으로 계속 밀린다는 것은 원을 따라 도는 운동이다. 이므로 의 거듭제곱급수에서 사인·코사인이 떨어져 나와
— 각도 만큼의 회전 행렬이다. 따라서 초기점 의 적분곡선은 원점을 중심으로 한 반지름 의 원이고, 시간 가 흐르면 그 원 위를 각속도 1 로 빙빙 돈다. 행렬 를 “회전 생성자”라 부르는 이유 — 자체는 회전이 아니지만 를 지수에 올려 흐름을 만들면 회전이 나온다. 이 회전 흐름이 이 장 끝의 파이썬 코드에서 다시 등장한다.
헷갈리기 쉬운 곳 — 흐름은 짧은 시간만 보장된다. 존재·유일성 정리가 약속하는 것은 “적어도 짧은 시간 동안” 적분곡선이 존재한다는 것뿐이다. 모든 에 대해 흐름이 정의된다는 보장은 없다. 해가 유한한 시간 안에 무한대로 발산해 버릴 수 있다. 가장 간단한 예 . 해는 인데 에서 분모가 0 이 되어 해가 폭발한다. 그 시각 이후로는 가 정의되지 않는다. 엄밀하게는 흐름을 ” 가 정의되는 시간 구간”과 함께 말해야 한다. 위상공간이 콤팩트하거나 벡터장이 적당한 성장 조건을 만족하면 모든 시간에 대해 흐름이 정의되고, 단진자나 회전 생성자 같은 우리가 다루는 대부분의 예가 그런 좋은 경우에 속한다.
헷갈리기 쉬운 곳 — 는 의 점을 의 점으로 보내고, 시간이 매개변수다. 표기를 보면 가 마치 입력값처럼 보이지만 는 어느 사상을 고를지 정하는 매개변수이고 사상 자체의 입력과 출력은 둘 다 의 점이다 — . 시간을 하나 고정할 때마다 ” 을 으로 옮기는 사상”이 하나 정해지고, 시간을 연속적으로 바꾸면 그 사상들이 연속적인 가족을 이룬다 — 흐름을 “1-매개변수 변환군”이라 부르는 이유다. 적분곡선(, 출력이 점)과 흐름(, 출력이 사상)을 헷갈리지 말자. 둘은 같은 정보를 시점만 바꿔 본 것이지만, 적분곡선은 한 점의 시간 궤적이고 흐름은 공간 전체를 옮기는 사상이다.
본론 3 — 리 괄호: 두 흐름은 가환인가?
벡터장 두 개 가 같은 다양체 위에 함께 놓여 있다. 각각이 자기 흐름 , 를 가진다. 두 흐름은 순서를 바꿔도 같은가? ” 로 초, 그다음 로 초”와 ” 로 초, 그다음 로 초”가 같은 점에 도착하는가? 식으로 쓰면 와 가 같은 사상인가?
이 질문에 답을 재는 양이 리 괄호(Lie bracket) 다. 좌표 성분으로
좌표를 떼면, 임의의 매끄러운 함수 에 대해
여기서 는 벡터장이 함수에 작용해 만든 또 하나의 매끄러운 함수 — 를 벡터장 방향으로 미분한 값이다. 즉 벡터장은 1차 미분 연산자로도 볼 수 있다. 함수를 받아 그 방향미분을 내놓는 연산자. 리 괄호는 두 미분 연산자의 교환자(commutator — 두 연산자의 작용 순서를 바꿔 뺀 것) 다.
헷갈리기 쉬운 곳 — 교환자에서 2차 미분항이 상쇄되어 1차 연산자가 남는다. 는 를 두 번 미분한 것처럼 보이고, 펼치면 처럼 2차 미분항 가 들어 있다. 도 2차 미분 연산자여야 할 것 같지만 그렇지 않다. 를 펼치면 인데, 첫 항의 는 에 대칭이라 의 2차항과 정확히 같다. 빼면 2차 미분항이 깨끗이 사라지고 의 1차 미분만 담긴 항 만 남는다. 그래서 는 다시 어엿한 1차 미분 연산자 — 또 하나의 벡터장 — 가 된다. 좌표 성분 공식 가 바로 그 살아남은 1차항이다.
헷갈리기 쉬운 곳 — 는 또 하나의 벡터장이다. 리 괄호를 처음 보면 “흐름이 가환인지 아닌지를 재는 숫자”쯤으로 오해하기 쉽다. 아니다. 는 벡터장이다 — 다양체의 점마다 화살표를 하나씩 주는 양. 도 자기 흐름을 가지고, 다른 벡터장과 또 리 괄호를 취할 수 있다. “두 벡터장을 받아 새 벡터장을 내놓는 연산”이 리 괄호다. 두 흐름의 가환성 여부는 이 벡터장이 0 인가 아닌가로 판정될 뿐, 리 괄호 자체는 숫자가 아니라 벡터장이다.
작은 예. 위에서
성분으로 , . 는 모든 점에서 오른쪽을 가리키는 일정한 화살표 밭이고, 는 가 클수록 위로 길게, 에서는 아래로, 축 위에서는 길이 0 인 화살표 밭이다. 공식 을 두드리면, 첫 성분은
둘째 성분은
따라서
0 이 아닌 벡터장. 그러므로 이 두 벡터장의 흐름은 가환이 아니다.
기하적 의미를 사각형 닫기 실험으로. 한 점 에서 출발. (1) 먼저 를 따라 시간 만큼 흘러간다. (2) 거기서 를 따라 다시 만큼 흘러간다. (3) 를 역방향으로 만큼. (4) 를 역방향으로 만큼 되돌아온다. 두 흐름이 가환이라면 사각형이 닫혀 시작점 로 정확히 돌아온다 — ” 갔다 갔다”와 ” 갔다 갔다”가 같으니 갔던 길을 반대 순서로 되짚는 셈. 가환이 아니면 사각형이 닫히지 않는다. 시작점에서
만큼 벗어난다. 벗어남의 크기는 에 비례하고, 그 방향이 정확히 리 괄호 다. 위의 예에 대입하면 네 변을 다 밟고 나서 만큼 — 위쪽으로 만큼 — 어긋난 자리에 도착한다. 손으로 따라가 보면, 를 따라가면 가 만큼 늘고, 거기서 를 따라가면 가 커진 만큼 가 많이 오른다. 반대로 먼저 갔다 로 가면 가 작을 때 가 올라가니 덜 오른다. 이 차이가 차수로 남는다.
이 비가환성은 일상에서도 흔하다. 평행주차. 자동차는 두 가지 기본 동작을 할 수 있다 — “앞뒤로 직진”과 “핸들을 꺾은 채 움직이기(회전)”. 옆 칸으로 평행하게 옮기는 동작은 이 두 기본 동작 어느 쪽에도 없다. 그래서 “직진-회전-직진-회전”을 교묘히 섞어서 — 사각형 비슷한 경로를 그려서 — 옆으로 빠져나간다. 직진과 회전이 가환이었다면 아무리 섞어도 갔던 자리로만 돌아올 뿐 옆으로는 한 발짝도 못 갔을 것이다. 평행주차가 가능한 것 자체가 “전진”과 “회전”이라는 두 벡터장의 리 괄호가 0 이 아니기 때문이다. 리 괄호가 만들어 내는 새 방향 — 직진에도 회전에도 없던 “옆으로” 방향 — 이 차를 옆 칸으로 옮기는 데 쓰는 방향이다. 화성 탐사 로버가 제자리에서 옆으로 게걸음 못 하고 방향을 틀려면 한참 앞뒤로 움직여야 하는 것도 같은 사정이다.
헷갈리기 쉬운 곳 — ⟺ 두 흐름 가환 ⟺ 좌표격자처럼 깔 수 있다. 리 괄호가 0 이면 세 가지가 동시에 성립한다. 첫째, 두 흐름이 가환이다 — . 둘째, 사각형 닫기 실험에서 사각형이 (고차항까지 포함해) 항상 닫힌다. 셋째, 두 벡터장을 좌표격자의 두 축으로 삼을 수 있다 — , 가 되는 좌표 를 잡을 수 있다. 와 의 리 괄호는 0 이니(), 거꾸로 리 괄호가 0 인 두 벡터장은 어떤 좌표계의 두 좌표축 노릇을 한다. 모눈종이의 가로줄과 세로줄을 따라가는 것은 순서를 바꿔도 같은 칸에 도착한다 — “모눈종이를 깔 수 있음”이 곧 . 리 괄호가 0 이 아니면 그런 깔끔한 격자 좌표가 원리적으로 불가능하다.
리 괄호가 0 이 아니라는 것 = 두 흐름이 가환이 아니라는 것 = 두 벡터장으로는 좌표격자를 깔 수 없다는 것. 이 한 묶음의 사실이 다음 장의 미분형식의 외미분(exterior derivative)과 리 도함수(Lie derivative)의 모든 식을 떠받친다. 외미분이 “1-형식이 작은 사각형 위에서 얼마나 닫혀 있지 않은가”를 잰다면, 그 사각형의 비가환성을 벡터장 쪽에서 잰 것이 리 괄호다.
파이썬으로 확인
# 2차원 벡터장 X(x,y) = (-y, x) (회전 생성자)의 적분곡선을
# 손으로 작성한 RK4 로 적분하고, 그 위에 plt.streamplot 을 겹쳐
# 적분곡선과 스트림라인이 일치함을 눈으로 확인한다.
import numpy as np
import matplotlib.pyplot as plt
def X(p): # 벡터장: 회전 생성자
x, y = p
return np.array([-y, x])
def rk4_step(p, dt): # 표준 4차 룽게-쿠타
k1 = X(p)
k2 = X(p + 0.5 * dt * k1)
k3 = X(p + 0.5 * dt * k2)
k4 = X(p + dt * k3)
return p + dt * (k1 + 2*k2 + 2*k3 + k4) / 6
dt, T = 0.02, 6.0
N = int(T / dt)
initials = [(1.0, 0.0), (1.5, 0.0), (2.0, 0.0), (0.0, 1.2)]
curves = []
for q0 in initials: # 초기점마다 적분곡선을 모은다
traj = np.empty((N + 1, 2))
traj[0] = q0
for n in range(N):
traj[n+1] = rk4_step(traj[n], dt)
curves.append(traj)
# 벡터장의 스트림라인을 배경으로 깔고, 적분곡선을 위에 겹친다
gx, gy = np.meshgrid(np.linspace(-2.5, 2.5, 25), np.linspace(-2.5, 2.5, 25))
plt.streamplot(gx, gy, -gy, gx, density=1.0, color="0.7")
for c in curves:
plt.plot(c[:, 0], c[:, 1])
plt.gca().set_aspect("equal"); plt.xlabel("x"); plt.ylabel("y"); plt.show()
X(p) 는 본론 1·2의 회전 생성자 벡터장 — 점 에서 화살표 를 돌려준다. 이 벡터장의 적분곡선은 원점을 중심으로 한 원이어야 한다. rk4_step 은 그 적분곡선을 수치적으로 따라가는 한 걸음이다. RK4 (4차 룽게-쿠타 — 한 스텝 안에서 벡터장을 네 번 평가해 가중 평균으로 다음 점을 잡는 적분기) 는 한 걸음 동안 벡터장을 네 번 () 살펴 평균을 내고 그만큼 점을 옮긴다. 네 번 살피는 덕에 오차가 차수로 작다.
initials 에 적힌 네 개의 초기점에서 각각 적분곡선을 뽑는다. for q0 in initials 루프가 정확히 “초기점 하나당 궤적 traj 하나”를 만든다. 반지름이 다른 세 점 과 세로축 위의 한 점 를 골랐으니 회전 생성자가 정말 원을 그린다면 반지름 1, 1.5, 2, 1.2 인 네 개의 동심원이 나와야 한다.
plt.streamplot 이 벡터장 자체를 배경 그림으로 깐다. 스트림라인은 “화살표 밭을 부드럽게 이어 그린 선”이니 이론적으로 적분곡선과 똑같은 곡선이다 — “흐름은 공간 전체를 한꺼번에 떠미는 그림”의 시각화. 그 위에 RK4 궤적을 겹쳐 그린다. 회전 생성자의 적분곡선은 원이어야 하고, 스트림라인 위에 겹쳐 그린 RK4 궤적이 정확히 그 원을 따라간다면 “벡터장 = 흐름”의 그림이 손에 들어온 것이다. X(p) 를 단진자 벡터장 로 바꾸면 원 대신 본론 1에서 그린 소용돌이 모양 궤적이 나오고, 원점 근처에서는 거의 원, 멀리서는 찌그러진 곡선이 보인다.
다음 장으로
6장: 미분형식과 외미분에서는 이 장의 벡터장의 쌍대 대상 — 1-형식과 그 외미분 — 을 도입한다. 벡터장이 “점마다 화살표”라면 1-형식은 “점마다 화살표를 받아 숫자를 내놓는 자(尺)”. 리 괄호 가 두 흐름의 비가환성 — 사각형이 닫히지 않는 정도 — 을 쟀다면, 외미분 는 1-형식이 작은 사각형 위에서 얼마나 “닫혀 있지 않은가”를 잰다. 두 양은 같은 사각형을 양쪽에서 본 것이고, 그 둘을 잇는 카르탕 마법공식이 다음 장의 도착점이다.