다음은 MATLAB 의 간단한 설명과 선형대수에서의 예를 수학과 이지은 양이 정리한 것을 이상구교수가 수정한 것입니다.  숙제가 있을 예정이니 미리 익혀 두기 바랍니다..

성대 수학과   이상구교수

 

◈ 선형대수학과 MATLAB 사용법의 예 (I)

 

⇒ MATLAB은 강력한 수학적 능력을 갖고 있고, 또한 쉽게 주어진 상황을 코딩화 할 수 있다. 그 동안 이상구교수님께 전산수학과 행렬론 강의를 들으며 Mathematica나  Hlinprac과 같은 수학관련 도구를 들어 보고 또 간단히 나마 사용해 보았는데 MATLAB만큼 강력하지 않다고 한다. 현재 외국의 여러 나라에서도 모든 코딩을 대부분 MATLAB으로 전환하려는 추세인 듯 하다. 우리나라에서 현재 개발 중인 "셈툴로(Cemtulro)"라는 소프트웨어도 MATLAB 과 같은 구조이다.

 

  과거에는 Fortran으로 작성되었으나, 현재는 MathWorks사에서 C++로 작성하였다. 일반적으로 MATLAB이 이용되는 범위는 수학과 관련된 계산이나 알고리즘 개발, 상황 모델링과 data분석, 여러 가지 과학과 공학적인 그래픽 표현, Graphical User Interface에 의한 에플리케이션 개발등이다.

 

   현재 버전 5.03이 나와있는 MATLAB은 외부 프로그램, 즉 C, Fortran과 link해서 이용할 수 있는 기능도 제공하고 있다. PC뿐만 아니라 UNIX, MAC.에서도 사용할 수 있으며 이용 방법은 거의 같다.

 

           ⇒  Installation하기 위한 기본 사양

 에 접속하여 얻을 수 있다.

          설치 방법은 자동 설치되는 기타 소프트웨어과 동일하므로 생략

 

◈ MATLAB 실습

 

 다음은 인터넷 http://www.math.utah.edu/lab/ms/matlab/matlab.html 사이트에 있는 MATLAB에 관한 기본적인 사용방법에 관한 설명을 정리하고 실제 프로그램에서 확인한 내용이다.

 

 

▶    행렬의 기본연산

 

위의 예에서 a라는 matrix를 정의하고 그것의 행렬의  power(a^2)를 계산하였다.

행의 원소는 빈칸이나 (,)로 구분하고 열의 원소는 (;)으로 구분한다. 그리고 [ ]으로 닫아 준다.

 

 

다음은 행렬 a와 b를 정의하고 기타 여러 가지 행렬연산을 해보았다.

    

행렬의 곱 a*b와 b*a의 교환이 성립하지 않음을 볼 수 있다.

 

'clear all'은 모든 변수와 핸들이 지우고 'clc' 은 DOS에서 'cls'와 같은 기능으로 변수와 핸들에는 영향이 없이 화면을 지운다.

  

 

행렬의 transpose는 (')으로 구하며 trace(d)는 행렬의 대각합을 구하는 연산이다.

 

 

         다음은 여러 가지 특수 행렬 함수들의 예이다.

 

   'eye(차수)'는 단위행렬(identity matrix)를 만들어 주는 행렬이며, 'pascal(3)은 pascal 의 삼각형을 구하는 함수이고 'magic'은 행과 열 그리고 대각성분의 합이 모두 같은 행렬을 만든다.

 

 ▶  System of equations

다음의 linear equation을 고려해보자

                

이것을 행렬 표현으로 AX=B 라 하고 A가 invertible하다고 할 때 X=A-1B로 구하는데 MATLAB에서는 X=A\B로 표현한다. , 라 하고 해를 구하면

 ▶  Loops

  간단한 programing을 해보자.

 

 , 라하고  island의 인구변화에 따른 X의 변화를 고려해 보자. 1행의 원소 1은 island 서부 지방의 인구비율이고 2행의 0는 동부지역의 인구비율을 나타낸다. T단위의 시간이 경과한 후에 인구는 y=aX로 주어진다. 이 때 서부의 인구중 0.8이 머무를 확률이고 0.2가 동부로 이동할 확률이다. 한편 동부의 인구는 0.9의확률로 머무르고 서부로 이동할 확률은 0.1이다. 따라서 다음과 간은 MATLAB programing에 의해서 연속적인 인구변화의 비율을 예상할 수 있다.   

 

이하의 출력내용은 생략함

 

▶ Graphing

 Function of one variable

 y=sin(t)를  interval t=0에서 t=10까지 하여 그려보자

      t = 초기값 :증가분 : 말기값

plot(t,y)는 2차원 그래프를 표현한다. 위의 경우는 sin(t)와 cos(t)의 그래프를 한 차트에 나타내었으며 'r'은 red, 'y'는 yellow로 선의 색깔을 나타낸다.   결과는 다음과 같다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Function of two variables

function z(x,y) = x exp(-x2 - y2)의 그래프를 그려보자

  

처음 command의 meshdom은  -2<=x<=2, -2<=y<=2

 

를 나타내며 그래프의 작은 격자무늬는 0.2의 넓이와 0.2 높이이다. mesh는 3차원 그래프를 그리는 함수이고 xlim, ylim, zlim은 각각의 좌표축에 대한 경계를 나타낸다.   결과는 다음과 같다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

▶M-file

 

 MATLAB언어로 쓰려진 파일들을 말하며, 연속적인 MATLAB문장들을 수행하는 script mode와 입력 매개변수와 츨력 매개변수를 다루는 function mode가 있다. M-file 는 MATLAB이 제공하는 text editor,를 이용하여 작성 할 수있다.

 

다음은 간단한 M-file 작성을 예로 든 것이다.

   ⇒  n!을 구하는 함수를 M-file로 작성한 것이다. (function mode)

  먼저 File의  New에서 M-file을 클릭하여 text editor 창을 불러 온다.

  그리고 다음과 같이 작성한다.

  

 

function 출력 변수 = 함수이름(입력변수) 로 함수를 정의하고 %에는 주석을 단다. prod는 1부터 n까지 원소들간의 곱을 나타낸다.

작성이 완료되면 함수이름(fact.m)으로 저장한다.

 

다음은 fact.m  함수에 의해서 5!을 계산해 본 결과이다.

 

다음은 M-file을 이용한 3차원 그래프의 출력과정이다.

 

결과는 다음과 같다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  이 보고서는 MATLAB을 사용하는 초보 설명이기 때문에 간단한 설명만했고, 독자적으로 유용한 M-file을 작성하지는 못한 대신 인터넷상에 올려져 있는 유용한  M-file 자료를 다운 받아놓았다.

 

⑴ 호주의 모나쉬대학원생이 어군탐사를 위한 초음파탐사장비를 MATLAB으로 모델링하기 위한 M-file (MATLAB 4.2C용)

 

 

☞  내 행렬론 강의를 듣는 대학원생은 이 두 M-file을 실행하여 모델링하여 제출하기 바랍니다.

 

▶마지막으로 MATLAB을 공부하기에 유용한 사이트들을 정리하였다.

 

 

  bar01a.GIF

         ⓒ 2000 Prof. S.G.Lee, Dept. of Math of SungKyunKwan University