파이썬 대 FORTRAN


17

FORTRAN 또는 Python 중 어느 것이 더 낫습니까? 그리고 두 경우 모두 Gnuplot이 필요하다고 생각합니다.

현재 Windows 컴퓨터에서 작업하고 있습니다.

Monte-Carlo 시뮬레이션, 수치 적분 및 미분, 분자 역학 등 물리 문제에 대한 수치 솔루션을 얻는 데 사용하고 싶습니다.

FORTRAN (믿습니다)과 Python을 모두 소개하는 계산 물리학 과정을 봤습니다. 하나를 시작한 다음 다른 하나를 배우려고하지만 어떤 전환이 가장 쉬운 지 모르겠습니다.

또한 어떤 컴파일러를 추천 하시겠습니까?

나에게 가장 기본적인 질문은 다음 중 하나입니다. 배우기 가장 쉬운 것, 가장 빠른 것, 가장 사용하기 쉬운 것, 가장 사용하기 쉬운 것 중 어느 것이 가장 많이 사용되는지 (따라서이 4 개의 비교)? 그리고 그 옆에서 가장 일반적으로 사용되는 (무료 또는 유료) 컴파일러는 무엇입니까? 나는 현재 오래된 노트북 (이전 인텔 듀얼 코어)을 리눅스로 변환하는 것을 고려하고 있습니다. 잘만되면 그것은 충분히 빠르다.

지금까지 답변을 주셔서 감사합니다! 내가 찾고있는 것과 일치하는 답변은 LKlevin 및 SAAD의 답변입니다.

C ++, Maple의 기본 사항을 알고 있으며 도움이된다면 MATLAB 및 Mathematica9를 거의 완전히 마스터합니다.


12
당신은 정말로 더 구체적이어야합니다. 이것은 "해머 나 스크루 드라이버가 더 낫다"고 묻는 것과 같습니다. scicomp.stackexchange.com/questions/11006 (Fortran 대신 C ++에 관한 것이지만 대부분의 포인트가 동일하게 적용되어야 함)을 살펴보십시오 .
Christian Clason

@ChristianClason, 페어 포인트 : p
Nick

편집 범위가 좁아지는 않지만 편집 해 주셔서 감사합니다. 위의 질문에 대한 답변으로 이미 제공된 것보다 더 많은 것을 말할 수 있는지 확실하지 않습니다.
Christian Clason

2
또한 컴파일러에 대한 질문은 별도의 문제이므로 별도의 질문이어야합니다. (그렇지 않으면 Fortran에 익숙하지만 Python에 관심이없는 사람들은 그것을 보지 못할 것입니다.) 일부 권장 사항은 이미 scicomp.stackexchange.com/questions/8617나와 있습니다.
Christian Clason

1
matlab을 알고 있다면 대부분의 수치 알고리즘을 구현하여 알고리즘을 배울 수 있지만 성능은 거의 항상 내장 matlab 루틴보다 좋지 않습니다. 여기에서 성능 요구 사항을 결정하고보다 효율적인 라이브러리 / 언어로 이동할 수 있습니다.
Godric Seer

답변:


29

학습의 용이성

Python과 Fortran은 비교적 배우기 쉬운 언어입니다. Python이 더 널리 사용되며 Fortran은 현재 수치 컴퓨팅의 "전문"언어로 간주되기 때문에 우수한 Fortran 학습 자료보다 우수한 Python 학습 자료를 찾는 것이 더 쉽습니다.

파이썬에서 포트란으로의 전환이 더 쉬울 것이라고 생각합니다. 파이썬은 해석 된 언어이므로 첫 프로그램을 실행하는 데 걸리는 단계의 수는 print("Hello, world!")Fortran ( "Hello world"프로그램 작성, 컴파일, 실행) 보다 작습니다 (인터프리터 열기 , 프롬프트 입력 ). 또한 Fortran보다 Python에서 객체 지향 스타일을 가르치는 데 더 좋은 자료가 있으며 GitHub에서 Fortran 코드보다 더 많은 Python 코드를 사용할 수 있다고 생각합니다.

Windows에서 시작 및 실행

파이썬 설치는 덜 고통 스럽습니다. 사용 가능한 Windows 배포판이 있습니다. Anaconda 또는 Enthought Canopy와 같은 과학적 배포판을 사용하는 것이 좋습니다. 실제로 컴파일러 자체는 없습니다. 통역사가 그 역할을 수행합니다. 사용 가능한 더 많은 숫자 라이브러리가 있으며 C, C ++ 및 Fortran과 잘 상호 작용하기 때문에 CPython 기반 인터프리터를 사용하려고합니다. 다른 인터프리터 구현에는 Jython 및 PyPy가 포함됩니다.

