Study/Computer

매트랩 대체 프로그램 : Octave 심화 연산 및 함수 설정, 사용

MuviSsum 2020. 3. 29. 15:48

저번엔 기본적인 연산과 어떻게 설치하는지 살펴봤는데요. 이번엔 심화적인 부분으로 들어가도록 할게요.

C++처럼 저희가 메소드를 만들어서 쓸 수 있는데요.(Function = 기능 인데 전 그냥 메소드라고 부르겠습니다.)

메소드는 edit을 켜서 만들거나 아니면 Octave에서 바로 만들 수 있어요.

 

 

위과 같이 edit을 누르면 창이 나오게 되고, 저기에 써서 우리는 저장하고 사용할 수 있게 되죠.

하지만 주의할 점이 있어요! 처음에 시작할 때, 클라이언트와 GUI가 있다고 했잖아요?

**클라이언트에서는 이 에디터가 실행되지 않아요.**

 

 

위와 같이 하셔도 그냥 아무것도 안떠요 ㅠㅠ

그러므로 edit은 GUI에서 사용하도록 합시다.

그럼 이제 처음 심화 연산을 살펴볼텐데요. if문과 switch(case)문, Loop문을 살펴볼게요.

 

 

이것도 C++ 문법과 같았어요. C++을 배우지 않으신 분이라면 어렵게 느껴질지도 모르지만

프로그래밍 조금이라도 배우신분이면 쉽게 사용가능합니다. 다만 중괄호가 없고 end가 마지막에 들어가는게 조금 색다르네요.

Loop문은 while문, for문 모두 사용가능합니다. 둘의 차이점은... 딱히 없는데,

while은 뭔가 조건을 실행할 때 편하고? for은 내가 하고 싶은 만큼 여러번 반복실행할 때 좋은 것 같아요.

쓰는건 자유니까 둘 중하나 선택하셔서 쓰시면 됩니다.

 

이제 간단하게 함수를 설정하는 방법을 볼게요.

밑의 빨간 네모 박스를 보시면 함수를 설정하는게 나오는데요. 앞에서 말했듯이 에디터로도 가능합니다.

 

 

짧은 거니까 그냥 바로 썼어요. 참 신기한게 명령어를 입력하고 엔터를 치면 바로 실행되는데 비해,

명령어 인식이 이어지면 밑으로 쭉 내려감을 볼 수 있습니다. 또한 이렇게 쓰고 end를 써도 앞의 명령어의

end가 끝나지 않으면 또 라인이 내려감을 볼 수 있어요.

 

이젠 행렬입니다! 앞에서 배운건 배열이었지만, 여기선 배열을 여러겹 겹친 행렬 형태를 만드는 것을 보여줍니다.

결합 연산 다 사용가능하지만, 우리가 고등학교 때 배운 행렬 연산을 생각하며, 행과 열의 갯수는 맞춰주시면 됩니다.

 

 

 

*응용 : 방정식을 행렬로 변환하여 미지수를 구할 수 있습니다. 밑과 같이 만들어 왼쪽 항의 행렬과

오른쪽 항의 행렬로 만들어 주시고 둘을 백슬래쉬로 연산해주면 되는데요.

 

 

그림 안에 있는 식은 왼쪽 식들을 역행렬로 만든 후, 행렬곱을 실행하는 것입니다.

여기서 문제가 있는데, 한 번씩 오류가 난다는 것이죠. rank(계수)라는 개념으로 먼저 확인 해 볼 수 있지만,

다른 방법으로도 확인 하는 방법이 있습니다.

 

 

이것은 심화적으로 무어-펜로즈 유사행렬을 이용하는 방법인데, 역행렬과 무어-펜로즈 유사행렬이 같다면

그 식들은 행렬로 백슬러쉬로 오류가 나지 않고 답을 구할 수 있게 되요. ㅎㅎ

 

※ 계수(rank)란?

간단히 말해 방정식의 독립적인 식의 수를 말하는 것이다. (이해하기 쉽게 설명한 것, 원래라면 벡터와 뭐와 뭐와.... ㄷㄷ)

1.   2x - y + 3z = 1

2.   3x + y + 2z = 5

3.   x + 2y - z = 4

라는 세 식이 있다고 치자. 이 식들로 미지수 x, y, z를 다 구할 수 있다고 생각할 수 도 있지만,

2번식에서 1번식을 빼면 3번식이 나온다. 이런 것을 독립적인 식이 아니다라고 말한다.

즉, 여기서 독립적인 식은 1번, 2번이므로 계수(rank)는 독립적인 식의 수 2가 된다.

 

octave_tutorial.pdf, www.gnu.org
반응형