[ 선형대수 : matlab ] ch ap 4: 행렬다루기
DESCRIPTION
[ 선형대수 : Matlab ] Ch ap 4: 행렬다루기. 최 윤 정. 학습차례. 행렬 다루기 두 변수 사이의 연산 특수 행렬. 학습목표. 행렬을 다룬다 . 행렬로부터 데이터를 추출한다 . 크기가 다른 2 개의 행렬변수로 문제를 풀 수 있다 . 특수 행렬을 만들고 사용한다. 4.1 행렬 다루기. 지금까지 배운 것을 간단히 복습해본다 . 사각형 괄호 안에 숫자들을 타이핑하여 행렬을 만들어본다. 행렬을 만드는 방법. A=[3.5] B=[1.5, 3.1] 또는 B=[1.5 3.1] - PowerPoint PPT PresentationTRANSCRIPT
최 윤 정
[ 선형대수 :Matlab]
Chap 4: 행렬다루기
MATLAB for Engineers 2
행렬 다루기두 변수 사이의 연산특수 행렬
학습차례
MATLAB for Engineers 3
행렬을 다룬다 .
행렬로부터 데이터를 추출한다 .
크기가 다른 2 개의 행렬변수로 문제를 풀 수 있다 .
특수 행렬을 만들고 사용한다 .
학습목표
MATLAB for Engineers 4
4.1 행렬 다루기
지금까지 배운 것을 간단히 복습해본다 .
사각형 괄호 안에 숫자들을 타이핑하여 행렬을 만들어본다 .
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];
행렬을 만드는 방법
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];
MATLAB for Engineers 7
스칼라
MATLAB for Engineers 8
벡터 – 쉼표는 넣지 않아도 에러는 없다 .
MATLAB for Engineers 9
2 차원 행렬
이 경우 세미콜론은 넣지 않아도 된다 .
MATLAB for Engineers 10
행렬을 만들 때 이미 만든 다른 행렬을 이용할 수도 있다 .
MATLAB for Engineers 11
인덱스 번호를 사용하여 행렬 안에 원소를 추가할 수도 있다 .
MATLAB for Engineers 12
행렬을 새로 만드는 데 사용 이미 만든 행렬에서 특정 원소들을 뽑아내는 데 사용 이미 만든 행렬에서 특정 원소들의 값을 바꿀 때 사용
콜론 연산자 (:)
MATLAB for Engineers 13
간격이 일정한 벡터
간격 값을 지정하지 않으면
매트랩은 간격을 1 로 잡는다 .
간격 지정하기
간격을 0.5 로 지정하는 경우
MATLAB for Engineers 14
콜론 연산자는 전체 행 또는 전체 열을 가리키는 데 사용된다 .
모든 행의 원소 중에서 1 열에 있는 원소
모든 행의 원소 중에서 4 열에 있는 원소
1 행에 있는 원소 중에서 모든 열의 원소
MATLAB for Engineers 15
특정한 행이나 열을 뽑아내는 방법( 행 1: 행 2, : )
2~3 행에 있는 원소 중에서 모든 열의 원소
2~3 행에 있는 원소 중에서 4~5 열에 있는 원소
MATLAB for Engineers 16
콜론 하나만을 입력에 넣으면 행렬이 열벡터로 바뀐다 .
매트랩에서는 행보다는 열이 우선이다 .
행렬을 열 벡터로 변환하는 방법
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
한 개의 인덱스 번호의 순서
MATLAB for Engineers 18
end 는 행렬의 마지막 행이나 마지막 열을 가리키므로 행렬의 크기가 얼마인지 신경쓰지 않아도 된다 .
1 행 , 마지막 열의 원소
마지막 행 , 마지막 열의 원소
맨 마지막 원소
MATLAB for Engineers 19
실습문제 4.1 풀어보기
MATLAB for Engineers 20
4.2 두 변수 사이의 연산
지금까지는 단 1 개의 변수만을 사용하는 계산을 공부하였다 .
그런데 , 대부분의 물리적인 현상은 다양한 요인 ( 즉 변수 ) 에 의해 변하게 된다 .
지금부터는 행렬인 변수가 여러 개 존재할 때 계산을 수행하는 방법을 배운다 .
MATLAB for Engineers 21
스칼라 끼리 연산을 하면 스칼라 값이 나온다 .
MATLAB for Engineers 22
스칼라와 벡터 사이의 연산을 수행하면 벡터가 된다 .
MATLAB for Engineers 23
벡터와 벡터를 곱하려면 원소의 수가 서로 같아야 한다 .
MATLAB for Engineers 24
배열 곱셈 ( .* , 즉 원소끼리의 곱셈 ) 을 해서 얻는 벡터의 원소 수는 원래 벡터의 원소 수와 같다 .
x 와 y 벡터의 크기는 같아야 한다 .
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
MATLAB for Engineers 26
meshgrid 함수를 이용하면 두 벡터 (1 차원 행렬 ) 를 2 차원 격자 (grid) 행렬로 만들 수 있다 .
MATLAB for Engineers 27
두 행렬의 크기가 같으므로 서로 곱할 수 있다 .
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
MATLAB for Engineers 29
실문문제 4.2 풀어보기
MATLAB for Engineers 30
예제 4.2: 수평선까지의 거리
Rhhd 22
222 )( hRdR
MATLAB for Engineers 31
달과 지구의 산꼭대기에서 수평선까지의 거리를 구한다 .
산의 높이는 0~8000m 범위로 한다 .
1. 문제를 명확히 나타낸다 .
MATLAB for Engineers 32
입력 달의 반지름 R=1737 km
지구의 반지름 R=6378 km
산의 높이 h=0~8000 m
출력 산꼭대기에서 수평선까지의 거리 d=?
2. 입력과 출력을 표시한다 .
MATLAB for Engineers 33
3. 손이나 계산기로 문제를 미리 풀어본다 . (168 쪽 참조 )
Rhhd 22
222 )( hRdR
MATLAB for Engineers 34
손으로 푼 과정을 참고하면서 매트랩으로 문제를 풀어본다 .( 교재 168~169 쪽 )
4. 매트랩으로 문제를 푼다 .
MATLAB for Engineers 35
손으로 계산한 결과와 일치하는지 확인이치에 맞는 답인지 확인
5. 풀이를 검사한다 .
MATLAB for Engineers 36
예제 4.3: 자유낙하
2
2
1tgd
MATLAB for Engineers 37
중력이 서로 다른 행성에서 자유낙하 물체의 낙하거리를 구한다 .
1. 문제를 명확히 나타낸다 .
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
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 초 동안 낙하한 거리 ?
MATLAB for Engineers 40
손으로 푼 과정을 참고하면서 매트랩으로 문제를 풀어본다 .
( 교재 171~172 쪽 )
4. 매트랩으로 문제를 푼다 .
MATLAB for Engineers 41
M 파일 실행결과
MATLAB for Engineers 42
손으로 계산한 결과와 일치하는지 확인이치에 맞는 답인지 확인
5. 풀이를 검사한다 .
MATLAB for Engineers 43
4.3 특수 행렬
• zeros 원소의 값이 모두 0 인 행렬을 만든다 .• ones 원소의 값이 모두 1 인 행렬을 만든다 .• diag 행렬의 대각선에 a 있는 원소를 뽑아낸다 . • 대각선 행렬이나 단위행렬을 만드는 데도 사용된다 .• Magic 마방진 행렬을 만든다
MATLAB for Engineers 44
zeros, ones 에 스칼라 입력을 한 개만 넣어주면 정사각형 행렬을 만들 수 있다 .
MATLAB for Engineers 45
두 개의 입력을 사용하면 행의 수와 열의 수를 지정할 수 있다 .
MATLAB for Engineers 46
diag 함수
정사각형 행렬에 diag 함수를 사용하면 주 대각선에 있는 원소들을 뽑아낼 수 있다 .
MATLAB for Engineers 47
diag 함수의 입력에 벡터를 넣으면 그 벡터의 원소들이 주 대각선에 배치된다
diag 함수
MATLAB for Engineers 48
마방진 행렬
MATLAB for Engineers 49
미 목판화는 알브레히트 뒤러 (Al-
brect Durer) 가 1514 년에 제작한 멜랑콜리아 (Melancholia) 이다 . 이 그림에서 천사의 머리 위에 마방진 행렬이 있는 것을 을 볼 수 있다 .
MATLAB for Engineers 50
뒤러는 마방진 행렬에 제작년도를 써 넣었다 .
MATLAB for Engineers 51
뒤러의 마방진 행렬은 매트랩으로 만든 마방진 행렬과 약간 다르다 .
뒤러는 제작년도를 표시하기 위해 2 열과 3 열의 원소를 서로 바꾸었다 .
MATLAB for Engineers 52
행렬을 몇 개 결합하여 다른 행렬을 만들 수 있다 .
이미 존재하는 행렬에서 필요한 부분을 따로 뽑아낼 수 있다 .
요약
MATLAB for Engineers 53
콜론 연산자 원소의 간격이 일정한 행렬을 만들 수 있다 .
행렬에서 특정 부분의 원소들을 뽑아내는 데 사용된다 .
2 차원 행렬을 열 벡터로 변환하는 데 사용된다 .
Meshgrid
1 차원 벡터로부터 2 차원 행렬을 만들어준다 .
크기가 다른 두 벡터 사이의 곱셈을 수행할 수 있다 .
요약
MATLAB for Engineers 54
zeros
원소의 값이 모두 0 인 행렬을 만든다 .
ones
원소의 값이 모두 1 인 행렬을 만든다 .
diag
행렬의 대각선에 있는 원소를 뽑아낸다 . 대각선 행렬이나 단위행렬을 만드는 데도 사용된다 .
magic
마방진 행렬을 만든다 .
요약