Windows 컴퓨터에서 Fortran 컴파일러를 설치하면 성 가실 것입니다. 일반적인 명령 행 컴파일러는 gfortran, ifort (Intel, 무료, 개인 비용, 기타 비용) 및 pgfortran (PGI, 무료 평가판 버전, 비용)과 같은 프로그램입니다. 이러한 컴파일러를 설치하려면 Cygwin 또는 MinGW와 같은 일종의 UNIX / POSIX 유형 호환성 계층을 설치해야합니다. 작업하기가 어려웠지만 일부 사람들은 그 워크 플로를 좋아합니다. Visual Fortran과 같은 GUI를 사용하여 컴파일러를 설치할 수도 있습니다 (다시 라이센스 비용을 지불해야 함).

리눅스에서는 파이썬과 컴파일러를 설치하는 것이 더 쉬울 것이다. 여전히 Anaconda 또는 Enthought Canopy를 Python 배포로 설치합니다.

속도 : 생산성 대 성능 균형

Python (또는 MATLAB, Mathematica, Maple 또는 기타 해석 된 언어)을 사용하면 생산성 향상을 포기할 수 있습니다. Fortran (또는 C ++, C 또는 기타 컴파일 된 언어)과 비교하여 동일한 작업을 수행하기 위해 더 적은 수의 코드 줄을 작성하므로 일반적으로 작업 솔루션을 얻는 데 시간이 덜 걸립니다.

파이썬 사용에 대한 효과적인 성능 저하는 다양하며 계산 집약적 인 작업을 컴파일 된 언어로 위임하여 완화됩니다. MATLAB은 비슷한 기능을 수행합니다. MATLAB에서 행렬 곱셈을 수행 할 때 BLAS를 호출합니다. 성능 불이익은 사실상 제로이므로 고성능을 얻기 위해 Fortran, C 또는 C ++을 작성할 필요가 없습니다. 파이썬에서도 비슷한 상황이 존재합니다. 라이브러리 (예 : NumPy, SciPy, petsc4py, FEniCS의 dolfin, PyClaw)를 사용할 수있는 경우 모든 코드를 Python으로 작성하고 계산 성능이 우수하므로 (10-40 %의 패널티) 집중적 인 부분은 빠르게 컴파일 된 언어 라이브러리를 호출하는 것입니다. 그러나 순수한 파이썬으로 모든 것을 작성한다면 성능 저하는 100-1000x의 요소가 될 것입니다. 파이썬을 사용하고 커스텀을 포함시켜야한다면 계산 집약적 인 루틴의 경우 C, C ++ 또는 Fortran과 같은 컴파일 된 언어로 해당 부분을 작성한 다음 Python 인터페이스로 래핑하는 것이 좋습니다. 이 프로세스를 용이하게하는 라이브러리 (Cython 및 f2py 등)와 자습서가 있습니다. 일반적으로 번거롭지 않습니다.

사용 범위

파이썬은 전반적으로 범용 언어로 널리 사용됩니다. Fortran은 주로 수치 및 과학 컴퓨팅으로 제한되며 주로 해당 도메인의 사용자를 위해 C 및 C ++와 경쟁합니다.

계산 과학에서 파이썬은 일반적으로 언급 한 성능 불이익으로 인해 컴파일 된 언어와 직접 경쟁하지 않습니다. 수치 집약적 인 알고리즘 프로토 타이핑, 데이터 처리 및 시각화와 같이 생산성이 높고 성능이 중요한 경우에는 Python을 사용합니다. 알고리즘과 응용 프로그램 디자인이 무엇인지 잘 알고 있고 코드를 작성하고 디버깅하는 데 더 많은 시간을 할애하고 성능이 가장 중요한 경우 포트란 (또는 다른 컴파일 된 언어)을 사용합니다. (예를 들어, 성능은 시뮬레이션 프로세스에서 제한적인 단계이거나 연구에서 제공 할 수있는 핵심 단계입니다.) 일반적인 전략은 Python과 컴파일 된 언어 (일반적으로 C 또는 C ++이지만 Fortran도 사용됨)를 혼합하는 것입니다. 코드의 성능에 가장 민감한 부분에만 컴파일 된 언어를 사용하십시오. 물론 개발 비용은 단일 언어의 프로그램보다 두 가지 언어의 프로그램을 작성하고 디버그하기가 더 어렵습니다.

