2010-12-01 2 views
8

현재 커다란 스파 스 선형 대수학 문제에 대한 C++ 기반 라이브러리를 작업 중입니다. (그렇습니다. 많은 라이브러리가 존재한다는 것을 알고 있습니다. 반복 솔버, 스파 스 저장 컨테이너 등).반복 선형 솔버에 대한 테스트 행렬/시스템을 찾고 있습니다.

저는 다른 프로그래밍 프로젝트 내에서 내 솔버를 사용하고 있으며 내 문제가 아닌 문제에 대한 솔버를 테스트하고 싶습니다. 우선, 나는 긍정적 인 명확한 대칭 스파 스 시스템에 대한 테스트를 찾고있다.

Matrix Market 말했다되고 그건 UF Sparse Matrix Collection

, 나는 아직 전체 시스템 - 시스템 매트릭스 및 RHS을 포함 좋은 테스트 매트릭스의 소스를 발견하지 않은 : 나는 그런 등의 시스템 행렬에 대한 몇 가지 소스를 발견했다. 결과를 확인하는 것이 좋을 것입니다. 그러한 전체 시스템을 찾을 수있는 방법에 대한 조언, 또는 온라인으로 얻을 수있는 시스템 매트릭스에 대해 "양호한"RHS를 생성하기 위해 수행 할 수있는 방법은 무엇입니까? 나는 현재 매트릭스에 무작위 값 또는 모든 값을 채우고 있지만 이것이 반드시 가장 좋은 방법은 아니라고 생각합니다.

+0

는 "많은 그런 라이브러리가 존재한다": 정말 (적어도 기본적으로 C 작성된 ++) University of Florida의 희소 행렬 수집을 위해 내가 대신이 링크를 건의 할 것입니다. 대형 스파 스 매트릭스를 다루는 포트란 라이브러리 용 깨끗한 래퍼를 작성하는 것은 이미 정직한 일종의 도전입니다. –

+0

그러나 일부 연구 보고서에서는 상황이 좋지 않은 테스트 케이스에 대한 언급을 보았지만 IIRC는 SPD 스파 스 매트릭스가 아니 었습니다. 당신의 상황에서 테스트 케이스를 만드는 간단한 방법은 임의의 n x p 행렬 M을 취해서, 그것의 자신의 전치 (transpose)로 곱하고, lambda * Identity를 추가하여 가역성이되게하는 것입니다. 그러나 이것은 희소 행렬을 생성하지 않습니다. –

+0

또한 UF 스파 스 매트릭스 컬렉션의 문제점은 무엇입니까? 약간 무작위 RHS를 가지고가는 것은 저에게 완전하게 좋아 보인다. –

답변

0

아직 사용하지는 않았지만 GiNAC이 C++에서 찾은 가장 좋은 것 같습니다. 그것은 Maple for CAS 뒤에 사용 된 라이브러리입니다. 그 성능을 알지 못합니다.

http://www.ginac.de/

0

당신이 유효성을 검사 할 수있는 사용되기를 다른 RHS가 필요합니다 ... 다른 문제를 해결하는 문제의 종류를 지정할 잘 할 것이다 ..... 내가 무엇을 제안합니다 DUNE Numerics (지금 당장 작업 중입니다), FENICS, deal.ii과 같은 일부 프로젝트에서 예제 코드를 얻습니다. 이미 매트릭스를 풀기 위해 솔버를 사용하고 있습니다 ... 일반적으로 어떤 종류의 매트릭스를 출력하는 몇 가지 기능이 있습니다 파일 (DUNE Numerics는 matlab 호환 파일에서 행렬 및 RHS를 출력하는 기능을 가지고 있습니다).

다음으로 라이브러리 기능을 사용하여 출력 데이터 (DUNE Numerics는 VTK 형식을 사용함)을 만들 수 있습니다. 즉, 데이터를 분석 할 수 있습니다. 강력한 도구를 사용하여 .....

당신은 약간의 라이브러리를 컴파일하고 사용하는 것에 대해 배워야 할 수도 있습니다 ... 하지만 그다지 ... 나는 당신이 얻을 수있는 기능이 투자 시간 ......

나는 잘 정의 된 하나의 합리적으로 복잡한 문제가 라이브러리를 테스트하기에 충분해야한다고 생각한다. 두 도끼 = B 문제에 대한 하나 액스 = CBX (고유 문제)에 대한 다른 ....

1
I는 소정의 '목표'로부터 획득 오른손 쪽의 벡터를 사용하여 제안

용액 X :

b = A*x 

그러면 목표 솔루션 x와 결과 솔루션 x가 솔버에서 제공됩니다. 이것은 오차 (목표와 결과 솔루션의 차이)와 잔차 (A * x - b)를 비교할 수 있음을 의미합니다.

반복 솔버를주의 깊게 평가하려면 초기 x에 사용할 것을 고려해야합니다., 행렬의

온라인 컬렉션은 주로 왼쪽 행렬이 포함되어 있지만, 일부는 오른쪽 손으로 측면을 포함 않으며, 또한 일부는 그런데 너무 :

http://www.cise.ufl.edu/research/sparse/matrices/rhs.txt

솔루션 벡터를

http://www.cise.ufl.edu/research/sparse/matrices/