2009-05-08 3 views
23

.NET/C# 용 좋은 (잘 테스트 된, 완벽한 기능을 갖춘 이상적인 인터페이스가있는) 매트릭스 라이브러리를 찾고 있습니다. 내 주요 요구 사항은 여기가 무료 여야한다는 것이며 (이 경우 오픈 소스인지 여부는 특히 신경 쓰지 않습니다.) sparse matrix 작업을 지원하는 것이 좋습니다. 필수 요건은 모든 기본 동작 (예 : 곱셈, 전치, 역변환)뿐만 아니라 고유 값 & 고유 벡터를 찾는 것입니다. 고유 값 발견을위한 수학적 방법보다는 수치적인 방법, 특히 희소 행렬에 대한 Lanczos algorithm의 구현은 내가 다루고있는 행렬이 매우 큽니다 (10,000 이상). 광장으로, 또한 합리적으로 희박합니다. 말하자면, 나는 거기에 대해 조금만 물어볼 수 있습니다. 따라서 합리적으로 완전한 매트릭스 라이브러리에 대한 제안은 훌륭 할 것입니다..NET 용 Matrix 라이브러리

는 지금은 파이썬 등의 작업을 위해 하나 또는 두 개의 유용한 라이브러리 (즉 NumPy/SciPy)가 있는지 알고 있어요,하지만 .NET 불행하게도 지역에 부족한 것 같다.

내가 잠재적으로 사용될 수있는 .NET에 대한 다음 라이브러리, 켜져 검색하는 비트 :

그러나 나는이 라이브러리 나 다른 라이브러리를 사용하여 전혀 경험이 없었기 때문에 모든 사람을 적절하게 지명하십시오.) 여기있는 사람이 여러 가지 라이브러리에 대한 권장 사항, 특히 내 용도에 대한 적합성 및 일반적 경험에 대한 찬성/반대 의견을 토론 할 수 있다면 매우 감사하겠습니다.

MatLab 에의 접근은 언제나 선택 사항이지만 선호하지 않습니다. 행렬 수학을 프로그램과 직접 통합 할 수 있다면 훨씬 더 편리 할 것입니다.

답변

8

편집 :

확실히 거기에 내가 그것을 평가 마지막은 아니었지만 꽤 활동의가있다, 그래서 당신은 또한 (무료 및 오픈 소스) Math.NET Numerics을 고려해야합니다.

지금 살펴보면 새로운 버전을 완성했으며 스파 스 매트릭스 지원 기능을 추가 한 것으로 보입니다.


더 강력한 지원을 원할 경우 불행히도 .NET atm 용 상용 패키지를 구입해야합니다.

두 가지 기능이 풍부한 패키지가 있으며 두 가지 모두 매트릭스를 잘 지원합니다. Extreme Numerics은 훌륭하게 작동하며 몇 가지 아주 좋은 기능이 있습니다. 또한 IMSL Visual Numerics 수학 라이브러리에 관해 아주 좋은 것을 들었습니다.

+1

네가 네가 맞다고 의심하기 시작 했어. 상업용 패키지는 실제로 선택 사항이 아닙니다. 저는 대학생입니다. 그래도 권장 사항에 대해 감사드립니다. – Noldorin

+0

@ Noldorin : 제레미에게 극단적 인 숫자로 글을 써서 학생이면서 연구 라이센스를 제공 할 수 있는지 물어볼 것이고 상업적으로 사용되지는 않을 것입니다. 그것은 작은 회사이고, 주인은 상당히 친절하고 반응 적으로 보입니다. (그는 지원, 사전 판매 등을 위해 훌륭했습니다.) 상처받을 수 없습니다. ;) –

+0

@ Noldorin : dnAnalytics를 기억하고 추가했습니다. 아마 비영리적인 선택 일 것입니다. –

0

현재 없어진 Managed DirectX 라이브러리에는 일부 매트릭스가 지원됩니다.