병렬 처리 측면에서 현재 MPI-3 (MPI-3)에는 기본 포트란 및 C 바인딩이 있습니다. MPI-2 표준에는 기본 C ++ 바인딩이 있지만 MPI-3에는 없습니다. C 바인딩을 사용해야합니다. mpi4py와 같은 타사 MPI 바인딩이 있습니다. 나는 mpi4py를 사용했다; 잘 작동하고 사용하기 쉽습니다. 대규모 병렬 처리 (수만 개의 코어)의 경우 Python 모듈을 동적으로로드하는 것과 같은 일이 순진한 방식으로 수행되면 대규모로 엉덩이에 물릴 수 있으므로 컴파일 된 언어를 사용하고 싶을 것입니다. PyClaw 개발자가 시연 한 것처럼 병목 현상을 피할 수있는 방법이 있지만 피하는 것이 더 간단합니다.

개인적인 의견

저는 Fortran 90/95에서 약 10 년의 경험을 가지고 있으며 Fortran 2003에서도 프로그래밍했습니다. 파이썬에서 약 5 년의 프로그래밍 경험이 있습니다. 솔직히 말하면 파이썬에서 더 많은 일을하기 때문에 나는 포트란을 사용하는 것보다 훨씬 더 파이썬을 사용합니다. 내가해야 할 대부분의 작업에는 주요 슈퍼 컴퓨팅 리소스가 필요하지 않으며 일반적으로 다른 언어로 다시 개발할 가치가 없으므로 Python은 ODE 및 PDE를 해결하는 데 적합합니다. 컴파일 된 언어를 사용해야하는 경우 C, C ++ 또는 Fortran을 순서대로 사용합니다.

내가 본 Fortran 코드의 대부분은 추악한 데, 주로 대부분의 컴퓨터 과학 커뮤니티가 지난 30 년 동안 소프트웨어 엔지니어가 발견 한 모범 사례를 인식하지 못하거나 회피하는 것처럼 보이기 때문입니다. 다시 말해 : 포트란에는 좋은 단위 테스트 프레임 워크가 없습니다. (내가 찾은 가장 좋은 것은 NASA의 FUnit이며 더 이상 유지되지 않습니다.) 몇 가지 좋은 Python 단위 테스트 프레임 워크, 좋은 Python 문서 생성기 및 일반적으로 좋은 프로그래밍 실습에 대한 더 좋은 예가 있습니다.


아주 좋고 완전한 대답 :). python-compiler가 이미 존재하는 Linux를 어제 설치했습니다. 이제 Linux와 Windows 시스템간에 파일을 공유하는 쉬운 방법이 있는지 궁금합니다. 스틱을 사용하여 데이터를 전송할 때마다 Windows 및 Linux 시스템 모두 stich의 특정 부분 (NFTS 형식으로 형식화 됨)을 무시합니다.
Nick

그리고 마지막 문제는 FAT32 형식을 사용하여 해결되었습니다 (최소한).
Nick

주의 : FAT32는 최대 파일 크기가 제한되어 있습니다.
meawoppl

@ Meawoppl, 리눅스와 Windows간에 파일을 교환하는 더 편리한 방법이 있습니까? 아마도 dropbox? 하드웨어 기반 솔루션도 있습니까?
Nick

파일을 4GB 이하로 유지하십시오 : P 정말, 좋은 해결책을 모르겠습니다. 파일 이름 규칙에는 약간의 더러움이 있습니다. 나는 M $를 꽤 슬픈 얼굴로 만든 <3.txt 파일의 이름을 지정하여 일부 창 지원을 한 번 깨뜨린 것을 기억합니다. 리눅스에서의 NTFS 지원은 지금은 꽤 좋지만, OSX에서는 전혀 문제가되지 않습니다. 나는 우리가 지금까지이 문제를 해결할 것이라고 생각했다.
meawoppl

7

Fortan에서 멀리 떨어져 있거나 필요한 경우 합리적으로 새로운 버전 (77이 아닌 2003)을 사용하십시오. 많은 물리 소프트웨어 (특히 몬테카를로 시뮬레이션)가 Fortran으로 작성되었습니다. 프로젝트는 원래 80 년대에 시작 되었기 때문입니다.

