공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는...

30

Upload: others

Post on 26-Oct-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을
Page 2: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

공학도를 위한 매트랩

1판발행 2015년 12월 23일

1판2쇄 2015년 12월 31일

지은이 유태훈

펴낸이 김승기

펴낸곳 (주)생능출판사 / 주소 경기도 파주시 광인사길 143출판사 등록일 2005년 1월 21일 / 신고번호 제406-2005-000002호

대표전화 (031)955-0761 / 팩스 (031)955-0768홈페이지 www.booksr.co.kr

책임편집 김민보 / 편집 최일연, 신성민, 손정희 / 디자인 유준범

마케팅 백승욱, 심수경, 최복락, 최권혁, 백수정, 이재원, 김민수, 최태웅, 김민정

인쇄·제본 (주)상지사 P&B

ISBN 978-89-7050-825-2 93560

정가 34,000원

● 이 도서의 국립중앙도서관 출판예정도서목록(CIP)은 서지정보유통지원시스템 홈페이지(http://seoji.nl.go.kr)와

국가자료공동목록시스템(http://www.nl.go.kr/kolisnet)에서 이용하실 수 있습니다.

(CIP제어번호: CIP2014035572)

● 이 책의 저작권은 (주)생능출판사와 지은이에게 있습니다. 무단 복제 및 전재를 금합니다.

● 잘못된 책은 구입한 서점에서 교환해 드립니다.

저자 소개

유태훈

연세대학교 전자공학과 학사

연세대학교 전자공학과 석사

연세대학교 전기컴퓨터공학과 박사

삼성전자 정보통신 연구소 연구원

Syracuse University Visiting Scholar현재: 동양미래대학교 정보통신공학과 교수

e-mail: [email protected]

한기수

서울대학교 전기공학과 학사

서울대학교 전기공학과 석사

엘지전자 중앙연구소 선임연구원

대신정보통신 연구소 책임연구원

현재: 동양미래대학교 전기공학과 교수

e-mail: [email protected]

Page 3: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

MATLABⓇ for EngineersFourth Edition

Holly MooreSalt Lake Community CollegeSalt Lake City, Utah

Page 4: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

Authorized Translation from the English language edition, entitled MATLAB FOR ENGINEERS, 4th

Edition by MOORE, HOLLY, published by Pearson Education, Inc, Copyright © 2015 Prentice Hall

All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means,

electronic or mechanical, including photocopying, recording or by any information storage retrieval

system, without permission from Pearson Education, Inc.

KOREAN language edition published by PEARSON EDUCATION KOREA and LIFE AND POWER

PRESS, Copyright © 2015

Page 5: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

P R

E

F A

C E

5

옮긴이 머리말

이 책은 Holly Moore가 쓴 MATLAB for Engineers라는 책을 우리말로 옮긴

것으로 과학이나 공학을 전공하는 여러분들에게 매트랩(MATLAB)이라는 쉬우

면서도 강력한 프로그래밍 언어를 소개하고 있습니다. 매트랩이 워낙 유명한 프로

그램이라서 관련된 책이 이 책 말고도 시중에 매우 많이 나와 있습니다. 그런데 이

러한 책들 가운데 상당수는 특정한 세부 분야를 다루고 있거나 상당히 높은 수준의

어려운 내용을 담고 있습니다.

이 책은 다른 책들과는 달리 대학에 첫발을 막 내디딘 신입생의 수준에 전체적

으로 눈높이를 맞추고 있습니다. 이 책에서 다루는 분야도 과학과 공학을 전공하는

학생이면 누구나 배우는 물리, 화학, 수학을 포함하여, 전기·전자 공학, 화학공학,

기계공학, 건축공학에 이르기까지 과학과 공학의 다양한 분야에 걸쳐 있습니다. 또

한 각 분야에서 다루고 있는 주제도 그 분야에서 기본이 되는 것이거나 여러 분야

에서 공유되는 것이며, 모두 실제 현상과 관련이 있는 것입니다.

또한 이 책은 ‘문제해결능력’을 키울 수 있는 방식으로 내용을 전개하고 있습니

다. 이 책에서는 실제 현상과 관련된 다양한 예제들을 「문제 명확히 하기」 → 「입력/

출력 정의하기」 → 「손으로 풀기」 → 「매트랩으로 풀기」 → 「결과 검사하기」와 같이 5단

계로 이루어진 ‘체계적 문제풀이법’으로 해결하면서 단순히 계산하는 방법을 익히

게 하기보다는 전공에서 배우는 여러 가지 이론들을 현실에 적용하는 ‘실용 능력’

을 키우는 데 중점을 두고 있습니다. 이밖에도 이 책에는 미분방정식 풀이 기법, 수

치계산 기법, 고급 그래픽 기법, 소리와 영상처리 등의 수준 높은 내용도 함께 들어

있습니다.

따라서 이 책을 잘 활용하면 여러분의 전공이 무엇이든, 여러분이 신입생이든 재

학생이든 엔지니어이든 전문기술인이든 여러모로 도움을 받을 수 있을 것입니다.

컴퓨터 프로그래밍 언어라면 C, C++, 포트란(FORTRAN), 파스칼

(PASCAL), 자바(JAVA), …… 말하자면 끝도 없이 무척 많습니다. 그렇다면 이

들과 구별되는 매트랩이라는 언어의 특징은 무엇인지 몇 가지만 알아보기로 하겠

습니다.

Page 6: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

P R

E

F A

C E

6

첫째, 다른 프로그램에 견주어 사용하기가 무척 쉽다는 것입니다. 여러분이 대학

에 들어와서 전공과목을 공부해보면 빛의 속도(300,000,000 m/s)처럼 아주 큰 수

나 수소원자의 지름(0.0000000001 m)처럼 아주 작은 수를 많이 만나게 되고 이러

한 수들을 방정식이나 수식에 대입하여 계산을 하게 됩니다. 그래서 돈을 계산할 때

쓰는 계산기 대신 입학하자마자 ‘과학용(공학용) 계산기’를 사서 이러한 계산을 하게

되지요. 이때 계산기 대신 쓸 수 있는 것이 매트랩입니다. 다시 말해 과학용 계산기

를 쓸 수 있으면 매트랩도 쓸 수 있을 정도로 사용이 쉽습니다. 또한 매트랩은 인터

프리터(interpreter)형 언어라 프로그램을 만들기도 쉽고 고치기도 쉽습니다.

둘째, 여러 종류의 유용한 함수들이 미리 만들어져 있으므로 이들을 이용하여 원

하는 프로그램을 쉽게 작성할 수 있습니다. 미분, 적분, 인수분해, 근(root), 평균

값, 표준편차, 중앙값, 라플라스 변환, 푸리에 변환 등의 값들을 구하는 경우, 다른

프로그래밍 언어라면 여러분이 모든 계산과정을 직접 작성하여야 하지만 매트랩에

는 이러한 계산을 해주는 함수들이 내장되어 있어서 훨씬 쉽게 프로그램을 작성할

수 있습니다.

셋째, 다른 어떤 프로그램보다 쉽고 편리하게 다양한 그래프를 그릴 수 있습니

다. 매트랩에는 그래프를 그리는 기능을 가진 많은 함수와 명령어가 준비되어 있어

서, 계산결과나 해석결과를 눈으로 쉽게 이해할 수 있도록 여러 종류의 그래프(2차

원 그래프, 3차원 그래프, 극좌표 그래프, 벡터 그래프 등)로 그릴 수 있습니다.

그렇지만 매트랩에는 ‘실행속도가 느리다’는 것과 ‘값이 비싸다’라는 두 가지 단

점이 있습니다. 그런데 매트랩의 실행속도 문제는 요즈음 컴퓨터의 속도가 워낙 빨

라져서 방대한 자료의 복잡한 수치계산작업이 아니라면 큰 문제가 되지 않습니다.

그리고 이 문제는 프로그래밍 과정에서 명령어를 ‘벡터화(vectorization)’하고 아울

러 효율적인 알고리즘을 적용하면 어느 정도 완화할 수 있습니다. 그리고 매트랩의

비싼 가격 문제는 학교나 기업에서 구매하여 설치한 것을 사용하거나 개별적으로

이용하는 경우에는 상대적으로 싼 학생판이나 시험판을 사용하는 식으로 풀어나가

는 것을 생각해볼 수 있습니다.

이 책을 여러분에게 소개하고 있는 저는 매트랩을 즐겨 사용합니다. 아주 오래

전, 매트랩을 사용하여 처음 그래프 그리기에 성공했을 때의 느낌―아, 이런 걸 이

렇게 쉽게 해낼 수 있구나!―이 생생합니다. 그 후, 교직에 몸을 담아 지금까지 20

여 년 동안 전기, 전자, 통신 등의 공학 분야와 수학 분야에서 학생들을 가르치면서

여러 교과목의 강의를 준비하고 강의 자료를 만드는 데 매트랩을 활용해오고 있습

Page 7: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

P R

E

F A

C E

7

니다. 여러분도 저처럼 매트랩을 즐겨 사용하기를 바라며, 한편으로는 이 책을 통

하든 아니면 다른 계기로든 매트랩을 만나기만 하면 분명히 그렇게 되리라 믿고 있

습니다.

과학과 공학, 그리고 수학에서 우리가 하는 것을 살펴볼까요? 이들 분야에서 우

리는 다양한 실험과 계산을 하게 되고, 그 결과로 수많은 데이터와 숫자를 얻습니

다. 그리고 여기서 한 걸음 더 나아가 이들 데이터와 숫자들이 간직하고 있는 의미

나 담고 있는 정보를 파악하는 작업을 하는 매우 중요한 단계가 있습니다. 이때 매

트랩이 가지고 있는 강력한 계산 기능, 프로그래밍 능력, 그래픽 기능, 애니메이션

기능을 활용해보세요. 그러면 그 숫자들과 데이터가 보여주는 패턴의 규칙성과 관

계, 법칙, 그리고 여러 정보들이 뚜렷하게 모습을 드러낼 테니까요.

끝으로 대학에서 ‘학문’의 길을 밟고 있는 여러분과 나누고 싶은 말이 있습니다.

학문이란 말을 여러분이 그다지 좋아하지 않는 한자로 써보면 단순히 ‘글(文)’을 ‘배

운다(學)’는 학문(學文)이 아니라 ‘배우고(學)’ ‘묻는다(問)’는 학문(學問)입니다. 따

라서 학문을 한다는 것은 단지 배운 지식을 외워서 기억만하는 것이 아니라 지식

을 배운 다음에는 배운 것에 대해 꼭 물음을 되던져보는 것입니다. 이렇게 따져가

며 공부하는 방법을 ‘비판적 학습법’이라고 합니다. 여기서 ‘비판’이란 ‘어떤 것의 옳

고 그름을 가리어 판단하거나 밝히는 것’을 뜻하는데, 어떤 문제를 해결하는 능력과

새로운 것을 만들어내는 능력은 이렇게 비판적으로 생각하는 습관에 의해서 길러

질 수 있습니다. 관점을 더욱 넓혀 ‘삶’이라는 한 평생 우리와 함께하는 문제에 대해

서도 이렇게 비판적으로 생각하고 고민해야 어설픈 답이라도 얻지 않을까 생각합

니다.

이 책이 나오기까지 세심한 기획, 편집, 교정을 해주신 백승욱 전무님을 비롯한

생능출판사의 여러분들에게 감사드립니다. 잘못된 내용을 찾으셨거나 의견이 있으

신 분들은 책에 실린 메일이나 출판사로 연락을 주시기 바랍니다. 이 책이 매트랩

과 공학, 과학을 공부하는 분에게 도움이 되길 바랍니다.

2015년 2월

유 태훈

Page 8: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

P R

E

F A

C E

8

지은이 머리말

지금까지 솔트레이크 커뮤니티 칼리지(Salt Lake Community College)에서

공학 분야의 신입생을 가르친 경험을 바탕으로 하여 이 책을 쓰게 되었다. 처음

에 나는 신입생에게 알맞은, 첫걸음부터 차근차근 시작하는 교재를 찾으려 하였지

만 찾을 수가 없었다. 광범위한 내용을 담고 있는 책들이 많이 있었지만 내가 가르

칠 학생들은 이들 책을 이해하는 데 필요한 수준의 수학 실력과 컴퓨터 사용능력

을 갖추지 못한 상황이었다. 게다가 원래 매트랩(MATLAB)은 신호처리(signal

processing)와 전기공학 분야에서 활동하는 사람들이 주로 사용하였기 때문에, 이

들 책에서도 주로 이 분야들에 관련된 내용들을 다루었으며 책에서 사용하는 방법

들도 이 분야들을 제외한 나머지 다양한 공학 분야에는 적합하지 않았다. 이 책은

처음에는 기초적인 수학부터 다루기 시작해서, 아주 다양한 분야의 공학관련 문제

를 매트랩을 사용하여 푸는 방법을 자세히 설명하고 있다. 이 책에서 다루는 여러

가지 문제들은 기초적인 화학과 물리학, 그리고 기본이 되는 여러 공학 과목에서

골라낸 것들이다. 이 책에서는 이들 문제를 푸는 데 ‘체계적 문제풀이법’이라는 표

준 방법을 사용하고 있다.

이 책은 기초적인 대학수학과 삼각함수의 기본 개념을 알고 있는 학생이라면 충

분히 이해할 수 있으며 수학 실력이 좋은 학생의 경우에는 이 책을 더욱 빠르게 공

부해나갈 수 있다. 이 책에서는 통계나 행렬수학이라는 주제를 직접적으로 다루지

는 않지만, 책에서 다루는 매트랩 기법이 이들 주제와 관련이 있는 경우에는 그 내

용을 간단히 설명하고 있다. 그리고 책의 뒷부분(12, 13장)에 있는 몇 개의 절에서

는 미분·적분과 미분방정식을 사용하여 매트랩으로 문제를 푸는 방법을 설명하고

있다. 수학 실력이 좋은 학생들에게는 특별히 이 절들을 공부하도록 지도할 수 있

다. 또한 전공 공부를 하면서 이 절들을 참고자료로 활용할 수도 있다.

이 책은 직접 실습하면서 공부할 수 있도록 구성한 책이다. 내가 가르친 학생 중

에서 좋은 성과를 거둔 학생들은 모두 컴퓨터 앞에 앉아 이 책을 앞에 놓고 직접 예

제를 타이핑하면서 공부한 학생들이었다. 이 책에 들어 있는 다양한 예제들을 풀어

보면 책에서 다루는 개념들을 더욱 확실히 이해할 수 있게 된다. 이 책에서는 장마다

실습문제를 수록하여 새롭게 배운 매트랩 기법을 곧바로 사용해볼 수 있게 하였다.

Page 9: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

P R

E

F A

C E

9

이 책은 크게 세 부분으로 나누어볼 수 있다.

먼저, 첫 번째 부분은 「매트랩 사용의 기초」로 학생들이 매트랩을 처음 사용하는

데 필요한 것들이다. 이 부분에 속하는 장들의 내용을 간추려보면 다음과 같다.

● 1장에서는 매트랩이 공학분야에서 어떻게 사용되고 있는지 설명하고, 이어서

「체계적 문제풀이법」이라는 표준 문제 풀이 방법을 소개한다.

● 2장에서는 매트랩 환경과 기본 연산을 수행하는 데 필요한 매트랩 사용기법을

설명한다. 또한 이 장에서는 M-파일에 대해 알아보는데, 이것을 먼저 배우는

것은 M-파일을 이용하면 학생들이 매트랩으로 작업한 결과를 저장하기가 훨씬

쉽고 프로그램을 짜는 방법을 제대로 익힐 수 있기 때문이다.

● 3장에서는 매트랩에 내장된 함수들을 사용하여 매우 다양한 분야의 문제들을 풀

어본다. 학생들이 이 함수들의 사용법을 이해하는 데 도움이 되도록 관련된 내

용들을 함께 설명한다. 한 가지 예를 들어보면, 정규분포형(가우스) 난수와 균일

분포형 난수의 차이점을 설명하고 각 형태의 난수에 관련된 예제를 풀어가며 진

행하는 방식이다.

● 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을 자세히

설명한다. 이 장에서 소개하는 meshgrid 함수를 이용하면 변수가 2개인 문제를

풀 수 있다. meshgrid 함수의 사용방법과 그 개념에 대해서는 다음 장인 5장에

서 면 그래프(surface plot)를 배울 때 다시 다루게 된다.

● 5장에서는 매트랩으로 그릴 수 있는 다양한 2차원 그래프와 3차원 그래프에 대

해 설명한다. 특히 매트랩의 명령창이나 M-파일에서 이들 그래프를 그리는 방

법을 다룬다. 그밖에도 이미 그려진 그래프를 대화방식으로 편집하는 방법과 작

업공간창(workspace window)에서 곧바로 그래프를 그리는 방법도 소개한다.

매트랩은 뛰어난 성능의 프로그래밍 언어로 대부분의 프로그래밍 언어에서 사용

되는 구조들을 포함하고 있다. 매트랩으로 프로그램을 만들고 디버깅하는 작업은

다른 프로그래밍 언어(예를 들어 C++)보다 쉽다. 바로 이러한 점 때문에 맨 처음

배우는 프로그래밍 과목의 프로그래밍 언어로 매트랩이 유용하게 사용되고 있다.

이 책의 두 번째 부분은 「매트랩을 이용한 프로그래밍」으로 여기서는 학생들에게

프로그램을 작성하는 방법을 소개한다. 이 부분에 속하는 장들의 내용을 간추려보

면 다음과 같다.

Page 10: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

P R

E

F A

C E

10

● 6장에서는 사용자 정의 함수를 만드는 방법을 설명한다. 또한 사용자가 프로그

래밍 프로젝트를 수행하면서 자신이 만든 사용자 정의 함수들을 모아놓는 자신

만의 도구상자(toolbox)를 만드는 방법을 설명한다.

● 7장에서는 프로그램과 사용자가 서로 대화(즉 상호작용)를 하는 데 사용되는 함

수들에 대해 다루는데, 사용자 제어 입력함수, 형식화된 출력함수, 그래프 입력

함수 등이 이러한 유형의 함수이다. 이와 함께 매트랩에서 프로그램 디버깅에

사용되는 도구에 대해 설명한다.

● 8장에서는 논리함수인 find 함수의 사용법을 설명하고 제어구조(if, if/else,

switch/case)를 사용하여 프로그램을 작성하는 방법을 다룬다. 매트랩을 배우

기 전에 이미 프로그래밍 경험을 가진 학생이나 강사 중에는 매트랩 특유의 행

렬처리기법을 바탕으로 하는 함수들을 사용할 때의 장점에 별로 관심을 두지 않

는 경우가 종종 있으므로, 8장에서는 특히 제어구조에 비해 이러한 부류에 속하

는 함수인 논리함수의 사용에 더 큰 비중을 두어 설명한다.

● 9장에서는 반복구조(for 루프, while 루프)와 break 명령을 사용하는 도중중단

루프(midpoint break loop)를 사용하여 프로그램을 작성하는 방법을 다룬다.

학생들은 특히 반복구조의 개념을 까다롭게 여기기 때문에 예제를 많이 다루고

있다.

1장에서 8장까지는 순서대로 공부하는 것이 좋다. 그런데 이 책의 세 번째 부분

인 「고급 매트랩 개념」에 속해 있는 장들은 저마다 독립된 내용을 다루고 있다. 따

라서 세 번째 부분에 속한 장들 전체나 일부를 정규 수업시간에 다루어도 되고 아

니면 스스로 공부하면서 참고자료로 활용하여도 좋다. 거의 모든 내용은 신입생에

게 적합한 것들이다. 2학점 교과목으로 운영하는 경우에는 1~9장에 10장을 더하여

다루고, 3학점으로 운영할 때에는 1~14장까지 모두 다루되 미분기법, 적분기법,

미분방정식 풀이기법을 다루는 12.4절, 12.5절, 13.4절, 13.5절, 13.6절은 제외해도

된다. 15장과 16장은 실력 있는 학생들이라면 재밌게 공부할 수 있는 주제로 2학년

이나 3학년 학생을 대상으로 하는 교과목인 경우에는 정규 수업시간에 다루어도 된

다. 다음에 설명하는, 세 번째 부분에 속한 장들을 공부하면서 배우는 기법들은 공

학분야의 문제들을 푸는 과정에서 특히 유용하게 쓰일 것이다.

● 10장에서는 행렬연산을 이용하여 점곱(dot product), 가위곱(cross product), 그

리고 연립방정식 문제를 푸는 방법에 대해 설명한다. 예전에는 행렬연산이 공학

을 전공하는 학생이면 거의 모두 수강하는 물리학(정역학과 동역학) 과목에 주

Page 11: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

P R

E

F A

C E

11

로 활용되었지만 지금은 모든 공학분야에서 널리 사용되고 있다.

● 11장에서는 매트랩이 지원하는 다양한 데이터 유형을 소개한다. 이 장은 특히

전기·전자 공학이나 컴퓨터 공학과 관련된 부분을 전공하는 학생들에게 유용

하다.

● 12장에서는 뮤패드(MuPAD) 엔진을 기반으로 하는 기호수학(symbolic

mathematics)에 대해 설명한다. 특히 수학과 관련된 과목을 공부하는 데 이 장

에서 배우는 내용을 활용할 수 있다. 내가 가르친 학생들은 이 책의 내용 중에서

특히 이 장에서 배운 여러 기법들이 가장 유익했다고 하였다.

● 13장에서는 곡선맞춤(curve fitting)과 통계학을 포함하여 여러 가지 다양한 분

야에서 사용되는 수치계산 기법을 다룬다. 화학이나 물리학과 같이 실험실습을

함께하는 과목을 수강하는 경우나 열전달, 유체역학, 물질강도와 같은 내용을

다루면서 실험실습을 병행하는 공학과목을 수강하는 경우에 여기서 다루는 기

법들을 유용하게 쓸 수 있다.

● 14장에서는 데이터를 여러 가지 형태의 그래프로 나타내어 시각화하는 기법에

대해 살펴본다. 이러한 기법들은 구조해석, 유체역학, 열전달과 같은 분야에서

수치해석을 하면서 얻게 되는 계산결과를 분석하는 데 특히 유용하다.

● 15장에서는 그래픽 사용자 인터페이스(Graphic User Interface, GUI)를 소개

한다. 매트랩에서는 GUIDE 프로그램을 사용하여 GUI를 쉽게 만들 수 있다.

이 장에서는 컴퓨터에서 일상적으로 사용되고 있는 각종 GUI들이 어떤 방법으

로 만들어진 것인지 알 수 있도록 몇 가지 GUI를 직접 만들어본다.

● 16장에서는 매트랩의 시뮬레이션 프로그램 패키지인 시뮬링크(SimulinkⓇ)를 소

개한다. 시뮬링크를 실행하려면 MATLABⓇ 프로그램이 필요하다. 시뮬링크는

다양한 블록을 서로 결합하는 그래픽 사용자 인터페이스 방식으로 동적 시스템

에 대한 해석 모델을 만든다. 현재 시뮬링크는 전기, 전자 공학을 포함한 공학분

야 전체에서 널리 응용되고 있다.

[부록A]에는 이 책에서 다루는 모든 함수와 특수기호, 특수문자들이 빠짐없이

수록되어 있다. [부록B]에서는 그래프가 직선 형태로 표시되도록 데이터를 처리하

는 방법을 설명하고 있다. [부록C]에는 15장에서 다루는 GUI인 ready_aim_fire를

만드는 데 필요한 프로그램들이 모두 수록되어 있다. 강사용 웹사이트에서 입수할

수 있는 자료들은 다음과 같다.

Page 12: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

P R

E

F A

C E

12

● 본문의 [실습예제] 해답을 수록한 M-파일

● 본문의 [예제] 풀이를 수록한 M-파일

● [연습문제] 해답을 수록한 M-파일

● 파워포인트 슬라이드로 만든 강의자료

● 본문에 실린 모든 그림 파일

● 온라인 강의 또는 복습에 활용할 수 있는 동영상 강의자료(음성 설명 포함)

[부록E]에 실린 [실습예제] 해답은 생능출판사 홈페이지에서 다운로드 할 수 있다.

http://www.booksr.co.kr

4판에 새롭게 추가된 사항

매트랩(MATLABⓇ) 프로그램은 6개월마다 새로운 버전이 나오고 있어서 항

상 최신 내용을 다룰 수 있도록 교재를 만드는 것이 쉽지 않다. 매트랩은 릴리

즈 2012b(Release R2012b)에서 상당한 변화가 있었는데, 이 패키지에 속하는

MATLABⓇ 8은 새로운 GUI를 선보였다. 이번 4판은 이러한 변화를 반영하기 위

해 출간한 것으로 새로 바꾼 내용은 다음과 같다.

● 본문에 실린 모든 매트랩 프로그램 화면을 릴리즈 2013a으로 만든 것으로 교체

하였다.

● 12장에서 MuPAD 소프트웨어를 새롭게 설명하였다.

● 12장에서 사용자 정의 기호함수를 만드는 방법을 소개하였다.

● 12장에서 기능이 달라진 몇 개의 기호함수의 설명을 그에 맞춰 새로 설명하였다.

● 지금까지 이 책을 사용한 강사와 학생들의 의견을 반영하여 일부 문제는 수정을

하였고 여러 문제들을 새로 추가하였다.

● 몇 가지 매트랩 함수들을 새로 추가하였다.

감사의 글

우리 가족의 도움이 없었다면 이 책은 세상에 나올 수 없었을 것입니다. 마이크

(Mike), 하이디(Heidi), 메건(Meagan), 데이브(Dave), 비니(Vinnie), 그리고 남

편 스티븐 퍼셀(Dr. Steven Purcell)에게 고마움을 전합니다. 제게 전기를 가르치

는 수고로움을 마다하지 않으신 솔트레이크 커뮤니티 칼리지 전기공학과의 브린튼

(Lee Brinton)과 릭스(Gene Riggs)에게 감사드립니다. 전기(electricity) 관련 문

Page 13: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

P R

E

F A

C E

13

제에 대해 두 분의 의견은 큰 도움이 되었습니다. 또한 연습문제를 더 좋게 만드는

데 도움이 된 많은 의견을 주신 솔트레이크 커뮤니티 칼리지의 매크레이(Quentin

McRae)에게도 감사드립니다.

이 책을 우리 아버지, 조지 무어(George Moore) 교수에게 바칩니다. 아버지

는 20여 년 동안 사우스 다코타 스쿨 오브 마인스 앤드 테크놀로지(South Dakota

School of Mines and Technology) 전기공학과(Department of Electrical

Engineering)에서 학생들을 가르치셨습니다. 미국 공군 조종사로서의 임무를 성

공적으로 마치신 후, 54세의 나이에 학사학위를 취득한 아버지는 ‘배우는 데 나이

는 아무런 문제가 되지 않는다.’는 사실을 몸소 보여주는 산 증인이십니다. 우리 어

머니, 진 무어(Jean Moore)는 자신의 남편과 두 딸에게 ‘고정관념에서 벗어나라’고

격려하셨습니다. 이런 어머니의 사랑 덕분에 두 딸은 여자라곤 거의 찾아볼 수 없

었던 1970년대 공학분야에 자리를 잡아 즐겁게 일을 하고 있답니다. 이 책을 읽고

있는 여러분, 잠깐 동안 시간을 내서 지금까지 여러분들이 꿈을 이루는 데 도움을

주신 분들에게 감사드리면 어떨까요? 어머니, 아버지 감사합니다.

Page 14: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

C O

N

T

E

N

T

S

14

차례

CHAPTER

01 매트랩 개요

1.1 매트랩 소개 20

1.2 매트랩 학생용 버전 21

1.3 매트랩 이용분야 23

1.4 공학과 과학 분야의 문제해결방법 26

CHAPTER

02 매트랩 환경

2.1 시작하기 32

2.2 매트랩의 창(MATLAB Window) 35

2.3 매트랩으로 문제해결하기 44

2.4 작업 결과를 저장하기 75

CHAPTER

03 매트랩의 내장 함수

3.1 내장 함수 사용하기 104

3.2 도움말 기능 사용하기 107

3.3 기본 수학함수 111

3.4 삼각함수(Trigonometric Function) 120

3.5 데이터 분석 함수 126

3.6 난수(Random Number) 150

3.7 복소수(Complex Number) 155

3.8 계산상의 한계 160

3.9 특수한 값과 기타 함수 162

CHAPTER

04 매트랩에서 행렬 다루기

4.1 행렬 다루기 178

4.2 두 변수 사이의 연산 188

4.3 특수 행렬 196

Page 15: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

C O

N

T

E

N

T

S

15

CHAPTER

05 그래프 그리기

5.1 2차원 그래프 216

5.2 다중 그래프 236

5.3 여러 가지 2차원 그래프 238

5.4 3차원 그래프 258

5.5 메뉴표시줄에서 그래프 편집하기 266

5.6 작업공간창에서 그래프 그리기 269

5.7 그래프 저장하기 270

CHAPTER

06 사용자 정의 함수

6.1 함수 M-파일 만들기 288

6.2 내 도구상자 만들기 312

6.3 익명함수(Anonymous Function) 314

6.4 함수의 함수 316

6.5 하위함수 317

CHAPTER

07 사용자 제어 입·출력

7.1 사용자 제어 입력 334

7.2 출력 제어 339

7.3 그래프 입력 353

7.4 셀 모드를 활용한 리포트 작성 354

7.5 파일에서 데이터 읽고 쓰기 356

7.6 프로그램 디버깅하기 359

CHAPTER

08 논리 함수와 선택 구조

8.1 관계 연산자와 논리 연산자 375

8.2 순서도와 슈도코드 378

8.3 논리 함수 381

8.4 선택구조 390

8.5 디버깅 410

CHAPTER

09 반복구조

9.1 for 루프 427

9.2 while 루프 436

Page 16: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

C O

N

T

E

N

T

S

16

9.3 break와 continue 446

9.4 도중 중단 루프 447

9.5 중첩 루프 452

9.6 루프 효율 개선하기 453

CHAPTER

10 행렬 연산

10.1 행렬 연산과 함수 468

10.2 선형 연립방정식 풀잇법 493

10.3 몇 가지 특수 행렬 510

CHAPTER

11 배열의 종류

11.1 데이터의 유형 529

11.2 다차원 배열 542

11.3 문자 배열 544

11.4 셀 배열 551

11.5 구조체 배열 553

CHAPTER

12 기호 수학

12.1 기호 연산 576

12.2 수식과 방정식 풀기 588

12.3 기호수식 그래프 그리기 603

12.4 미분과 적분 614

12.5 미분 방정식 630

12.6 기호수식을 익명함수로 변환하기 634

CHAPTER

13 수치해석 기법

13.1 내삽법 652

13.2 곡선맞춤 664

13.3 대화형 곡선맞춤 도구 680

13.4 차분과 미분 684

13.5 수치 적분 696

13.6 미분방정식의 수치 해법 703

Page 17: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

C O

N

T

E

N

T

S

17

CHAPTER

14 고급 그래픽 기능

14.1 이미지 728

14.2 핸들 그래픽 747

14.3 애니메이션 752

14.4 여러 가지 시각화 기법 759

14.5 3차원 데이터의 시각화 기법 763

CHAPTER

15 그래픽 사용자 인터페이스 만들기

15.1 사용자 상호작용 입력이 하나인 간단한 GUI 775

15.2 사용자 상호작용 입력이 여러 개인 GUI - Ready_Aim_Fire 785

15.3 Ready_Aim_Fire 프로그램 개선하기(1) 789

15.4 Ready_Aim_Fire 프로그램 개선하기(2) 791

15.5 매트랩에 내장된 GUI 템플릿 797

CHAPTER

16 시뮬링크(Simulink)

16.1 시뮬링크 응용분야 806

16.2 시뮬링크 시작하기 807

16.3 시뮬링크로 미분방정식 풀기 816

부록A 매트랩 총정리 832

부록B 그래프의 눈금 조정 기법 848

부록C The Ready_Aim_Fire GUI 852

부록D 기후데이터(미국 기상청) 858

부록E 실습문제해답

생능출판사 홈페이지 www.booksr.co.kr에서 다운로드 할 수 있습니다.

찾아보기 859

Page 18: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을
Page 19: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

매트랩 개요

1.1 매트랩 소개

1.2 매트랩 학생용 버전

1.3 매트랩 이용분야

1.4 공학과 과학 분야의 문제해결방법

01CHAPTER

Page 20: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

이 장을 끝마친 뒤에는 다음을 할 수 있어야 한다.

•매트랩에 대한 기본적인 내용과 공학·과학 분야에서 매트랩이 널리 사용되는 까닭을 이해한다.

•매트랩 학생용 버전의 장점과 단점(한계)을 이해한다.

•체계적 문제해결법을 사용하여 문제를 명확히 표현할 수 있다.

학 습 목 표

매트랩 개요01CHAPTER

1.1 매트랩 소개

매트랩(MATLABⓇ)은 성능이 뛰어난 수학계산용 프로그램이다. 매트랩과 용

도가 비슷한 프로그램으로 메이플(Maple), 매스매티카(Mathematica), 매스캐

드(MathCad)가 있다. 이들 프로그램을 사용해 본 사람마다 특정 프로그램이 가

장 우수하다고 주장할 수는 있겠지만 프로그램마다 장점과 단점이 있으므로 실제

로 어느 한 프로그램이 최고라고 할 수는 없다. 어떤 프로그램이든지 기본적인 수

학계산을 수행하는 기능은 보유하고 있다. 하지만 숫자 대신 기호를 직접 사용하

는 계산(symbolic calculation)이라든지 행렬(matrix) 연산처럼 아주 복잡한 수

학계산을 처리하는 방법에는 프로그램마다 차이가 있다. 예를 들어 매트랩은 행

렬을 다루는 연산에서 탁월한 반면에 메이플은 기호를 사용하는 연산에서 뛰어나

다. MATLAB이라는 이름은 Matrix Laboratory라는 두 단어를 줄여서 만든 것

이다. 기본적으로는 이들 수학계산용 프로그램을 정교한 컴퓨터 계산기로 생각할

수 있다. 즉 이 프로그램들을 사용하면 공학용 계산기가 가진 기능은 물론 그보다

다양한 기능도 수행할 수 있다. 수입·지출의 계산과 같이 아주 간단한 연산을 하

는 경우에도 계산기 대신 컴퓨터에 설치된 매트랩 프로그램을 사용할 수 있다. 공

학계열의 수업에서도 기존의 컴퓨터 프로그래밍 작업으로 계산을 수행하는 대신

에 매트랩과 같은 수학계산용 프로그램을 사용하고 있다. 그렇다고 해서 C++이나

FORTRAN과 같은 고급 언어를 배울 필요가 없는 것은 아니다. 그렇지만 이런 상

황은 매트랩과 같은 프로그램들이 공학과 과학 분야에 종사하는 사람들에게 그만

큼 기본적인 도구가 되었다는 것을 뜻한다.

매트랩은 사용하기 쉬우므로 이를 이용해서 많은 프로그래밍 작업을 수행할 수

있다. 그러나 어떤 프로그래밍 작업의 경우에는 매트랩이 최선의 작업도구가 될 수

Page 21: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

CHAPTER 01 매트랩 개요 21

이 장을 끝마친 뒤에는 다음을 할 수 있어야 한다.

•매트랩에 대한 기본적인 내용과 공학·과학 분야에서 매트랩이 널리 사용되는 까닭을 이해한다.

•매트랩 학생용 버전의 장점과 단점(한계)을 이해한다.

•체계적 문제해결법을 사용하여 문제를 명확히 표현할 수 있다.

학 습 목 표

매트랩 개요01CHAPTER없다. 수치계산(특히, 행렬계산)과 그래픽 작업의 경우에는 매트랩 프로그램은 뛰

어난 성능을 발휘하지만 문서편집용 프로그램(word processing program)으로는

적당하지 않다. C++와 포트란(Fortran)은 여러 곳에 두루 쓰이는 범용 프로그램으

로, 이를 운영체제(operating system)나 설계용 소프트웨어와 같이 규모가 큰 응용

프로그램 제작에 사용하는 것은 훌륭한 선택이라고 할 수 있다(실제로, 처음에 포

트란으로 작성했다가 나중에 C로 다시 작성한 대형 응용프로그램이 매트랩이다).

고급언어 프로그램(high-level program)으로는 그래픽 작업을 하기가 쉽지 않은

것이 보통이지만 매트랩은 이에 아주 뛰어나다. 매트랩과 고급언어, 프로그램언어

를 모두 활용할 수 있는 영역이 막대한 자료의 반복계산이나 처리가 요구되는 수치

계산 작업이다. 매트랩과 고급언어 프로그램은 모두 수치처리기능이 우수하다. 일

반적으로 수치계산 프로그램은 매트랩으로 작성하는 것이 쉽지만 C++나 포트란으

로 작성하는 것이 수행속도는 더 빠르다. 여기에 한 가지 예외가 있는데, 바로 행렬

(matrix)을 사용하는 계산이 있을 경우이다. 매트랩은 행렬을 처리하는 데 최적화

되어 있다. 따라서 어떤 문제를 행렬을 써서 수식으로 만들 수 있는 경우에는 고급

언어로 작성한 프로그램보다 매트랩으로 작성한 것이 실제로 더 빨리 수행된다.

매트랩에는 전문가용 버전(professional version)과 학생용 버전(student

version)이 따로 있다. 대학의 전산실습실에 설치되어 있는 것은 대개 전문가용

버전이고 집에서도 쓸 수 있도록 가격부담을 낮춘 것이 학생용 버전이다. 매트랩

은 정기적으로 업데이트(update)되고 있으며, 이 책은 MATLABⓇ 8.1 버전을

기준으로 하고 있다. 여러분이 MATLABⓇ 6 또는 7을 사용하고 있는 경우에는

MATLABⓇ 8.1과 그다지 큰 차이가 없다고 느낄 것이다. 그렇지만 MATLABⓇ

5.5 이전 버전과는 상당한 차이점이 있다.

매트랩의 전문가용 버전의 표준판으로 다양한 공학 및 과학 기술 문제를 풀 수

있다. 표준판에 들어있지 않은 기능을 이용하려면 다른 툴박스(toolbox, 도구상자)

가 있어야 하는데, 표준판과 별도로 구매해야 한다. 매트랩 제품군에 들어있는 툴

박스의 전체 목록은 매스웍스(MathWorks)사의 웹사이트인 www.mathworks.

com(한국은 kr.mathworks.com)에서 확인할 수 있다.

1.2 매트랩 학생용 버전

매트랩 전문가용 버전과 학생용 버전은 거의 비슷하다. 매트랩을 처음 배우는 학생

들은 아마도 그 차이점을 알기 어려울 것이다. 매트랩 학생용 버전은 마이크로소프

트 윈도우즈(MS Windows), 맥(Mac), 리눅스(Linux) 운영체제용으로 각각 나와 있

매트랩은 행렬을 처리하는

데 최적화되어 있는 프로그

램이다.

꼭 알아두기잠깐

매트랩은 정기적으로 업데

이트되고 있다.

꼭 알아두기잠깐

Page 22: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

공학도를 위한 매트랩22

으며 대학 서점에서 직접 구입하거나 매스웍스(MathWorks) 사의 홈페이지 www.

mathworks.com(한국은 kr.mathworks.com)에서 온라인으로 구매할 수 있다.

매스웍스 사에서는 소프트웨어 몇 개를 패키지로 묶어 릴리즈(release)라는 이름

으로 내놓고 있는데, MATLABⓇ 8.1은 시뮬링크(Simulink)를 비롯한 몇 가지 다

른 소프트웨어들과 함께 릴리즈 2013a(Release R2013a)에 속한다. 전문가용 버전

이나 학생용 버전이나 릴리즈 번호는 같다. 릴리즈 R2013a 학생용 버전에 포함되

어 있는 소프트웨어와 기타 구성품은 다음과 같다.

•Full MATLABⓇ

• SimulinkⓇ(학생용 버전에서는 모델링에 사용가능한 블록 개수가 최대 1,000

개로 제한되어 있지만 전문가용 버전에서는 개수 제한이 없음)

• Symbolic Math Toolbox

• Control System Toolbox

• Data Acquisition

• Instrument Control Toolbox

• Simulink Control Design

• Signal Processing Toolbox

• DSP System Toolbox

• Statistics Toolbox

• Optimization Toolbox

• Image Processing Toolbox

• 개별 라이선스(single-user license). 수업 중 사용하는 학생으로 한정된 라이

선스임(전문가용 판에서는 개별 라이선스와 그룹 라이선스 두 가지가 모두 가

능하다).

학생용 버전에 포함된 툴박스(toolbox)들을 제외한 나머지 툴박스는 따로 구입

해야 한다. 전문가용 버전에는 학생용 버전에 포함되어있는 툴박스들이 없을 수도

있음을 알아두기 바란다.

전문가용 버전과 학생용 버전은 명령 프롬프트(prompt)가 서로 다르다. 즉 전문

가용 버전의 프롬프트는

>>

이지만 학생용 버전에서는

EDU>>

이다.

Page 23: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

CHAPTER 01 매트랩 개요 23

1.3 매트랩 이용분야

공학·연구·기술직 분야에서는 매트랩과 같은 프로그램을 잘 활용하는 능력이 취

업에 필요한 자격조건이 되고 있다. 다음은 최근에 Monster.com이라는 구인구직

사이트에서 직업검색(job search)을 하여 나온 구인광고이다.

……는 항공전자분야에서 일한 경력을 가진 시스템 테스트 엔지니어를

모집합니다. ……담당할 업무는 MATLABⓇ 프로그램의 작성과 수정,

SimulinkⓇ 시뮬레이션 수행, 결과 데이터의 분석 등입니다. 지원 자격으

로는 MATLABⓇ, SimulinkⓇ, C++에 능통해야 하며……

이 광고는 흔히 볼 수 있는 형태이다. 직업검색에서 나온 광고를 더 살펴보니 이

회사 말고도 신입 엔지니어의 자격 조건으로 매트랩의 능숙한 사용을 요구한 광고

를 낸 회사가 771개나 되었다. 매트랩은 공학과 과학의 모든 분야에서 널리 사용되

고 있지만 특히 전기·전자공학 응용 분야에서 인기가 있는 프로그램이다. 다음 절

부터는 현재 매트랩이 사용되고 있는 응용 분야 중에서 몇 개를 골라 살펴보기로

한다.

1.3.1 전기·전자공학(electrical engineering)

전기·전자공학에서는 매트랩이 다양한 분야에서 광범위하게 응용되고 있다. 예를

들어보자. [그림 1.1]의 그래프는 전자기장(electromagnetic field)이 공간에 분포하

고 있는 형태와 시간에 따라 변화하는 모습을 보여주고 있다. 전기·전자 장치에는

실제로 이러한 전자기장이 분포한다. 이 전자기장에 대한 지식과 이해 덕분에 셀룰

러 통신(이동통신), 의료 진단(medical diagnostics), 가정용 컴퓨터와 같은 기술을

사용할 수 있는 것이다.

1.3.2 의용생체공학(biomedical engineering)

(a) (b) (c)

[그림 1.1] 전자기장 분포(유타대학 전기컴퓨터공학과 나겔 박사(Dr. James R. Nagel) 제공)

(a) 표면 플라즈몬 폴라리톤

(surface plasmon polariton)

(b) 금속 원기둥에 의해 산란

되는 빛

(c) 6-소자 다이폴 배열(six-

element dipole array) 안테

나에서 방사되는 전자기장

매트랩은 공학분야에서 널

리 사용되고 있다.

꼭 알아두기잠깐

Page 24: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

공학도를 위한 매트랩24

의료용 영상(medical image) 파일은 DICOM이라는 표준형식으로 저장되는 것

이 보통이다(DICOM은 Digital Imaging and Communications In Medicine의 머

리글자를 따서 만든 용어이다). dicom 파일의 확장자는 .dcm이다. 매스웍스 사에

서 제공하는 툴박스 중에서 Image Processing Toolbox를 사용하면 매트랩으로

dicom 파일을 읽어 들여 데이터 처리를 할 수 있다(Image Processing Toolbox는

학생용 버전에는 기본으로 포함되어 있지만 전문가용 버전에서는 선택사항이다).

Image Processing Toolbox에는 다양한 함수들이 들어 있는데 이 중 많은 함수들

이 특히 의료용 영상의 처리에 적합하다. 기본형 매트랩 프로그램에는 MRI 데이터

파일이 몇 개 들어 있는데 이 파일들은 매트랩에서 사용할 수 있도록 매트랩과 호

환되는 형식으로 미리 변환된 것이다. 이 파일들을 사용하여 기본형 매트랩 프로그

[그림 1.2] 매트랩에 들어있는 샘플 데이터 파일에 저장된 뇌 수평단면 MRI 영상

[그림 1.3] MRI 데이터 파일로 만든 3차원 뇌영상

Page 25: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

CHAPTER 01 매트랩 개요 25

램을 설치하면 생기는 몇 가지 영상처리 함수의 기능을 시험해볼 수 있다. 혹시 여

러분의 컴퓨터에 확장형 영상처리 툴박스(expanded imaging toolbox)가 설치되어

있으면 이 툴박스에서 추가로 제공하는 영상처리 함수들의 기능도 확인해볼 수 있

다. [그림 1.2]에는 뇌의 수평단면 영상이 여섯 개 실려 있는데, 이 영상들은 매트랩

에 MRI 데이터 파일로 저장된 것들이다.

이 데이터 파일들을 사용하여 [그림 1.3]과 같은 3차원 뇌 영상을 만들 수 있다. 3

차원 영상을 만드는 자세한 방법은 도움말 설명서(MATLABⓇ tutorial)에 들어 있

다. 이 설명서는 매트랩 프로그램의 화면에서 도구표시줄(툴바, toolbar)에 있는 도

움말 버튼(help button)을 눌러 불러낼 수 있다.

1.3.3 유체역학(Fluid Dynamics)

유체의 속도벡터(속력과 방향)를 계산하는 일이 중요한 분야가 많이 있다. 특히 항

공우주공학자들은 비행기나 우주선의 외부와 연소실 내부에서 일어나는 기체의 움

직임에 관심을 둔다. 이러한 3차원 공간에서 일어나는 유체의 움직임을 그래프 등

으로 시각화하는 것은 매우 까다로운 일이지만 매트랩은 이를 쉽게 처리할 수 있

는 여러 가지 도구(tool)를 가지고 있다. [그림 1.4]에 있는 그래프는 어떤 로켓추력방

향제어장치(thrust vector control device)의 유체의 속도벡터를 계산하여 이를 화

2

1.5

0.5

00 0.5 1 1.5 2

1

고압가스 저장장치에서 구부러진 파이프 속으로 유입되는 유체의 속도

y축

x축

[그림 1.4] 로켓추력방향제어장치에서 기체의 속도벡터

Page 26: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

공학도를 위한 매트랩26

살표로 그려주는 quiver plot 방식으로 나타낸 것이다. 추력방향제어란 액추에이터

(actuator, 피스톤-실린더 장치)로 노즐의 방향을 조종하여 그 방향으로 로켓이 진

행하도록 제어하는 방식이다. [그림 1.4]는 고압가스저장장치(plenum)의 기체가 피스

톤을 밀어 액추에이터의 길이를 제어하는 과정을 모델링하여 계산한 결과이다.

1.4 공학과 과학 분야의 문제해결방법

공학, 과학, 컴퓨터 프로그래밍 분야의 문제들을 푸는 데는 어떤 일관된 방법을 사

용하는 것이 중요하다. 이 절에서 설명하는 문제해결 방법은 화학, 물리학, 열역학,

공학 설계와 같은 다양한 분야에서 유용하다. 또한 경제학, 사회학과 같은 사회과

학에도 적용할 수 있다. 다른 책에서 제시하는 문제해결법이 이 방법과는 조금 다

를 수 있어도 기본적인 구성은 이 책과 같다고 볼 수 있다. 이 책에서 사용하는 체

계적 문제해결방법은 다음과 같이 5개 단계로 이루어져 있다.

● 문제를 명확히 나타낸다.

•이 단계에서는 그림을 그려보는 것이 도움이 될 때가 많다.

•문제를 확실히 이해하지 못하면 문제를 풀기가 어려워진다.

● 입력(아는 값)과 출력(모르는 값)을 표시한다.

• 입력 값과 출력 값을 표시할 때는 단위를 꼭 포함시켜야 한다. 단위를 제대로

다루지 않으면 틀린 답이 나온다.

• 계산에 사용되는 상수에는 어떤 것이 있는지 확인한다. 계산에 많이 사용되는

상수의 예를 들어보면 이상기체 상수, 중력가속도가 있다.

• 입력 값에 이름(label)을 붙인다. 또는 여러 입력을 하나의 표(table)로 만든다.

● 문제를 풀기 위한 알고리즘을 개발한다. 먼저 손으로 샘플 문제를 만들어 풀고 이

를 참고로 컴퓨터 프로그램으로 알고리즘을 만드는 방법을 일반적으로 사용

한다.

• 아는 값(입력)과 모르는 값(출력) 사이에 존재하는 관계식을 찾아낸다.

• 간단한 형태의 샘플문제를 만든 다음에 이를 손이나 계산기로 풀어본다.

● 문제를 푼다. 이 책에서는 이 단계에서 매트랩으로 프로그램을 작성하고 이를 실

행하여 답을 구한다.

● 풀이를 검사한다.

• 풀이 결과가 이치에 맞는가?

공학, 과학분야의 문제를 풀

때는 항상 체계적 문제해결

방법을 사용한다.

꼭 알아두기잠깐

Page 27: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

CHAPTER 01 매트랩 개요 27

• 앞에서 손이나 계산기로 푼 샘플 계산 결과와 일치하는가?

• 풀이 결과가 문제에서 요구한 답이 확실한가?

• 계산 결과를 그래프로 그려보면 이것이 맞는지 검사하는 데 도움이 된다.

여기서 제시한 체계적 문제해결방법을 확실하게 따르게 되면 긴 문장으로 된

응용문제들을 훨씬 쉽게 풀 수 있다. 이 방법을 적용하여 [예제 1.1]을 풀어보기로

하자.

[그림 1.5]의 아인슈타인(Albert Einstein)은 20세기의 가장 유명한 과학자이다. 1879년

에 독일에서 출생한 아인슈타인은 독일과 스위스에서 학교를 다녔다. 그가 베른(Bern)에

있는 특허사무소에서 근무하는 동안에 그 유명한 상대성이론을 창안했다. 그가 만든 다

음 식은 오늘날 가장 유명한 방정식이다.

E mc2=

아주 간단한 이 방정식으로, 그전까지 아무런 연관성이 없다고 여겨 별도의 양으로 다루

어졌던 질량과 에너지가 서로 교환될 수 있음이 밝혀졌다. 이 식을 이용하면 자연적인 핵

반응이나 인위적인 핵반응에서 질량이 줄어들면서 방출되는 에너지의 양을 구할 수 있다.

태양은 1초당 방출하는 에너지의 양은 385 × 1024 J/s이다. 이 막대한 에너지는 핵반응

에 의해 질량이 에너지로 변환되며 발생하는 것이다. 태양이 이와 같은 비율로 에너지를

방출하는 과정에서 하루에 얼마나 많은 질량이 핵반응에 의해 줄어드는지 아인슈타인 방

정식과 매트랩을 사용하여 계산해보자.

1. 문제를 명확히 나타낸다.

태양이 1일 동안 방출하는 에너지를 발생시키는 데 필요한 질량의 크기를 구한다.

2. 입력과 출력을 표시한다.

입력

초당 방출 에너지 E = 385 × 1024 J/s을 사용하여 1일 동안 방출되는 총 에너지를 구

한다.

빛의 속도 c = 3.0 × 108 m/s

출력

질량 m kg

3. 손이나 계산기로 문제를 미리 풀어본다.

태양이 하루에 방출하는 총 에너지를 계산하면 다음과 같다.

예제 1.1

EXAMPLE

질량과 에너지의 상호변환

Page 28: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

공학도를 위한 매트랩28

[그림 1.5] 알버트 아인 슈 타 인 ( A l b e r t Einstein(1879.3.14~ 1955.4.18))

.sJ s J385 1013600

124

1 3 33 1024 31# # # # #=시간 일

시간일

질량 m을 구하기 위해 다음과 같이 방정식 E=mc2을 m에 대해 정리한 다음, E와 c에

값을 대입한다.

( . / )

.

./

m s

J

m s

J

mcE

m3 0 10

3 33 10

3 7 10

2

8 2

31

142 2

#

#

#

=

=

=

계산 결과는 질량이므로 kg 단위로 나와야 하는데 그렇지 않으므로 위의 계산은 잘못

된 것이 아닐까? 잘못되었다면 어떤 것일까? 이를 확인하기 위해 단위를 바꾸어보기

로 하자. 그러면 다음과 같이 질량의 단위인 kg이 되는 것을 알 수 있다.

/

./

/.

J kg m s

m s

kg m skgm

1 1

3 7 10 3 7 10

2 2

142 2

2 214# #

=

= =

이므로

4. 매트랩으로 문제를 푼다.

아직 여러분들은 매트랩 프로그램으로 명령을 작성할 수 있을 만큼 공부를 하지 않은

상태이다. 그러나 아래에 나타낸 매트랩 명령어를 보면 매트랩 문법이 공학용 계산기

에서 사용하는 방법과 비슷함을 알 수 있다. 매트랩의 명령창(command window)에

서 프롬프트인 >> 옆에 명령을 입력하면 바로 다음 줄에 그 명령을 실행한 결과가 표

시된다. 이 문제를 풀기 위한 매트랩 명령은 다음과 같다.

Page 29: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을

CHAPTER 01 매트랩 개요 29

>> E=385e24 사용자가 키보드로 입력한 명령

E = 3.8500e+026 컴퓨터 응답(매트랩 실행 결과)>> E=E*3600*24 E = 3.3264e+031>> c=3e8c = 300000000>> m=E/c^2m = 3.6960e+014

앞으로는 명령창에 입력한 명령과 실행결과를 나타낼 때 프롬프트는 생략하기로

한다.

5. 풀이를 검사한다.

매트랩으로 푼 결과는 손으로 계산한 결과와 일치했다. 이제 계산으로 얻은 값이 이치

에 맞는 답인지 확인해보자. 3.7에 1014을 곱한 값은 매우 큰 수이긴 하지만 태양의 질

량은 2×1030 kg이나 된다. 태양의 질량이 하루에 3.7×1014 kg씩 감소한다고 할 때, 태

양의 질량이 완전히 다 소멸되는 데 걸리는 시간을 계산해보자.

시간 = 태양의 질량질량 감소율

시간 = . /

.kg

kg

3 7 10

2 103651

1 5 1014

3013

#

## #=

일 일년 년

태양이 사라지는 데 걸리는 시간은 무려 15조 년이다! 따라서 우리가 살아있는 동안에

태양의 질량이 없어질 것을 걱정할 필요는 없다.

Page 30: 공학도를 위한 매트랩 - booksr.co.kr³µ학도를위한매트랩_미리... · 4장에서는 매트랩에서 행렬을 만들고 조작하여 문제를 해결하는 방법을