더북(TheBook)

4.3.1 지구는 평평하지 않다: 경사가 필요한 이유

그림 그리기를 좋아하나요? (별로 좋아하지 않더라도 따라와 주세요.) 종이에다가 펜으로 점 몇 개를 그려 보세요. 그다음 점들을 관통하는 직선을 하나 그립니다. 여기에서 문제가 발생합니다. 점이 두 개 이상이면 그릴 수 있는 직선의 수가 정말 많아지죠. 점들을 관통하는 직선을 긋는 것은 매우 쉬운 작업인 듯 보이지만, 어떻게 그어야 좋을지 쉽게 답을 내릴 수는 없습니다.

직선을 선택하는 방법 중 하나는 제일 좋은 직선을 찾는 것입니다. 문제 해결 끝! 끝났습니다. 이른 저녁이나 먹으러 가죠. 아, 잠시만요. 제일 좋은 직선이 무엇을 의미하는지 확실히 해야겠군요. 흠, 이렇게 해 보죠. 각 점이 직선과 이루는 수직 거리를 이용해서 점들에 가장 가까운 직선을 구해 봅시다. 이제 슬슬 진행이 되는군요. 이것을 이용해서 여러 후보 직선을 비교할 수 있습니다.

수직 거리를 사용했을 때 어느 직선이 최선일까요? 조금 더 문제를 단순화해 볼게요. 종이 밑면에 평행한 직선들만 그을 수 있다고 가정해 봅시다. 올림픽 높이뛰기 가로대를 높이거나 내리는 것처럼 직선을 움직이는 것이죠. 직선을 위 또는 아래로 움직이면 점들로부터 멀어지거나 가까워지거나, 중간으로 오거나, 일부 점들에 더 가까워지거나, 모든 점들로부터 멀어지게 됩니다. 맞아요, 너무 뜨겁지도 차갑지도 않은 딱 적당한 중간을 찾는 것을 여기에서도 하는 것입니다. 조금 이따가 이를 코드와 그림으로 살펴볼 것이에요. 너무 빨리 추상화하는 것 같기는 하지만, 간단하게 y = c 같은 직선을 그려 봅시다. 이 수식은 ‘가로대 높이는 언제나 어떤 고정된 값과 같다’는 것을 의미합니다.

가로대 몇 개를 그려 보고 무슨 일이 일어나는지 살펴봅시다.

 

In [11]:

def axis_helper(ax, lims):
    'clean up axes'
    ax.set_xlim(lims); ax.set_xticks([])
    ax.set_ylim(lims); ax.set_yticks([])
    ax.set_aspect('equal')
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.