python과 Fortran은 매우 다른 언어이며, 사용해야하는 언어는 매우 다릅니다. 파이썬은 높은 수준이며 일반적으로 그렇게 빠르지 않습니다 (Fortran & C ++와 비교). 그것이 너무 많이 사용되는 이유는 대부분의 일에 대해 충분히 빠르며 많은 (일부는 아님) 할 일에 대해 우수한 (포트란 기반) 라이브러리를 가지고 있기 때문입니다. 또한 플로팅을위한 뛰어난 Matplotlib (GNUplot이 필요 없음)을 가지고 있으며 Cython과 같은 것들을 사용하여 값 비싼 비트를 작성함으로써 상당한 성능을 얻을 수 있습니다. 그러나 Fortran이나 C ++만큼 빠르지는 않지만 병렬 처리는 끔찍하므로 고성능 수치 컴퓨팅에는 적합하지 않습니다. 그러나 Fortran 또는 C 라이브러리를 호출하여 원하는 것을 처리 할 수 ​​있다면

포트란은 다소 낮은 수준의 언어입니다. 숫자의 경우 라이브러리 지원은 놀랍게도 좋지만 실수로 잘못된 배열 크기를 메소드에 전달하는 등 피할 수있는 버그가 너무 적습니다. 이러한 버그는 찾기 어렵고 전혀 눈치 채지 못할 수도 있습니다. 날 믿어, 나는 Fortran 77을 쓰는 데 꽤 오랜 시간을 보냈다.

C ++은 (내 겸손한 견해로는) 행복한 매체입니다. Armadillo 또는 Eigen과 같은 라이브러리를 사용하면 낮은 수준의 성능을 얻는 동시에 상당히 높은 수준의 코딩 스타일로 벗어날 수 있습니다.

성능면에서 지금은 숫자 파이썬의 유일한 선택은 CPython입니다. WinPython 과 같은 것을 다운로드 하면 필요한 대부분의 라이브러리도 얻을 수 있습니다.

창문에 포트란의 경우 상황이 조금 더 어려워집니다. 리눅스로 전환하고 gfortran 또는 Intels ifort 컴파일러를 사용하는 것이 좋습니다. Ifort는 내 경험에서 숫자 코드의 속도가 빠르지 만 상업용이 아닌 비학 업적 용도로는 무료입니다.

요약하자면, 정말로 무거운 시뮬레이션을 실행하고 싶지 않다면, 파이썬은 훨씬 더 쉬운 선택이며 훨씬 더 즐겁습니다. 또한 대부분의 학생 수준 프로젝트에 충분히 빠릅니다. 더 나은 성능이 필요하면 이미 작성된 라이브러리의 낭비 량을 살펴보고 언어를 결정하십시오. 처음부터 새로 작성해야하는 경우 C ++을 사용하십시오.

또한 경고 : 물리학자가 작성한 대부분의 코드는 아마도 끔찍합니다. 물리학자는 프로그래밍이 쉽다고 가정하는 경향이 있고 수학에서 사용할 수있는 것과 동일한 엄격 성을 요구하지 않기 때문일 것입니다. 수업을 들거나 프로그래밍을 가르치는 책을 구입하십시오.

면책 조항 : 저는 포트란 77 기반의 몬테 카를로 코드로 꽤 오랜 시간을 보내고 현재 모든 데이터 처리를 파이썬으로 수행하는 물리학 자입니다.


병렬화와 관련하여 연구원들은 병렬 효율성이 우수한 수만 개의 코어에서 Python을 병렬로 성공적으로 사용했습니다. (예를 들어, PyClaw는 65,000 개 이상의 코어 인 Shaheen에서 실행되었습니다.)
Geoff Oxberry

1
글쎄, 가능하지만 병렬 부분이 CPython 외부에서 발생하도록하는 것만으로도 상당한 노력입니다. PyClaw (PETSc)의 병렬 부분은 예를 들어 C로 작성됩니다. 또 다른 대안은 CPython의 여러 인스턴스를 실행하는 것이지만 정확하게는 아닙니다.
LKlevin

대부분의 병렬 응용 프로그램은 사소하지 않습니다. "[Python] 병렬화는 상당히 끔찍하므로 고성능 수치 계산에 적합하지 않습니다." 순수한 파이썬으로 고성능 코드를 작성하는 사람은 없습니다. 이 결정에 대한 추론은 병렬 처리와 관련이 없으며, 적절하게 사용되는 한 고성능 컴퓨팅에서 인터페이스 언어로 Python을 사용하는 것을 무효화하지 않습니다. 귀하의 인용문은 병렬 처리, 고성능 및 해석되는 언어의 문제를 다루는 밀짚 꾼입니다. 유능한 누구도 그런 응용 프로그램을 디자인하지 않았습니다.
제프 옥스 베리

