학교에서 본 미적분 영상에서 최단강하곡선 문제에 대한 이야기를 봐서 이번 글에선 이 내용을 다뤄보려고 합니다. 최단강하곡선은 2차원 상에 주어진 두 점을 잇는 곡선 중에서 두 점 중 높은 곳에 물체를 올려뒀을 때 가장 빨리 낮은 곳으로 내려가는 곡선입니다. 역사적으로 보면 1689년에 요한 베르누이가 유럽의 최고 수학자들에게 보냈다는 문제로 유명하죠. 사실 이 문제는 베르누이가 뉴턴을 시험해보려던 문제였는데, 뉴턴은 퇴근 후 몇 시간 끄적거려서 풀어내고 익명으로 풀이를 보냈죠. 이름 없는 풀이를 본 베르누이는 뉴턴인 것을 알아봤다고 합니다.



(이거 만드느라 2시간 쓴 건 함정) (검정: 선분, 파란색: 사이클로이드, 빨간색: 호)


  위 그림이 최단강하곡선 문제를 시각적으로 나타낸 것입니다. $(0, 1)$에서 $(1, 0)$까지 이은 여러 곡선(곡선의 정의에 따라 선분도 포함됩니다) 중에서 간단히 호, 선분, 그리고 이 글의 주인공인 사이클로이드를 그려봤습니다. 언핏 봤을 땐 직선으로 내려가는게 가장 빠르다고 생각할 수도 있습니다. 하지만 이 직관이라는 것은 생각보다 신뢰도가 떨어지고, 무엇보다 수학은 직관으로 시작할 수는 있어도 직관으로만 결과를 도출해내는 것은 대단히 위험하기 때문에 이제 과연 어떤 곡선이 최단강하곡선인지 유도해낼 것입니다.


  일단 이 최단강하곡선을 유도해내기 전에 이 문제를 통해 새롭게 탄생한 변분법이라는 것을 알아야합니다. 변분법이란 범함수(함수 집합을 정의역으로 하는 함수)의 최대 또는 최소를 구해내는 방법입니다. 이 변분법을 쓰는 예로는 여기서 소개하는 사이클로이드의 유도, 평면에 있는 두 점을 잇는 곡선 유도 등이 있습니다. 이제 저는 변분법에서 쓰이는 오일러-라그랑주 방정식을 통해 이 문제를 해결할 겁니다.




  먼저 중력의 방향을 위 이미지처럼 $+y$ 방향이라고 잡고 어떤 두 점 $A(0, 0),\ B(x_0, y_0)\ (x_0, y_0 > 0)$ (계산의 편의를 위해 간단히 잡았습니다)에서 물체를 놨을 때 최단시간으로 떨어지는 곡선을 구해야하기 때문에 결과값이 시간인 범함수를 만들어야 합니다. 이때 중학교 때부터 알고 있던 간단한 공식을 이용합니다.  $ t = {s \over v}$ 이죠. 이때 우리는 곡선을 다루기 때문에 범함수 $L$에 대해 아래와 같이 공식을 세울 수 있습니다.

$$ L = \int_0^{x_0} {ds \over v} $$


이때 이 곡선에서는 역학적 에너지가 보존되기 때문에 아래와 같이 $v$ 를 구할 수 있습니다.

$$ mgy = {1 \over 2}mv^2 \\[10pt] \therefore v = \sqrt{2gy} $$


$ds$ 는 고등학교 기하와 벡터 과정에서 구하는 곡선의 길이 공식을 통해 유도해낼 수 있습니다.

