For Beginners

[matlab]으로 머신러닝 도전하기, 5 본문

2021 이전 자료들/MATLAB

[matlab]으로 머신러닝 도전하기, 5

.log 2019. 6. 24. 17:56
728x90

Learn MATLAB Episode #5: Linear Algebra

[출처] https://www.youtube.com/watch?v=yBQcWYg3FIw

매트랩 튜토리얼에서 우리는 기본적인 선형대수를 알아보도록 하겠다.

선형 방정식에 대해서 알아보자.

일반적인 선형 방정식은 A(X) + B의 꼴로 생겼다.

A는 행렬이고, X는 변수의 벡터이고, B는 상수로 이루어진 벡터이다.

그래서 선형 방정식의 예시를 들어보기 위해서

3개의 다른 변수를 나타내기 위해서 3개의 방정식이 필요하다.

그래서 이 위키의 내용처럼 식 3개로 표현할 수 있지만, 행렬로도 나타낼 수 있다.

 

A라는 벡터를 선언하자.

A=[ 3 2 -1; 2 -2 4; -1 0.5 -1];

b = [1 -2 -2];

이렇게 선언한다.

그래서 Ax = b 에서 구하고자 하는 x를 구하려면

inv(A)*b이렇게 하면 된다.

 

아 근데 사실 이렇게 하면 에러가 난다.

왜일까?

b가 열벡터가 아니고 1 x 3 크기의 벡터가 되어있기 때문이다.

그래서 b를 [1; -2; -2];이렇게 다시 만들던가, 아니면

b'를 이용해서 b를 transpose 전치 시켜주면 된다.

 

그래서 위키피디아에 있는 내용을 구현해보았다.

 

매트랩에서 생기는 경고문을 잘 읽어보면

문제를 해결하기 위한 좋은 해결책을 알려주고 있으니까 유의하면 좋다.

 

이제 나누기를 써보자.

우리가 \를 사용하는 경우를 보자.

A\b라고 입력하면, A가 b아래에 들어가게 된다.

즉 분모가 A가 되고, b가 분자가 되는 것이다.

A\b는

A의 역행렬 * b와 같다고 한다.

근데 이부분도 직접 해봐야 알 것 같다.

 

inv(A) 는 A의 역행렬이다.

A의 determinant를 구하려면, det(A)라고 한다.

 

매트랩이 다른 언어와 다른 점은,

함수에서 리턴되는 값은 정적인 값이 아니고 동적인 값이다.

그래서 우리가 elg 함수를 보고,

하나의 파라미터가 들어가면 하나의 결과 eigenvalue e를 리턴한다.

리턴되는 값이 [V, D]라고 하면 eigenvectors V를 리턴한다.

[V, D, W] 의 경우 right eigenvector W를 리턴한다.

 

두 개의 식의 사이에 == 이렇게 표현한 식을 썼을 때

그 식이 true이면 1, false면 0을 리턴한다.

 

그래서 [V, D] = elg(A, B)라는 식을 썼을 때,

A*V == B*D 라는 식으로 확인을 하면 0을 리턴한다.

 

여기서 주의해야 할 점은 프로그래밍하면서 반올림 에러등에 주의해야 한다는 것이다.

 

Comments