[ 선형대수 : matlab ] ch ap 4: 행렬다루기

54
[ 선선선선 :Matlab] Chap 4: 선선선선선

Upload: vernon-ballard

Post on 04-Jan-2016

300 views

Category:

Documents


0 download

DESCRIPTION

[ 선형대수 : Matlab ] Ch ap 4: 행렬다루기. 최 윤 정. 학습차례. 행렬 다루기 두 변수 사이의 연산 특수 행렬. 학습목표. 행렬을 다룬다 . 행렬로부터 데이터를 추출한다 . 크기가 다른 2 개의 행렬변수로 문제를 풀 수 있다 . 특수 행렬을 만들고 사용한다. 4.1 행렬 다루기. 지금까지 배운 것을 간단히 복습해본다 . 사각형 괄호 안에 숫자들을 타이핑하여 행렬을 만들어본다. 행렬을 만드는 방법. A=[3.5] B=[1.5, 3.1] 또는 B=[1.5 3.1] - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

최 윤 정

[ 선형대수 :Matlab]

Chap 4: 행렬다루기

Page 2: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 2

행렬 다루기두 변수 사이의 연산특수 행렬

학습차례

Page 3: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 3

행렬을 다룬다 .

행렬로부터 데이터를 추출한다 .

크기가 다른 2 개의 행렬변수로 문제를 풀 수 있다 .

특수 행렬을 만들고 사용한다 .

학습목표

Page 4: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 4

4.1 행렬 다루기

지금까지 배운 것을 간단히 복습해본다 .

사각형 괄호 안에 숫자들을 타이핑하여 행렬을 만들어본다 .

Page 5: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 5

A=[3.5]

B=[1.5, 3.1]

또는 B=[1.5 3.1]

C=[-1, 0, 0; 1, 1, 0; 0, 0, 2];

행렬을 만드는 방법

Page 6: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 6

각 행을 한 줄씩 따로 작성하여 2 차원 행렬을 만들 수도 있다 .

C = [-1, 0, 0 1, 1, 0 1, -1, 0 0, 0,

2]

F = [1, 52, 64, 197, 42, -42, … 55, 82, 22, 109];

Page 7: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 7

스칼라

Page 8: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 8

벡터 – 쉼표는 넣지 않아도 에러는 없다 .

Page 9: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 9

2 차원 행렬

이 경우 세미콜론은 넣지 않아도 된다 .

Page 10: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 10

행렬을 만들 때 이미 만든 다른 행렬을 이용할 수도 있다 .

Page 11: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 11

인덱스 번호를 사용하여 행렬 안에 원소를 추가할 수도 있다 .

Page 12: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 12

행렬을 새로 만드는 데 사용 이미 만든 행렬에서 특정 원소들을 뽑아내는 데 사용 이미 만든 행렬에서 특정 원소들의 값을 바꿀 때 사용

콜론 연산자 (:)

Page 13: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 13

간격이 일정한 벡터

간격 값을 지정하지 않으면

매트랩은 간격을 1 로 잡는다 .

간격 지정하기

간격을 0.5 로 지정하는 경우

Page 14: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 14

콜론 연산자는 전체 행 또는 전체 열을 가리키는 데 사용된다 .

모든 행의 원소 중에서 1 열에 있는 원소

모든 행의 원소 중에서 4 열에 있는 원소

1 행에 있는 원소 중에서 모든 열의 원소

Page 15: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 15

특정한 행이나 열을 뽑아내는 방법( 행 1: 행 2, : )

2~3 행에 있는 원소 중에서 모든 열의 원소

2~3 행에 있는 원소 중에서 4~5 열에 있는 원소

Page 16: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 16

콜론 하나만을 입력에 넣으면 행렬이 열벡터로 바뀐다 .

매트랩에서는 행보다는 열이 우선이다 .

행렬을 열 벡터로 변환하는 방법

Page 17: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 17

인덱스 번호 두 개를 사용 ( 행번호와 열번호 )

예 : M(2,3)

행렬 안의 특정 원소를 가리키는 방법

2 행 , 3 열의 원소를 가리키려면

M(2,3)

한 개의 인덱스 번호를 사용하여 M(8) 이라고 해도 M(2,3) 과 마찬가지이다 .

1 4 7 10 13

2 5 8 11 14

3 6 9 12 15

한 개의 인덱스 번호의 순서

Page 18: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 18

end 는 행렬의 마지막 행이나 마지막 열을 가리키므로 행렬의 크기가 얼마인지 신경쓰지 않아도 된다 .

1 행 , 마지막 열의 원소

마지막 행 , 마지막 열의 원소

맨 마지막 원소

Page 19: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 19

실습문제 4.1 풀어보기

Page 20: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 20

4.2 두 변수 사이의 연산

지금까지는 단 1 개의 변수만을 사용하는 계산을 공부하였다 .

그런데 , 대부분의 물리적인 현상은 다양한 요인 ( 즉 변수 ) 에 의해 변하게 된다 .

지금부터는 행렬인 변수가 여러 개 존재할 때 계산을 수행하는 방법을 배운다 .

Page 21: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 21

스칼라 끼리 연산을 하면 스칼라 값이 나온다 .

Page 22: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 22

스칼라와 벡터 사이의 연산을 수행하면 벡터가 된다 .

Page 23: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 23

벡터와 벡터를 곱하려면 원소의 수가 서로 같아야 한다 .

Page 24: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 24

배열 곱셈 ( .* , 즉 원소끼리의 곱셈 ) 을 해서 얻는 벡터의 원소 수는 원래 벡터의 원소 수와 같다 .

x 와 y 벡터의 크기는 같아야 한다 .

Page 25: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 25

배열 곱셈 ( 원소끼리의 곱셈 )

