펌) 윈도우즈 환경에서의 수치해석 프로그램 비교steemCreated with Sketch.

in #programming7 years ago

파이똥과 매쓰매티카는 써보지 않아서 추가하지 않았습니다.
듣기론 매쓰매티카는 속도가 매트랩에 비해 느리다고 하더군요. 그냥 wolfram alpha로 수식만 봅시다.
파이똥은 쓰게되면 추가하겠습니다.

매트랩 vs 옥타브 vs scilab vs fortran

  1. 가격
    매트랩 최신버전은 네트웤을 이용한 라이센스 인증 시스템이다. 물론 불법다운을 하면 무료로 쓸 수 있지만 정품을 쓰는 프린이가 됩시다.
    매트랩 학생버전은 $55면 할거 다 하고도 남는 패키지이다. 단 라이센스 기간은 "졸업할 때" 까지이다. 구매 후 교육기간? 뭐 그런걸 등록하여 졸업때까지만 사용 가능하고 그 후에는 다른 라이센스를 구매해야한다.
    +추가) 매트랩 라이센스는 일반, 교육, 학생, 가정 이렇게 4가지가 존재하는데 학생용 외에는 전부 견적서 문의를 해야한다.
    옥타브는 모두들 알다시피 오픈소스 무료이다.
    scilab또한 개인 사용은 무료이나 단체 혹은 기업은 잘 모르겠다.
    fortan또한 무료다. 무슨짓을 하던 무료다. 일단 무료다.

  2. 성능(속도)
    성능은 당연히 압도적인 힘으로 fortran이 체고조넘이다. power overwhelming!
    세간에서 성능비교를 C vs fortran으로 했을 때 fortran이 우세한 부분도 있고 C가 우세한 부분도 있다.
    그 다음으로 매트랩 되시겠다. 유료 프로그램답게 꾸준히 퍼포먼스가 상승하고 있으며 병렬 프로그래밍또한 지원한다고 들었다. 어지간한 수치해석 프로그램들과 성능비교시에 대부분 1위를 차지한다.
    scilab과 옥타브는 솔직히 비등비등하게 폐급이다. 너무 느리다. 너무 느려서 담배한대 피고 화장실 다녀와도 안되어 있는 경우가 있다.(물론 내용에 따라 다르지만 나의 분야에서는 그러하다)

  3. 개발속도
    개발속도의 체고조넘은 매트랩의 simulink를 압도할 수 있는 것이 많지 않다고 본다. 울프람의 매쓰매티카도 개발 용이함이 매트랩 뺨칠 수준으로 알고 있지만 결정적으로 프로그래밍에서 차이 난다고 알고있다. 매트랩은 문법 그대로 프로그래밍하지만 매쓰매티카는 뭐랄까... 설명하기 난해한 불편함이 있다. 매트랩은 패키지 유무에 따라서 개발속도가 더 빨라질 수 있는데 돈주고 사야한다. 시간은 금이라는 자본주의 마인드를 다시한번 일깨워준다.
    그 다음은 scilab 되시겠다. 나름 matlab의 simulink를 모방한 xmos라는 시스템이 있지만 matlab보다 부실하다. 그래도 비슷하게 구현한게 어디인가. 또한 matlab to scilab translator 기능을 제공하여 매트랩 소스를 그대로 사용 가능하게 해준다. 다만 일부? 다수?의 기능을 지원하지 않는 경우가 있는데 이건 패키지 고유 기능들인 것 같다.
    그 다음이 바로 옥타브시다. 옥타브의 최대 단점은 simulink같은 기능이 없으며, plot 프로그램의 부재이다. 개발 연구를 하다보면 plot과 상호 데이터 공유가 필요한 경우가 생긴다. 가령 그래프에서 찍은 점이 어느위치이며 그 값이 무엇이며 이 값에서 무슨 값이 연산되는지 등등이다. (ex rlocus) 허나 옥타브는 그누플롯을 사용하며 이 두개는 별도의 프로그램이다. 물론 그래프 포인트에서 데이터를 가져오는 기능을 구현하면 되며 이는 함수로도 제공되기는 하나 좌표정도만 나올 뿐 거기서 도출되는 값들은 알아서 짜야한다.
    +추가)옥타브는 매트랩과 거의 비슷한 문법에 함수명을 사용한다. 그래서 매트랩 소스를 옥타브로 변환하는 것은 그리 어려운 일이 아니다. 또한 분야별 패키지가 존재하고 업데이트 되기 때문에 smulink같은 시스템이 없는 것을 제외하면 2위감이다.
    마지막으로 fortran 되시겠다. 우선 빌드를 해야한다. 이는 상당히 번거로움을 가져다 주기도 한다. 다른 라이브러리와의 호환성을 맞추기 위하여 패키지 소스파일을 내가 쓰는 컴파일러로 빌드하여 적용해야하기도 한다. 이는 초기 셋팅에서 많은 난해함을 가져온다. 또한 당연하게 기본 plot제공이 안된다. 차라리 C++로 짜는 것이 나을 것 같다.

결론

돈은 많은데 시간도 없고 개발실력도 떨어진다 => 매트랩
돈은 없는데 시간은 많고 개발실력도 있다 => fortran (or C++) , 옥타브
돈은 없는데 시간은 많고 개발실력은 떨어진다 => scilab

학부때 배우는 수준에서는 scilab이나 octave만으로도 충분하다. 허나 그 이후에 석,박사 과정에 진입하면 도저히 쓸 수 없게된다.
windows10 bash에 octave 설치하고 xming으로 그래픽 띄워서 사용중인데 시뮬레이션 iter 100000번 돌리는데 4~5분 걸려서 교수님께 "내가 성능 어느정도 좋게 사준 것 같은데" 라는 소리를 들었다.

http://gall.dcinside.com/board/view/?id=programming&no=730024&page=1&exception_mode=recommend

Sort:  

재미있게 읽었습니다. ㅎ 저는 fortran을 사용해서 최적화 알고리즘을 짜는 연구를 하고 있습니다. ㅎㅎ 옥타브와 scilab은 써보지 않아서 궁금하네요.