$$ ds = \sqrt{ \left(dx\right)^2 + \left(dy\right)^2 } = \sqrt{1 + x'^2 }\ dy $$


즉, 범함수 $L$은 아래와 같이 나타낼 수 있습니다.

$$ L = \int_0^{x_0} {\sqrt{1 + x'^2 \over 2gy}\ dy} = {1 \over \sqrt{2g}} \int_0^{x_0} {\sqrt{1 + x'^2 \over y}\ dy} $$


이제 오일러-라그랑주 방정식을 봅시다. 범함수 $J$에 대해서 다음과 같이 나옵니다. 이 방정식의 유도과정은 위키백과에 검색하면 잘 나오니 궁금하시면 검색하시면 됩니다.

$$ J = \int_a^b F(x, f(x), f'(x))\ dx,\ {\partial F \over \partial f} - {d \over dx} {\partial F \over \partial f'} = 0 $$


우리의 범함수 $L$에 대해 변형하면 아래와 같이 나옵니다.

$$ F(y, x, x') = \sqrt{1 + x'^2 \over y},\ {\partial F \over \partial x} - {d \over dy} {\partial F \over \partial x'} = 0 $$


이제 쭉 풀어봅시다.

$$ {\partial F \over \partial x} - {d \over dy} {\partial F \over \partial x'} = 0 \\[15pt] {d \over dy} {\partial F \over \partial x'} = 0 \left(\because {\partial F \over \partial x} = 0\right) \\[15pt] {d \over dy} \left( \sqrt{y \over 1 + x'^2} \cdot {x' \over y} \right) = 0 \\[15pt] \sqrt{y \over 1 + x'^2} \cdot {x' \over y} = C \\[15pt] x' = \pm\sqrt{C^2 y \over 1 - C^2 y} $$


$x'$ 꼴로 나왔으니 이제 적분을 해주면 됩니다. 하지만 루트 안에 $y$ 가 있기에 그냥 적분하기엔 불가능할 정도이므로 치환적분을 써줍니다. 중간에 나오는 $\sin^2 t$는 삼각함수 반각공식(삼각함수 덧셈정리 응용)을 통해 풀어줍니다.

$$ y = {1 \over C^2} \sin^2 t,\ dy = {2 \over C^2} \sin t \cos t\ dt\\[15pt] \begin{align*} x &= \pm \int \sqrt{C^2 y \over 1 - C^2 y}\ dy \\[15pt] &= \pm {2 \over C^2} \int \sin^2 t \ dt \\[15pt] &= \pm {1 \over C^2} \int 1 - \cos 2t \ dt \\[15pt] &= \pm {1 \over C^2}\left(t - {1 \over 2}\sin 2t\right) + C'\end{align*}$$


이때 위에 점 $A$ 를 대입해보면 $C' = 0$ 을 얻을 수 있으며 위에 $y$ 의 $\pm$ 은 양수이므로 사라집니다. 좀 더 깔끔하게 정리하기 위해서 $x$ , $y$ 를 정리해보면 아래와 같습니다.

$$ y = {1 \over C^2} \sin^2 t = {1 \over 2C^2} \left(1 - \cos 2t\right) \\[15pt] 2t\text{를 } \theta\text{로 변환시키면} \\[15pt] \begin{cases} \displaystyle x = {1 \over 2C^2} \left(\theta - \sin \theta\right) \\ \displaystyle y = {1 \over 2C^2} \left(1 - \cos \theta \right)\end{cases}$$


여기까지가 일반적으로 알려져있는 사이클로이드 곡선의 식이며 더 나아가 $A$ , $B$ 를 잇는 사이클로이드 곡선의 식을 유도해보겠습니다. 중력의 방향이 $+y$ 방향으로 정해져있기 때문에 $x$축 대칭을 하고 원래 좌표평면에 맞게 좌표를 바꾼 점 $B(a, b)$를 대입해서 정리하면 됩니다.

$$ \begin{cases} \displaystyle x = {1 \over 2C^2} \left(\theta - \sin \theta\right) \\ \displaystyle y = -{1 \over 2C^2} \left(1 - \cos \theta \right)\end{cases} \\[15pt] x\text{축 대칭한 점 } B(a, b) \text{를 대입하고 이때 성립하는 } \theta \text{를 } \theta_0 \text{라 두면} \\[15pt] \begin{cases} \displaystyle a = {1 \over 2C^2} \left(\theta_0 - \sin \theta_0\right) \\ \displaystyle b = -{1 \over 2C^2} \left(1 - \cos \theta _0 \right)\end{cases} \\[15pt] \text{이때의 } \theta_0\text{을 구하는 방정식은 두 식을 나눠서 정리하면 아래와 같다} \\[15pt] {\theta_0 - \sin \theta_0 \over 1 - \cos \theta_0} = -{a \over b} \quad \left(\text{단, }0 < \theta_0 < 2\pi \right) \\[15pt] \text{따라서 이를 정리하면} \\[15pt] \begin{cases} \displaystyle x = -{b \over 1 - \cos \theta_0} \left(\theta - \sin \theta\right) \\ \displaystyle y = {b \over 1 - \cos \theta_0} \left(1 - \cos \theta \right)\quad \left(\text{단, }0 \leq \theta \leq \theta_0 \right) \end{cases}$$


$\theta_0$  같은 경우엔 일반적 풀이방법이 없기 때문에 수치적으로 풀면 됩니다. 저 같은 경우엔 Mathematica 11의 FindRoot 기능을 통해 구한 후 맨 위 이미지를 그려냈습니다.


... 힘드네요 ㅠㅠ(장장 7시간 정도 걸쳐서 쓴....)


  아무튼 이렇게 사이클로이드 곡선이 유도가 됩니다. 당연히 구한대로 실제로 실험해봐도 사이클로이드 곡선에서 물체를 굴릴 때가 가장 빠르게 도착지점에 도착합니다.


참고 사이트

https://ko.wikipedia.org/wiki/%EB%B3%80%EB%B6%84%EB%B2%95

http://mathworld.wolfram.com/BrachistochroneProblem.html

http://zetablog.tistory.com/33

http://mathsci.kaist.ac.kr/~nipl/am621/lecturenotes/Euler-Lagrange_equation.pdf

'수학, 과학 > 수학 이모저모' 카테고리의 다른 글

최단강하곡선 문제(Brachistochrone Problem)  (0) 2017.06.18
피보나치 수열 일반항 유도  (0) 2017.06.04
회전변환  (0) 2017.06.03
MathJax 사용하기  (0) 2017.05.28

  어느날 갑자기 피보나치 수열의 일반항을 구하는 것이 궁금해서 찾아두고, 여기에 제가 살을 몇 개 붙인 내용입니다. 일단 피보나치 수열의 점화식은 아래와 같습니다.

$$ \Large a_{n + 2} = a_{n + 1} + a_n,\ a_1 = 1,\ a_2 = 1 $$


  여기서 두 가지의 방법이 있습니다. 하나는 수열의 특성 방정식을 이용한 풀이와, 또 다른 하나는 고등학교 과정에서(09년 개정 교육과정 이전 점화식 내용) 나오는 트릭을 이용하는 풀이가 있습니다. 순서대로 두 풀이 모두 써보겠습니다.


  일단 먼저 특성 방정식을 사용하는 풀이를 보여드리겠습니다. 이상하게 이 특성 방정식을 이용한 풀이는 특성 방정식이 정확히 무엇인지를 설명하진 않더라고요...ㅇㅂㅇ... 나름 제대로 찾아보려고 해도 잘 안 나와서 위키백과 및 주워들은 것으로 설명을 해보겠습니다. 예를 들어 $a_{n + 2} = pa_{n + 1} + qa_{n}$라는 피보나치 수열과 형태가 같은 어떤 점화식이 있다고 봅시다. 이 점화식은 특성 방정식 $x^2 = px + q$의 해 $\alpha, \beta$를 통해 $a_n = P\alpha^n + Q\beta^n$의 형태로 나타낼 수 있다고 합니다. 한 번 증명을 어느 블로그(클릭!)를 참고해서 써보자면 아래와 같습니다.


일단 특성 방정식의 근과 계수와의 관계를 이용해 아래와 같이 나타낼 수 있습니다.

$$ p = \left(\alpha + \beta\right),\ q = -\alpha\beta $$


따라서 원래의 점화식을 아래와 같이 정리할 수 있습니다.


$$\displaystyle{ i)\ \alpha - \beta \ne 0 \\[10pt] a_{n + 2} = \left(\alpha + \beta\right)a_{n + 1} - \alpha\beta a_n \\[10pt] a_{n + 2} - \alpha a_{n + 1} = \beta\left(a_{n + 1} - \alpha a_n\right),\ a_{n + 2} - \beta a_{n + 1} = \alpha\left(a_{n + 1} - \beta a_n\right) \\[10pt] a_{n + 2} - \alpha a_{n + 1} = \left(a_2 - \alpha a_1\right) \beta^{n - 1}\ \cdots\ A,\ a_{n + 2} - \beta a_{n + 1} = \left(a_2 - \beta a_1\right) \alpha^{n - 1}\ \cdots\ B \\[10pt] B - A\text{ 를 하면},\ \left(\alpha - \beta\right)a_{n + 1} = \left(a_2 - \beta a_1\right) \alpha^{n - 1} - \left(a_2 - \alpha a_1\right) \beta^{n - 1} \\[10pt] \therefore a_n = { a_2 - \beta a_1 \over \alpha - \beta } \alpha^{n - 1} - { a_2 - \alpha a_1 \over \alpha - \beta }\beta^{n - 1} \\[10pt]~\\[10pt] ii)\ \alpha - \beta = 0 \\[10pt] a_{n + 2} = 2 \alpha a_{n + 1} - \alpha^2a_n \\[10pt] a_{n + 2} - \alpha a_{n + 1} = \alpha\left(a_{n + 1} - \alpha a_{n}\right) \\[10pt] a_{n + 1} = \alpha a_n + \left(a_2 - \alpha a_1\right) \alpha^{n - 1} \\[10pt] \therefore a_n = a_1 \alpha^{n - 1} + n\left(a_2 - \alpha a_1\right) \alpha^{n - 2}} $$


