지금까지 온라인 리서치에서 다음을 수집했습니다.
Armadillo 를 조금 사용 하고 인터페이스가 직관적이라는 것을 알았으며 Ubuntu의 바이너리 패키지를 쉽게 찾을 수있었습니다 (그리고 다른 Linux 배포판을 가정하고 있습니다). 소스에서 컴파일하지 않았지만 너무 어렵지 않을 것이라는 희망이 있습니다. 그것은 대부분의 설계 기준을 충족하며 밀도가 높은 선형 대수를 사용합니다. LAPACK 또는 MKL 루틴을 호출 할 수 있습니다. 일반적으로 Armadillo를 컴파일 할 필요는 없습니다. 순수한 템플릿 기반 라이브러리입니다. 헤더 만 포함하고 BLAS / LAPACK 또는 MKL 등에 대한 링크 만 포함하면됩니다.
나는 Eigen에 대해 좋은 것을 들었지만 그것을 사용하지 않았습니다. 그것은 빠른 주장 , 템플릿을 사용하고, 조밀 한 선형 대수를 지원합니다. LAPACK 또는 BLAS를 종속성으로 사용하지 않지만 LAPACK이 할 수있는 모든 작업 (및 LAPACK이 할 수없는 일)을 수행 할 수있는 것으로 보입니다. 많은 프로젝트가 유망한 Eigen을 사용합니다. 우분투 용 바이너리 패키지가 있지만 헤더 전용 라이브러리로는 다른 곳에서도 사용하기가 쉽지 않습니다.
매트릭스 템플릿 라이브러리의 버전 4는 유망보고, 템플릿을 사용합니다. 고밀도 및 희소 선형 대수를 모두 지원 하며 희소 솔버로 UMFPACK 을 호출 할 수 있습니다 . 웹 사이트에서 기능이 다소 명확하지 않습니다. 웹 사이트에서 다운로드 할 수있는 Ubuntu 용 바이너리 패키지가 있습니다.
Argonne National Laboratory의 팀이 작성한 PETSc 는 희박하고 밀도가 높은 선형 솔버에 액세스 할 수 있으므로 매트릭스 라이브러리로 작동 할 수 있다고 가정합니다. C로 작성되었지만 C ++ 바인딩이 있지만 C ++에서 C를 호출해도 아무런 문제가 없습니다. 문서는 엄청나게 철저합니다. 이 패키지는 내가 지금하고 싶은 일 (혼합 정수 선형 프로그램을 설정하기위한 행렬 곱셈 및 인덱싱)에 약간 과잉이지만, 나에게 또는 다른 요구가있는 다른 사람들에게 매트릭스 형식으로 유용 할 수 있습니다 나보다.
Sandia National Laboratory의 팀이 작성한 Trilinos 는 Epetra 구성 요소를 통해 밀도가 높고 희소 행렬을위한 객체 지향 C ++ 인터페이스를 제공하고 Tpetra 구성 요소를 통해 밀도가 높고 희소 행렬을위한 템플릿 인터페이스를 제공합니다. 또한 선형 솔버 및 고유 솔버 기능을 제공하는 구성 요소가 있습니다. 이 문서는 PETSc만큼 세련되거나 눈에 띄지 않는 것 같습니다. Trilinos는 PETSc의 Sandia 아날로그처럼 보입니다. PETSc는 일부 Trilinos 솔버를 호출 할 수 있습니다. Trilinos 용 바이너리는 Linux에서 사용할 수 있습니다.
Blitz 는 Linux 바이너리가있는 C ++ 객체 지향 라이브러리입니다. 메일 링리스트가 활성화되어 있지만 적극적으로 관리되지 않는 것 같습니다 (2012-06-29 : 새로운 버전이 어제 등장했습니다!). BLAS를 넘어서 수치 선형 대수의 방식으로 많은 일을하지 않는 것처럼 보이며 밀도가 높은 행렬 라이브러리처럼 보입니다. 템플릿을 사용합니다.
Boost :: uBLAS 는 C ++ 객체 지향 라이브러리이며 Boost 프로젝트의 일부입니다. 템플릿 및 조밀 한 숫자 선형 대수를 지원합니다. 빠르지 않다고 들었습니다.
템플릿 수치 Toolkit은 NIST에 의해 개발 된 C ++ 객체 지향 라이브러리입니다. 필자 Roldan Pozo는 때때로 패치를 제공하는 것으로 보이지만 더 이상 활발하게 개발되지 않는 것 같습니다 (마지막 업데이트는 2010 년). 고밀도 선형 대수에 중점을두고 일부 기본 행렬 분해 및 고유 값 솔버를위한 인터페이스를 제공합니다.
Jack Poulson이 개발 한 Elemental 은 FLAME 과 유사한 스타일로 작성된 분산 메모리 (병렬) 고밀도 선형 대수 소프트웨어 패키지입니다 . 프로젝트의 기능 및 배경 목록은 해당 설명서를 참조하십시오 . FLAME 자체라는 순차 및 공유 메모리 밀도 선형 대수에 대한 관련 라이브러리가 libflame 객체 지향 C. Libflame에 기록 될 것으로 보인다, LAPACK처럼 많이 보이지만, 더 나은 표기법 알고리즘을 기본 빠르고 수치의 개발을 만들기 위해 선형 대수 라이브러리는 더 많은 과학과 흑인 예술이 아닙니다.
목록에 추가 할 수있는 다른 라이브러리가 있습니다. 희소 선형 대수 패키지를 "매트릭스 라이브러리"로 계산하는 경우 C에서 가장 잘 알고 있는 것은 객체 지향 스타일로 프로그래밍 된 SuiteSparse 입니다. 나는 SuiteSparse를 사용했고 꽤 쉽게 찾을 수 있다는 것을 알았습니다. 희소 문제를 작고 밀도가 높은 선형 대수 하위 문제로 분해하는 일부 알고리즘의 경우 BLAS 및 LAPACK에 의존합니다. 이 패키지의 수석 저자 인 팀 데이비스는 대단히 도움이되고 만능인입니다.
하웰 서브 루틴 라이브러리는 자신의 스파 스 선형 대수학 루틴으로 유명하며, 당신이 양식을 작성하고 다운로드 할 각 파일에 대해 전자 메일을 수신이 과정을 통과해야하지만, 학문적 사용자를위한 무료입니다. 서브 루틴에는 종종 종속성이 있으므로 하나의 솔버를 사용하려면 5-6 개의 파일을 다운로드해야 할 수 있으며 특히 양식 승인이 즉각적이지 않기 때문에 프로세스가 다소 지루해질 수 있습니다.
다른 희소 선형 대수 솔버도 있지만, 내가 알 수있는 한 MUMPS 및 기타 패키지는 대부분 선형 시스템의 솔루션에 중점을두고 있으며 선형 시스템을 해결하는 것이 가장 걱정되는 부분입니다. (나중에, 그 기능이 필요할 것이며, 다른 사람들에게 유용 할 수도 있습니다.)