귀하의 질문은 드라이브 (슬롯, 필립스, Torx 등)에 따라 선택할 드라이버를 묻는 것과 약간 같습니다. 너무 많은 것 외에도 선택은 하나의 나사를 조일 것인지 또는 조립할 것인지에 따라 다릅니다. 도서관 선반 전체 세트. 그럼에도 불구하고 귀하의 질문에 부분적으로 답변하면 선형 시스템 를 풀기위한 방법을 선택할 때 명심해야 할 몇 가지 문제가 있습니다 . 또한 나는 자신을 뒤집을 수없는 행렬로 제한 할 것이다. 과도하거나 불명확 한 시스템의 경우는 다른 문제이며 실제로는 별도의 질문이어야합니다.Ax=b
올바르게 언급했듯이 옵션 1과 2는 옳습니다. 역행렬 계산 및 적용은 다른 알고리즘 중 하나를 적용하는 것보다 훨씬 비싸고 종종 수치 적으로 안정적이지 않기 때문에 매우 나쁜 생각입니다. 직접 방법과 반복 방법 중에서 선택할 수 있습니다. 가장 먼저 고려해야 할 것은 행렬 가 아니라 수치 해로 부터 ~ x :Ax~
- x~x~∥x~−x∗∥<10−3x∗
- 얼마나 빨리 필요합니까? 여기에만 관련 메트릭에 시계 시간입니다 귀하의 기계 - 당신이 그 중 하나가없는 경우 최선의 선택을하지 않을 수 거대한 클러스터에서 완벽하게 확장하는 방법,하지만 당신은 그 빛나는 새로운 테슬라 카드 중 하나를 수행합니다.
무료 점심 식사와 같은 것은 없기 때문에 일반적으로 둘 사이의 균형을 결정해야합니다. 그런 다음 매트릭스 (및 하드웨어)를 살펴보고 적절한 방법 (또는 구현 방법을 찾을 수있는 방법)을 결정합니다. (여기에 "최고"를 쓰지 않는 방법에 주목하십시오 ...) 가장 관련성이 높은 속성은 다음과 같습니다.A
- 구조 : IS 대칭? 밀도가 높거나 희박합니까? 줄무늬?A
- 고유은 : 그들은 (즉, 모든 긍정적 인 긍정적 확실한)? 그들은 클러스터되어 있습니까? 그들 중 일부는 매우 작거나 큰 규모를 가지고 있습니까?A
이를 염두에두고 (거대한) 문헌을 트롤링하고 특정 문제에 대해 찾은 다양한 방법을 평가해야합니다. 일반적인 설명은 다음과 같습니다.
솔루션에 기계 정밀도가 정말로 필요하거나 매트릭스가 작은 경우 (예 : 최대 행), 특히 밀도가 높은 시스템 (이 경우 모든 매트릭스 곱셈)에 대한 직접적인 방법을 이길 수 없습니다. 될 것입니다 당신은 반복을 많이해야하는 경우, 그리고이 힘은 멀리에서하지 직접적인 방법 필요). 또한 LU 분해 (피벗 포함)는 대부분의 반복 방법과 달리 모든 반전 가능한 매트릭스에서 작동합니다. (물론, 가 대칭이고 양수이면, Cholesky를 사용합니다.)1000O(n2)O(n3)A
메모리 문제가 발생하지 않으면 (대형) 희소 행렬의 경우 에도 마찬가지입니다 . 일반적으로 희소 행렬에는 희소 LU 분해가 없으며, 요인이 (고속) 메모리에 맞지 않으면 이러한 방법을 사용할 수 없게됩니다.
또한 직접 방법은 오랫동안 사용되어 왔으며 의 대역 구조를 자동으로 활용할 수있는 매우 우수한 소프트웨어 (예 : UMFPACK, MUMPS, 희소 행렬의 SuperLU)가 있습니다 .A
정확도가 낮거나 직접 방법을 사용할 수없는 경우 고정 방법 (예 : Jacobi 또는 Gauss-Seidel) 대신 Krylov 방법 (예 : 가 대칭 양수의 경우 CG , 그렇지 않은 경우 GMRES 또는 BiCGStab)을 선택하십시오. 수렴은 의 스펙트럼 반경이 아니라 조건 수의 (제곱근)에 의해 결정되며 행렬의 구조에 의존하지 않기 때문에 훨씬 잘 작동 합니다. 그러나 Krylov 방법으로 실제로 우수한 성능을 얻으려면 매트릭스에 적합한 전제 조건을 선택해야합니다. 이는 과학보다는 기술입니다.AA
동일한 행렬과 다른 오른쪽을 가진 선형 시스템을 반복적으로 해결해야하는 경우, 분해 방법을 한 번만 계산하면되기 때문에 직접 방법이 반복 방법보다 여전히 빠를 수 있습니다. (이는 순차적 인 해결책을 가정합니다. 동시에 모든 오른쪽이 있으면 블록 Krylov 방법을 사용할 수 있습니다.)
물론, 이것들은 매우 대략적인 지침입니다. 위의 진술에 대해, 대화가 참인 행렬이있을 가능성이 있습니다 ...
의견에 대한 참조를 요청 했으므로 여기에 몇 가지 교과서와 검토 논문이 있습니다. (이 둘 중 어느 것도 포괄적이지 않습니다.이 질문은 너무 광범위하며 특정 문제에 너무 많이 의존합니다.)