함수를 재정의할 때 문제 in v.0.5

Julia v0.6 에서 해결되었다.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

ODE.jl을 사용하거나 DifferentialEquations.jl을 이용하여 ODE 를 시뮬레이션 할 때, 함수의 parameter를 바꿔가며 test하곤 한다. 그런데, 다음과 같이 작성을 하게되면 문제가 생긴다.

위 코드에서 dd 의 값을 변화시키면서 test를 할 경우에, dd값을 변화시켜도 반영이 되지 않는다. Julia를 종료했다가 restart해서 실행할 경우 반영이 되는데, 매번 껐다 켰다 하는데 시간 소요가 많이 생길 뿐만 아니라, 여러 개를 dd값을 바꾸면서 test 하는게 불가능해진다.

현재 버전인 v0.5에서 나타나는 문제인데, 나중에 해결이 될 것 같긴 하다.

이런 경우에 아래와 같이 작성하면 된다. 이 링크 참조.

 

함수 내부에서 parameter를 변경하면 redefine이 반영이 안 되는 것 같다.
관련해서 overwritingrecompilation에 관한 링크를 확인해 보는 것이 도움이 될 것이다.

parameter가 있는 함수에 관해서는 이 링크를 확인해 보는게 좋다.

 

ODE solver

주어진 ODE를 numerical simulation을 할 때 주로 Runge-Kutta method를 사용한다. 4th order RK method도 별로 복잡하지 않아서 그냥 코드로 짜서 돌리는 것도 어렵지 않다.
다만 Matlab의 경우에 for문이 겹쳐지는 상황이 되면 속도가 현저히 느려지기 때문에 ODE system에 따라서 vectorize를 잘 하는 요령이 필요하다.

다른 방법은 내장된 ODE solver를 이용하는 방법이 있다.

계속 읽기