간단한 매트릭스라면, Cramer법칙을 이용하여 직접 inverse를 구하는 것이 좋은 방법입니다.
하지만 매트릭스 솔버를 말씀하신다면...
매트릭스 솔버는 지금까지 발표된 것만 해도 수십, 수백가지는 됩니다.
크게 나눈다면, iterative solver와 direct solver가 있습니다.
말씀하신 연립방정식을 매트릭스로 표현하면 다음과 같이 나타낼 수 있습니다.
Ax=b
iterative solver의 경우에는 r = b - Ax로 놓고 (이것을 Residual이라고 합니다.) r이 정해진 criteria 이하로 될 때까지 반복계산하는 것을 말합니다.
Gauss-seidel method가 대표적인 방법입니다만, 이 방법은 거의 사용하지 않으며, 매트릭스의 성질에 따라서 GMRES, CG, JCG, ICCG등의 방법을 많이 사용하고 있습니다. 저도 코딩을 하고 있습니다만, 수학적인 뒷받침이 되지 않으면, 이해하기가 상당히 어려운 것이 사실입니다.
direct solver는 단순히 말해서 A의 역행렬을 직접 구하는 방식이라고 보시면 되겠습니다.
따라서 해는 iterative보다 더 정확하지요. (exact solution이기 때문입니다.)
하지만 matrix의 사이즈가 커지면, 계산시간이 무지 막지하게 늘어납니다. 참고로 말씀드리면, 저희회사의 3차원 해석 솔버에서는 아직 direct solver를 도입하지 않았습니다.
대표적인 방법은 gauss elimination이 있고, Cholesky, LU decomposition, domain decomposition 등의 방법들이 있습니다.
몇가지 주저리 주저리 적어 보았습니다만, 매트릭스 솔버에 대해서 아직 지식이 부족해서..
혹시 이글을 읽고 제가 틀린부분이 있다면 주저없이 태클 걸어주십시오. ^^;;;
첫댓글 권일아~ 설명은 좋아도. 아마 올리신분이 이것을 코드를 짜기엔 어려울지도 모르겠다.