내 프로젝트에서 매 단계마다 두 개의 삼각 행렬을 풀어야하므로 좋은 솔버를 갖는 것이 중요합니다. 나는 Wikipedia에 설명 된 고전적인 방법 인 내 자신의 구현을했습니다. 그런 다음 Lapack을 대신 사용해 보았습니다. 놀랍게도 느려졌습니다!
이제 Lapack 내부에서는 LU 인수 분해로 해결하는 것처럼 보이며 왜 그렇게 복잡하지 않은지 궁금합니다.
또한 nr.com의 "Numerical Recipes"책에서 시스템을 작은 3 각형 문제로 재귀 적으로 나누는 알고리즘을 발견했습니다. 유망 해 보였다. 다른 좋은 점이 있습니까?
업데이트 : 문제 크기는 약 1000x1000입니다. GotoBLAS를 사용했는데 Lapack 3.1.1 라이브러리도 제공합니다. 문제는 대칭이 아닙니다. 나는 일반적인 tridiagonal 행렬에 Lapack 루틴을 사용했습니다.
2
이 작업에 사용한 LAPACK 루틴을 명시해야합니다. 참고 것을 dgtsv의 수행 부분 회전하지만 코드는이 작업을 수행 할 수 없습니다. 테스트 한 LAPACK 구현과 벤치마킹 한 문제 크기도 설명하십시오. 또한 문제의 대칭 양수가 확실합니까?
—
Jed Brown
질문 형식화에 정보를 추가했습니다.
—
tiam
응용 프로그램이 유한 체적 방법과 관련이 있습니까?
—
Inquest
그것은 유한 한 차이이지만,이 관점에서 그것은 내가 생각하는 것과 거의 동일합니다.
—
tiam