x

1 2 3 4 5

y

1.0 1

1.5 3

2.0 6

2.5 10

3.0 ? 15

Page 26: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 26

meshgrid 함수를 이용하면 두 벡터 (1 차원 행렬 ) 를 2 차원 격자 (grid) 행렬로 만들 수 있다 .

Page 27: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 27

두 행렬의 크기가 같으므로 서로 곱할 수 있다 .

Page 28: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 28

따라서 x 와 y 의 모든 조합에 대해 곱셈을 한 결과를 얻을 수 있다 .

x

1 2 3 4 5

y 1 1 2 3 4 5

2 2 4 6 8 10

3 3 6 9 12 15

Page 29: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 29

실문문제 4.2 풀어보기

Page 30: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 30

예제 4.2: 수평선까지의 거리

Rhhd 22

222 )( hRdR

Page 31: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 31

달과 지구의 산꼭대기에서 수평선까지의 거리를 구한다 .

산의 높이는 0~8000m 범위로 한다 .

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

Page 32: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 32

입력 달의 반지름 R=1737 km

지구의 반지름 R=6378 km

산의 높이 h=0~8000 m

출력 산꼭대기에서 수평선까지의 거리 d=?

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

Page 33: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 33

3. 손이나 계산기로 문제를 미리 풀어본다 . (168 쪽 참조 )

Rhhd 22

222 )( hRdR

Page 34: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 34

손으로 푼 과정을 참고하면서 매트랩으로 문제를 풀어본다 .( 교재 168~169 쪽 )

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

Page 35: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 35

손으로 계산한 결과와 일치하는지 확인이치에 맞는 답인지 확인

5. 풀이를 검사한다 .

Page 36: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 36

예제 4.3: 자유낙하

2

2

1tgd

Page 37: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 37

중력이 서로 다른 행성에서 자유낙하 물체의 낙하거리를 구한다 .

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

Page 38: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 38

입력 각 행성과 달에서의 중력가속도 g 값 낙하시간 t=0~100 초

출력 각 행성과 달에서의 낙하거리 d

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

행성 중력가속도 g

수성 3.7 m/s2

금성 8.87

지구 9.8

달 1.6

화성 3.7

목성 23.12

토성 8.96

천왕성 8.69

해왕성 11.0

명왕성 0.58

Page 39: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 39

3. 손이나 계산기로 문제를 미리 풀어본다 . (170 쪽 참조 )

2

2

1tgd

m500,18

)s100(m/s7.32

1

2

1

s100

m/s7.3

222

2

tgd

t

g

수성에서 100 초 동안 낙하한 거리 ?

Page 40: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 40

손으로 푼 과정을 참고하면서 매트랩으로 문제를 풀어본다 .

( 교재 171~172 쪽 )

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

Page 41: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 41

M 파일 실행결과

Page 42: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 42

손으로 계산한 결과와 일치하는지 확인이치에 맞는 답인지 확인

5. 풀이를 검사한다 .

Page 43: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 43

4.3 특수 행렬

• zeros 원소의 값이 모두 0 인 행렬을 만든다 .• ones 원소의 값이 모두 1 인 행렬을 만든다 .• diag 행렬의 대각선에 a 있는 원소를 뽑아낸다 . • 대각선 행렬이나 단위행렬을 만드는 데도 사용된다 .• Magic 마방진 행렬을 만든다

Page 44: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 44

zeros, ones 에 스칼라 입력을 한 개만 넣어주면 정사각형 행렬을 만들 수 있다 .

Page 45: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 45

두 개의 입력을 사용하면 행의 수와 열의 수를 지정할 수 있다 .

Page 46: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 46

diag 함수

정사각형 행렬에 diag 함수를 사용하면 주 대각선에 있는 원소들을 뽑아낼 수 있다 .

Page 47: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 47

diag 함수의 입력에 벡터를 넣으면 그 벡터의 원소들이 주 대각선에 배치된다

diag 함수

Page 48: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 48

마방진 행렬

Page 49: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 49

미 목판화는 알브레히트 뒤러 (Al-

brect Durer) 가 1514 년에 제작한 멜랑콜리아 (Melancholia) 이다 . 이 그림에서 천사의 머리 위에 마방진 행렬이 있는 것을 을 볼 수 있다 .

Page 50: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 50

뒤러는 마방진 행렬에 제작년도를 써 넣었다 .

Page 51: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 51

뒤러의 마방진 행렬은 매트랩으로 만든 마방진 행렬과 약간 다르다 .

뒤러는 제작년도를 표시하기 위해 2 열과 3 열의 원소를 서로 바꾸었다 .

Page 52: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 52

행렬을 몇 개 결합하여 다른 행렬을 만들 수 있다 .

이미 존재하는 행렬에서 필요한 부분을 따로 뽑아낼 수 있다 .

요약

Page 53: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 53

콜론 연산자 원소의 간격이 일정한 행렬을 만들 수 있다 .

행렬에서 특정 부분의 원소들을 뽑아내는 데 사용된다 .

2 차원 행렬을 열 벡터로 변환하는 데 사용된다 .

Meshgrid

1 차원 벡터로부터 2 차원 행렬을 만들어준다 .

크기가 다른 두 벡터 사이의 곱셈을 수행할 수 있다 .

요약

Page 54: [ 선형대수 : Matlab ] Ch ap 4:  행렬다루기

MATLAB for Engineers 54

zeros

원소의 값이 모두 0 인 행렬을 만든다 .

ones

원소의 값이 모두 1 인 행렬을 만든다 .

diag

행렬의 대각선에 있는 원소를 뽑아낸다 . 대각선 행렬이나 단위행렬을 만드는 데도 사용된다 .

magic

마방진 행렬을 만든다 .

요약