
수학은 움직이는거야! 미적분학은 1680년대에 등장한 매우 유용한 대수학의 한 분야로 독일의 수학자 '라이프니치'와 영국의 '뉴턴'이 각각 발견했다. 라이프니츠에게는 불행하게도 역사상 가장 위대한 수학자이며 과학자였던 뉴턴이 최초 발견자로 인정받게 되었다. 하지만 오늘날 세계인이 ...
youtu.be
시작점 A와 끝점 B에 대해 A에 가만히 놓은 물체가 B로 가는 가장 빠른 궤도는 무엇인가?
이 문제는 베르누이가 뉴턴을 겨냥해서 냈다고 알려진 문제로 최단강하선(Brachistochrone) 문제라고 부름
이 문제를 풀기 위해서는 변분법의 기본공식인 오일러-라그랑주 방정식을 알고 있어야 함
최단강하선 문제를 풀기 위해 위 방정식을 쓸거임
위 방정식이 뭔지 모르면 아래부터는 이해 못하니
아래를 이해하기 위해서 인터넷 검색이나 교과서 봐서 미리 변분법과 오일러-라그랑주 방정식을 알고 있어야 함
시작점부터 끝점까지 가로로 d, 세로로 h만큼 움직인다고 해서
좌표로 시작점 A(0, 0) B(d, h)로 정하여 x와 y의 관계식을 구하는 것이 목표로 함
유의할 점은 풀이를 쉽게 하기 위해서 중력의 방향을 +y방향으로 정했음 그림에서는 아래방향이 +y방향임
실제 xy평면에 곡선을 그린다면 위 아래로 반전시켜야 함, 아니면 위처럼 y축을 아래로 향하도록 그리거나
하여튼 [x, x+dx]의 미소구간에서 속력은 v=√(2gy)이고 길이는 ds=√(dx제곱+dy제곱)이라서 걸린 시간은 위처럼 됨
이제 미소구간에서 걸린 시간을 전부 적분으로 더하면 최소화 시킬 시간에 대한 범함수(functional) J가 만들어짐
위처럼 된다 이제 오일러-라그랑주 방정식에 때려박자
막상 계산하려니 까다롭다 근데 이 경우가 특수한 경우라서
이럴 때를 위한 벨트라미 항등식을 이용하면 된다 위키백과에 검색 ㄱ
위키백과를 보면 L[x, u(x), u'(x)]이 x에 대해 편미분한 값이 0이면 사용할 수 있다고 함
밑으로 더 보면 벨트라미 항등식의 응용에 최단강하선 예제를 보여줌
그럼 위키가 시키는대로만 하면 되겠다
이제 미분방정식을 풀어야 함
미분방정식을 푸는 법은 암기와 컨닝임 (또는 컴퓨터)
컨닝해서 알게된 위키에 나온 해를 대입해서 검증해보자
x에 상수 더해도 상관없으니까 x=A(θ-sinθ+B) 로 B가 추가될 수 있음
미분 방정식의 해가 맞구나 이제 시작점 (0,0)에 해당하는 θ를 찾자
y=0인 조건은 1-cosθ=0이니까 θ=2nπ임. 시작점을 θ=2nπ이라고 하면 B=-2nπ이고
B의 값은 그저 x를 평행이동시킬 뿐이니까 시작점에서는 θ_initial=0, 그리고 B=0이라 해도 됨
(d, h)를 지나도록 하려면
이제 y=(1-cosθ)/(θ-sinθ)와 y=h/d를 그려서 뉴턴 방법(Newton's method)으로 교점의 θ_final를 찾으면 그것이 끝점 B에 해당하는 θ이고
A(θ-sinθ)=d에 대입해서 A를 구할 수 있음 그럼 매개변수식으로 0=θ_initial ~ θ_final을 통해 최단강하선 궤도가 그려지겠지
여기까지 오니 재밌는 사실을 알았는데
하나는 최단강하선의 모양에 중력 가속도의 크기는 영향을 주지 않는다는 거고
또 하나는 h/d>0.2225 이면 사이클로이드가 1개의 궤도만 나오지만
h/d<0.2225 이면 교점 개수만큼 여러 궤도가 가능해 보임
근데 오일러-라그랑주 방정식은 최대/최소의 필요조건이지 충분조건은 아님
즉 최단강하곡선의 후보를 알려줄 뿐이니 직접 검증을 해봐야겠음
h=1m, d=5m, g=10m/s^2이라고 하면 h/d<0.2225라서 아래처럼 교점이 3개가 나옴
세 가지 경우 중 가장 짧은 것은 교점의 θ가 가장 작은 빨간색 교점의 경우임
눈으로 보기 위해 컴퓨터로 시뮬레이션 돌려봄
보면 T1, T2, T3 예측값이 시뮬레이션 값과 소수점 3자리까지 일치함
문제는 해결되었다
20대때 이런거 많이 했는데 ㅋ
라그랑주 방정식은 뉴턴보다 100년은 넘게 뒤에 나온 방식인데 뉴턴이 풀었었으므로 라그랑주 방정식을 알아야 풀수있다는 말은 모순임. 그리고 베르누이도 풀었을텐데 역시 라그랑주 방정식보다는 이전이고 뉴턴과 동시대임. 라그랑주 역학을 사용한 해당문제 풀이로 수정바람. 그리고 시뮬레이션 논할때는 소스코드 제시하며 할것.
그러긴한데 너무 어렵거든 새끼야ㅋㅋ
대직스