나는 파이썬이 거의 모든 목적을위한 훌륭한 인터페이스 언어라는 데 동의하지만, 그것은 질문에서 멀어지고 있습니다. 대부분의 응용 프로그램은 사소한 것이 아니며, 여기서 문제는 사소한 것을 포함하여 모든 병렬화 사례가 파이썬에서 사소하지 않다는 것입니다. Numpy 또는 Cython 작업과 관련하여 문제가 잘 설명되어 있다면 이는 성가신 일이 될 수 있습니다. 아니요, 65000 코어 클러스터에서는이 기능을 사용하지 않지만 100 코어에서 2 배의 성능 저하를 허용 할 수 있습니다.
LKlevin

Wtran 병렬 처리, Fortran의 좋은 점은 MPI / OpenMP 외에 현재 표준의 일부인 Co-array도 있다는 것입니다. 예 :이 jolts.stanford.edu/72/…
stali

7

파이썬은 매우 느리고 고급 언어입니다. 빠른 숫자 처리를 위해서는 C / C ++와 같은 저수준 언어로 주요 컴퓨팅 커널을 작성해야합니다. 즉, 이제는 하나 이상의 언어를 배워야합니다. 또한 디버깅 / 설치 / 유지 보수 등과 관련된 추가 두통을 처리해야합니다. 대부분의 사람들은 파이썬을 구문 설탕으로 사용하여 C / C ++의 짧은 출현을 숨 깁니다.

Modern Fortran (90 이상)은 거의 MATLAB과 유사한 구문으로 빠르고 높은 수준입니다. 따라서 다음과 같은 작업을 수행 할 수 있습니다.

k=k+matmul(transpose(B),matmul(D,B))*weight(i)*detj

또는

indx(:)=indxmap(indx(:),2)

또는 더 간단한

indx=indxmap(indx,2)

기타

리눅스에는 수많은 무료 포트란 컴파일러가 있습니다. 나는 사용한다

  1. GCC
  2. 솔라리스 스튜디오
  3. Open64
  4. 인텔 (비 상업용)

Macs / OSX를 사용하지 않지만 무료 PGI가 있습니다.

FORTRAN 77을 사용하지 마십시오. 아무도 새 코드를 작성하는 데 사용하지 않습니다.

면책 조항 : 필자는 개인적으로 작은 자체 구조화되지 않은 FE 코드 (PETSc로 구축)를 작성하기 위해 Python을 보았지만 관련된 작업 / 코딩 양은 단순한 Fortran 95를 쓰는 것 이상이었습니다.


1
이를 위해 Fortran 2003에서 상당히 심각한 객체 지향 프로그래밍을 수행 할 수 있다고 덧붙였습니다. 예를 들어이 안내서를 참조하십시오 . 나는 그것을 내 자신의 코드에서 많이 사용하고 있으며 내가하고 싶은 일에 매우 효과적이었습니다. 많은 사람들이 그것을 피하라고 말할 것입니다. 나는 열린 마음을 유지한다고 말합니다. 나는 확실히한다.
Daniel Shapero

4

파이썬 은 그리드 생성, 배열 계산 및 데이터 구조 처리 ( numpypandas )뿐만 아니라 matplotlib를 사용한 데이터 시각화와 같이 잘 문서화 된 다목적 패키지로 전체 시뮬레이션 분석에 매우 실용적입니다 . 결과 파일이 큰 복잡한 시뮬레이션의 경우 VTK 패키지로 작업하는 것이 훨씬 좋습니다. VTK 패키지를 사용하면 고급 오픈 소스 응용 프로그램 (예 : Paraview 또는 Visit)에서 데이터를 읽을 수 있습니다.

Fortran 은 한동안 시뮬레이션에서 다른 도메인에 대해 선호되는 언어였습니다. 쉽게 읽을 수 있습니다 (Python 코드보다 읽기 쉽습니다). 배열 처리는 언어의 장점 중 하나이며 모든 종류의 배열 연산을 정의하고 사용하기가 매우 쉽습니다. 디버깅 할 때도 편리합니다.