이렇게 증명할 수 있고, 이제 이것을 이용해 단번에 피보나치 수열의 점화식을 일반항으로 나타내봅시다.


$$ \text{특성 방정식을 구해보면},\ x^2 - x - 1 = 0 \\[10pt] \therefore \alpha = {1 + \sqrt{5} \over 2},\ \beta = { 1 - \sqrt{5} \over 2} \\[10pt] \alpha \ne \beta \text{ 이므로} \\[10pt] \begin{align*} a_n &= { a_2 - \beta a_1 \over \alpha - \beta } \alpha^{n - 1} - { a_2 - \alpha a_1 \over \alpha - \beta }\beta^{n - 1} \\[10pt] &= { 1 - \beta \over \alpha - \beta } \alpha^{n - 1} - { 1 - \alpha \over \alpha - \beta }\beta^{n - 1} \\[10pt] &= {1 \over \sqrt{5}} \left(\left(1 + \sqrt{5} \over 2\right)^n - \left(1 - \sqrt{5} \over 2\right)^n\right) \end{align*}$$


  그 다음으로 고등학교 과정에 나오는 트릭을 이용해 일반항을 유도해보겠습니다. (사실 특성 방정식 풀이랑 거의 비슷하게 나옵니다) 위의 피보나지 수열 점화식에서 $a_{n + 1}$의 일부를 좌측으로 이항하여 $b_n$ 꼴을 만들어 낼 수 있도록 합니다. 그러면 이제 아래와 같이 결국 특성 방정식에서 나오는 꼴의 점화식이 되기 때문에 이후 과정은 같게 나오고 일반항이 유도가 됩니다.


