MATLAB 을 이용하여 다음과 같은 연립 방정식의 해를 구해 보죠.
위 식은 다음과 같이 matrix 의 형태로 나타낼 수 있습니다.
MATLAB 에서 연립방정식의 해를 구할때는 보통 \(back slash) 연산을 이용합니다.
A=[9 7 4; 5 16 8; 56 -2 21]; % A 값 정의
Y=[12 ; -23 ; 17]; % Y 값 정의
X=A\Y % x, y, z 의 해를 구함
위 식의 해는 다음과 같습니다.
X =
3.9347
2.0756
-9.4853
물론 다음과 같이 inv() 함수를 이용하여 구할 수도 있죠.
X_inverse=inv(A)*Y % inverse 함수를 이용하여 해를 구함
X_inverse =
3.9347
2.0756
-9.4853
위 문제와 같이 A matrix 가 정방 행렬(square matrix) 이면서 nonsingular 인 경우라면 inv() 함수를 이용해도 \(back slash) 연산을 이용할 때와 동일한 결과가 나옵니다.
하지만 underdetermined 또는 overdetermined system 이라면 inv() 를 이용하여 해를 구할 수 없는 경우가 있습니다.
\(back slash) 연산은 underdetermined 또는 overdetermined system 인 경우에도 해를 구해 줍니다.
이때 해를 구하는 방식이 least square solution 형태의 해를 구해주는 겁니다.
least square solution 이란 norm(AX-Y)의 값이 최소가 되게 하는 X 값을 의미합니다.
least square solution 을 구하는 일반적인 방법은 다음과 같으며 아래 식의 윗 첨자 H는 hermitian transpose 를 의미합니다.
윗 식을 matlab 명령어로 표현하면 다음과 같습니다.
hermitian transpose는 matlab에서 '(작은 따옴표)로 표현되며, matlab 에서는 윗식의 A+ 부분을 Moore-Penrose pseudoinverse of matrix 라 하며 MATLAB 에서는 pinv()라는 함수를 제공해 줍니다.
\ 연산을 이용하면 알아서 least square solution 을 구해 주기 때문에 , inv() 를 이용해서 해를 구하기 보다는 \ 를 이용하여 연립 방정식의 해를 구하는 것이 훨씬 더 편리 하고 바람직한 방법 입니다.
'programming language > MATLAB' 카테고리의 다른 글
MATLAB Graphic handle (0) | 2011.05.25 |
---|---|
MATLAB adaptive filtering, Least Mean Square(LMS) (4) | 2011.05.23 |
MATLAB Dependency Report (0) | 2011.05.21 |
MATLAB ordinary differential equations 를 풀어보자~ dsolve() (0) | 2011.05.15 |
MATLAB Poisson (포아송) r.v. generation (0) | 2011.05.05 |
MATLAB central limit theorem simulation (2) | 2011.05.05 |
MATLAB symbolic math toolbox 를 이용한 합성 함수, 역함수 (0) | 2011.04.29 |
MATLAB function handle 추가 (0) | 2011.04.25 |
댓글