그 후 Microsoft XNA에 랩핑되었지만 MDX Wikipedia articleSlimDXmight be okay 인 것을 권장합니다.

+0

불행히도, 크기가 4x4 인 행렬 만 지원한다는 점을 감안할 때 나에게 도움이되지는 않습니다. 행/열 1000 행렬을 처리 할 수있는 무언가가 필요하고 희소 계열을 효율적으로 처리하는 것이 바람직합니다 (예를 들어 곱셈과 관련하여). – Noldorin

2

나는 Mapack을 과거에 가지고 있었고 아주 좋았습니다.

비록 그것이 희소 행렬을 가지고 있다고는 생각하지 않지만 모든 기본적인 선형 대수 함수를 지원합니다.

+0

예, 희소 매트릭스에 대한 지원이없는 것 같습니다. 그래도 추천 해 주셔서 감사합니다. – Noldorin

1

대학교의 신경 네트워크 프로젝트에서 Mapack (COM 버전이 아닌 .Net 포트)을 사용했습니다. 나는 도서관의 훌륭한 세부 사항을 정확하게 기억할 수는 없지만, 내가 필요로하는 모든 것을했고, 사용하기가별로 부담스럽지 않았다.

+0

합의가 (적어도 2 개의 대답과 내가 다른 곳에서 읽은 바에 따르면) Mapack이 무료 라이브러리까지 갈 수있는 방법이라고 생각합니다. 완벽하지는 않지만. 저는 대학 프로젝트에 매트릭스 기능을 사용하고 있습니다. 물리 기반의 것이기는하지만 결과를 얻는 한 그 방법에 대해서는별로 중요하지 않습니다. 어쨌든 감사합니다. – Noldorin

2

다른 대안 : IMSL for .NET. CenterSpace에는 NMath 라이브러리가 있으며 이것을 사용하지 않았습니다.

+0

둘 다 상업적인 것 같습니다. 그들은 오히려 좋은 라이브러리처럼 보이기 때문에 수치 스럽습니다. – Noldorin

+0

@ Noldorin : .NET 공간에서 꽤 철저한 검색을 수행했습니다. 좋고 견고한 행렬 라이브러리는 모두 거의 상업적입니다 (최소한 2008 년 초). –

+0

@Reed : 예, 그게 전혀 놀랄 일도 아니에요. 어쨌든 말씀 드리겠습니다. Mapack 라이브러리를 사용하고 Lanczos 알고리즘을 구현하면 작업을 수행 할 수 있을지 궁금합니다. – Noldorin

1

(호스트 된 codeplex)은 비대칭 행렬의 고유 값과 고유 벡터를 계산하는 무료 패키지이지만 특별히 현재 희소 행렬을 특별히 처리하지 않습니다.

+0

제안 해 주셔서 감사합니다. 스파 스 매트릭스를 잘 처리 할 수 ​​있기 때문에 아마도 dnAnalytics를 사용할 것입니다.하지만이 점은 유념해야 할 유용한 범용 라이브러리와 같습니다. – Noldorin

0

.NET 및 Python과 관련하여 IronPython을 사용할 수 있습니다. 그러나 SciPy와 NumPy를 IronPython과 함께 사용하려면 Ironclad이 필요합니다.

3

ILNumerics을보십시오 : 우리는 확인해 있습니다. 오픈 소스 프로젝트로 오랜 역사를 지켜 왔으며 최근에는보다 안정적으로 지원하기 위해 상용 라이센스로 변경되었습니다. 나는 치우친하지만 여기에 짧은 기능 목록 제공 : 따라서

  • 더 나은 메모리 관리, ...
  • 훨씬 빠른 알고리즘
  • 는 선형 대수학에 대한
  • N-희미한 배열 클래스를 MKL을 사용, 유사한 구문 matlab에에
  • 3D 플롯은 모노에 대한
  • 지원 비트
  • 32/64에 대한 지원을 제어
  • Full feature list
관련 문제