$$ a_{n + 2} = a_{n + 1} + a_n \\[10pt] a_{n + 2} - \alpha a_{n + 1} = \beta \left(a_{n + 1} + {1 \over \beta} a_n\right)\ (\alpha + \beta = 1) \\[10pt] -\alpha = {1 \over \beta} \\[10pt] \therefore a_{n + 2} = \left(\alpha + \beta\right)a_{n + 1} - \alpha\beta a_n$$


아무튼 이렇게 피보나치 수열의 일반항을 유도해 낼 수 있습니다.


p.s 고등학교 과정 풀이를 유도하다가 아예 $\alpha$ 만 쓰고 풀이를 쭉 전개해봤는데 막 $\alpha^4$이 나오고 그러더라고요 허허.... 위에 풀이 방식대로 하는게 정신건강에 좋습니다.


'수학, 과학 > 수학 이모저모' 카테고리의 다른 글

최단강하곡선 문제(Brachistochrone Problem)  (0) 2017.06.18
피보나치 수열 일반항 유도  (0) 2017.06.04
회전변환  (0) 2017.06.03
MathJax 사용하기  (0) 2017.05.28

  최근에 일품 기하와 백터를 풀다가 삼각함수로 일일히 좌표를 구해서 벡터를 직접 구해서 푸는 문제가 나오더라고요. 이때 선생님께서 회전변환을 알려주셔서 간단하게 정리해보려고 합니다.



  위와 같이 $x^2 + y^2 = r^2$ 인 원이 있고 원 위의 한 점을 $B$ 라고 잡습니다. 그리고 점 $B$ 에서 $x$ 축으로 수선의 발을 내린 것을 점 $C$ 라고 잡고, $\overline{BC} // \overline{AD}$, $\overline{BC} = \overline{AD}$ 인 점 $D$ 를 잡습니다. 이때 $\Box ACBD$ 가 직사각형이 되기 때문에 $\overrightarrow{AB} = \overrightarrow{AC} + \overrightarrow{AD}$ 가 됩니다. $B = \left(x, y\right)$ 라 하면, $C = \left(x, 0\right), D = \left(0, y\right)$ 입니다.


  자 이제, 점 $A$ 를 기준으로 점 $B$ , 점 $C$ , 점 $D$ 를 $\theta$ 만큼 시계 반대 방향으로 회전시킵니다. 회전시킨 후 점들은 각각 점 $B'$ , 점 $C'$ , 점 $D'$ 라고 합시다. 이때 $C' = \left(x \cos \theta, x \sin \theta \right), D' = \left(y \cos \left({\pi \over 2} + \theta \right), y \sin \left({\pi \over 2} + \theta \right) \right)$ 입니다. $\overrightarrow{AC'} + \overrightarrow{AD'} = \overrightarrow{AB'}$ 이므로

