direction field 그리기

first-order differential equation의 solution을 시각적으로 표현하는 것이 바로 direction field이다. 이걸 손으로 그리려다가 컴퓨터로 그리면 좋겠다는 생각이 들었는데, 생각외로 꽤 다양한 방법을 동원할 수 있었다. 여러가지로 검색한 결과를 정리해서 이곳에 기록한다.

먼저 maple을 이용하여 그리기. maple은 DEplot이라는 함수를 제공한다. 역시 상용프로그램이라 그런지 함수가 많군. ㅎㅎ 아래 그림은 미분방정식 \frac{dy}{dt} = -4\left( 1-\frac{y}{2} \right)\left( 1- \frac{y}{5} \right) y 의 direction field를 그린 것이다.

아래와 같이 초기값도 지정해줄 수 있다. 아래 그림은 미분방정식 \frac{dy}{dt} = y-t 를 그린 것이다.

다음은 sage를 이용하여 그리기. 좀 검색해봤는데, maxima에 direction field를 그리는 명령어가 있어서 그 명령어를 이용하여 그리는 방법이 있었지만, 외부 명령어로 그리니 외부 컴퓨터가 브라우저로 접속하여 그리니 로컬 컴퓨터에 결과가 출력되는 이상한 현상이 발생했다. 그래서 외부 명령어가 아닌 직접 sage로 그리려면 직접 선을 그리는 방법을 쓸 수 밖에 없는 듯 하다. 마찬가지로 \frac{dy}{dt} = y-t 를 그린 것이다.

아이패드로도 그릴 수 있는데, 일전에 소개SpaceTime을 이용할 수 있다. 코드의 원리는 sage와 동일하다. \frac{dy}{dt} = -\left( 1-\frac{y}{2} \right)\left( 1- \frac{y}{5} \right) y를 그린 것이다.

터치스크린이니 만큼 출력된 direction field를 손가락으로 움직여서 확대 및 이동을 할 수 있다. 오호. ㅋ

maple에서는 parametric도 그리기가 가능하다. Lotka–Volterra equation을 그리면 다음과 같다.

restart; with(DEtools): with(plots):
deq := [ diff(x(t),t)= 0.6*x(t) - 0.02*x(t)*y(t),diff(y(t),t)= -0.4*y(t) + 0.001*x(t)*y(t) ]:
DEplot( deq, [x(t),y(t)],t= 0..20,  [[x(0)=500,y(0)=10]], stepsize=.02, arrows = small, color = coral, linecolor= sin(t*Pi/3), title=`Lotka-Volterra`, thickness = 1);

DEplot의 자세한 옵션은 여기여기를 참조할 것.

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중