비교는 성능으로 떨어 집니다 : 컴파일 된 언어 (C ++ 및 Fortran 90)를 사용하여 대규모 계산을 수행했지만 Python에서는 결코 사용하지 않았습니다. 또 다른 스레드는 해석 및 컴파일 된 언어에 대한 성능 정보를 제공합니다. 컴퓨터 프로그래밍에서 학사 과정을 강의 할 때 어떤 언어를 사용해야합니까?

개인적으로 저는 일반적으로 사후 처리를 위해 일반적으로 Python으로 작업하는 것을 좋아합니다. 파이썬 프로그래밍은 재미있다!


1
성능은 거의 항상 중요합니다. 성능에 대한 관심 부족은 사람들이 이메일을 확인하고 웹을 서핑하기 위해 16Gb의 RAM을 가진 8 개의 코어가 필요한 이유입니다.
stali

나는 다른 사람들의 파이썬 코드를 읽어야하는 불행을 겪었습니다. 나는 py 코드를 읽기 쉬운 것으로 분류하지 않을 것이다.
Biswajit Banerjee

@stali : 전적으로 동의합니다
SAAD

1
@ BiswajitBanerjee : 어떤 언어로도 복잡한 코드를 작성하는 것은 불가능하지 않지만, 적어도 어떤 함수의 입력과 출력을 쉽게 식별 할 수 있습니다. 여기서 Fortran이 끔찍한 곳입니다! :)
SAAD

3

Python을 사용하면 Gnuplot이 필요하지 않습니다. 예를 들어 matplotlib 및 / 또는 IPython 셸을 사용할 수 있습니다. IPython은 % pylab 모드에서 MATLAB에서 사용할 수있는 것과 거의 같은 플로팅 명령을 제공하는 대화식 Python 셸입니다.

과학적 계산은 향후 5 년 안에 MATLAB에서 Python으로 크게 확장 될 가능성이 높습니다.


Gnuplot의 장점 중 하나는 거의 항상 Linux 시스템 (클러스터 / 서버 등)에 설치되며 빠른 / 더러운 viz에 매우 유용하다는 것입니다. vi의 vi와 같습니다.
stali

1

MATLAB을 계속 사용하면 빠른 수학 라이브러리를 호출하므로 Windows에서 FORTRAN으로 전환하면 성능에 큰 차이가 없습니다. 동시에 MATLAB에는 결과보고 및 코드 실행을위한 더 나은 인프라가 있습니다. MATLAB의 단점은 비용입니다. FORTRAN은 기본적으로 무료이며 많은 무료 라이브러리가 있습니다.

FORTRAN은 배우고 프로그래밍을 시작하기가 매우 쉽습니다. 기본적으로 이름에서 알 수 있듯이 수식을 코드로 변환하여 읽고 이해하기 쉽습니다. 그래서 물리학 자들은 옛날에 그것을 많이 사용했습니다. 코드의 대부분이 물리 문제를 해결하는 것 (GUI를 만들거나 다른 멋진 것들을하지 않는 것)이라면, FORTRAN 코드는 유지하기가 쉬울 것입니다.

프로그래밍을 즐기는 경우에만 Python을 권장합니다. 물리 문제에 대한 솔루션을 코딩 할 때 솔루션의 일부를 프로그래밍하는 것을 즐기십니까? 그렇다면 언어가 MATLAB보다 훨씬 낫기 때문에 Python이 옵션입니다.


2
MATLAB에서 Fortran으로 전환 할 때의 성능 차이에 대한 귀하의 진술은 일반적으로 사실이 아닙니다. 포트란은 배열이 자연스럽게 좋은 데이터 구조 인 코드를 작성하고 I / O를 처리하는 방법에 따라 생활 할 수 있고 필요한 라이브러리가있는 경우에 유용합니다. 파이썬의 숫자 라이브러리는 MATLAB과 기능면에서 겹치므로 MATLAB 인터페이스와 C 코드보다 Python 인터페이스를 C 코드에 작성하는 것이 더 쉽다는 것을 알았습니다.
제프 옥스 베리

때때로 당신은 큰 차이를 참조하십시오. 최근 Matlab (내부 bvp6c 패키지 사용)에서 Fortran 2008 (내부 bvp_solver 패키지 사용)까지 물리 시뮬레이션 프로그램을 다시 작성했으며, 알고리즘을 변경하지 않았지만 스위치 실행 후 실행 시간이 1.4 %로 줄었습니다. 또는 프로그램의 전체 구조. 수렴하기 위해 데이터 포인트 당 ~ 3.5 일이 소요되었던 시뮬레이션의 경우 이는 매우 눈에 띄게 개선되었습니다.
jabirali
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.