$$ \begin{align*} B' &= \left(x \cos \theta + y \cos \left({\pi \over 2} + \theta \right), x \sin \theta + y \sin \left({\pi \over 2} + \theta \right) \right) \\ &= \left( x \cos \theta - y \sin \theta, x \sin \theta + y \cos \theta \right) \end{align*} $$

이 됩니다.


  따라서 어떤 점의 좌표를 $\left(x, y\right)$ , 이를 $\theta$ 만큼 회전변환시킨 좌표를 $\left(x', y'\right)$ 라 하고, 이를 행렬로 정리해보면,

$$ \begin{pmatrix} x' \\ y' \end{pmatrix} = \begin{pmatrix} \cos \theta & - \sin \theta \\ \sin \theta & \cos \theta \end{pmatrix} \begin{pmatrix} x \\ y \end{pmatrix} $$

가 됩니다.


... 2차원에서 이렇게 증명(?)한 것을 토대로, 3차원으로 회전변환을 확대시키고 싶긴 한데 제가 기하를 못해서... 당장 머릿속으로는 유도하기가 쉽지가 않네요. 나중에 가능하면 해보겠습니다.


'수학, 과학 > 수학 이모저모' 카테고리의 다른 글

최단강하곡선 문제(Brachistochrone Problem)  (0) 2017.06.18
피보나치 수열 일반항 유도  (0) 2017.06.04
회전변환  (0) 2017.06.03
MathJax 사용하기  (0) 2017.05.28

원래는 이거 말고 다른 주제로 글을 쓸려고 했는데...MathJax가 저만 말썽인지, 다른 블로그에서 소개한 게 틀린 건지 제대로 안 되는 경우가 있어서 MathJax 사용법을 간단히 올려보려고 합니다.


일단 Tistroy 경우에는 수식을 입력하기 위해서 아래와 같이 수식입력 탭이 있습니다.


실제로 이를 이용하여 수식을 작성하면 이미지로 들어가기 때문에 아래와 같이 조금 못나게 수식이 보입니다. 게다가 이미지이기 때문에 확대하면 계단현상을 볼 수 있죠.


하지만 MathJax를 사용하여 이쁘게 수식을 랜더링하면 아래와 같이 이쁘게 나옵니다. 게다가 맘에 드는 랜더링 설정을 아래 수식을 우클릭해서 고를 수도 있습니다.


$$ \zeta \left( s \right) = \sum_{n=1}^{\infty} {{1 \over {n^s}}} $$


또한 이미지로 글자 사이에 수식을 넣을 때는 아래와 같이 별로 이쁘지 않습니다. 위치 조정하기도 귀찮을 뿐더러, 위치 조정을 해도 다른 글자들과 어울리지 않습니다. (저 같은 경우엔 이미지여서 뭔가 이질감이 느껴집니다.)


이 3 이상의 정수일 때, 을 만족하는 양의 정수 는 존재하지 않는다.


하지만 이것도 MathJax로 작성한다면?!?!


$n$이 3 이상의 정수일 때, $ x^n + y^n = z^n $을 만족하는 양의 정수 $x, y, z$는 존재하지 않는다.


크, 아릅답네요.


이렇게 좋은 MathJax를 쓰려면 아래 코드를 Tistory에서 관리-HTML/CSS 편집에 들어가셔서 HTML 코드에서 <head> 태그 밑에 넣어주시면 됩니다.


<script type="text/javascript" async
  src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML">
    MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}});
</script>


그리고 수식은 $$ TeX문법 $$(한 줄 전체를 차지하는 수식) 또는 $ TeX문법 $(다른 글자들과 같이 사용할 때)로 넣으시면 됩니다.



'수학, 과학 > 수학 이모저모' 카테고리의 다른 글

최단강하곡선 문제(Brachistochrone Problem)  (0) 2017.06.18
피보나치 수열 일반항 유도  (0) 2017.06.04
회전변환  (0) 2017.06.03
MathJax 사용하기  (0) 2017.05.28

+ Recent posts

티스토리 툴바