MATLAB을 이용한 프로그래밍

Download Report

Transcript MATLAB을 이용한 프로그래밍

MATLAB
MATLAB 개요와 응용
3장 배열 연산
1
0.9
0.8
0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
MATLAB HCH
목차
 배열의 덧셈과 뺄셈
 배열 곱셈
 배열 나눗셈
 원소별 연산
 MATLAB
내장함수에서의 배열 사용
 난수의 발생
 응용예제
3장 배열과 행렬
2/35
MATLAB HCH

개요
스칼라 또는 배열 변수들이 MATLAB에서 생성되면, 이 변수들은
다양한 수학연산에 사용될 수 있다. MATLAB은 과학과 공학 분야
에서 많은 응용분야를 가진 고급 배열연산을 수행하도록 설계되었
다. 이 장에서는 배열을 이용하여 MATLAB이 수행하는 기본적이고
가장 일반적인 수학 연산을 제시한다.

배열의 덧셈과 뺄셈 연산

선형대수법칙에 따른 배열의 곱셈과 나눗셈, 거듭제곱 연산(표준기호
*, /, ^ 이용)

원소별 연산(element-by-element operation)을 이용한 배열의 곱셈과
나눗셈, 거듭제곱 연산(.*, ./, .^의 기호 이용)
3장 배열과 행렬
3/35
MATLAB HCH

행렬의 덧셈과 뺄셈
같은 크기의(같은 행과 열의 수를 가진) 배열들에 대한 덧셈과 곱셈
은 같은 위치의 원소들을 더하거나 빼서 구한다.
 a11 a12 a13 
b11 b12 b13 
 a11  b11 a12  b12 a13  b13 
A
, B
  AB  

a
a
a
b
b
b
a

b
a

b
a

b
 21 22 23 
 21 22 23 
 21 21 22 22 23 23 
>> v = [3 6 2]; w=[9 -1 5];
>> z = v + w
z=
12 5 7
>> A=[2 -3 7; 8 4 5];
>> B=[10 7 4; -11 15 1];
>> C = A - B
C=
-8 -10 3
19 -11 4
3장 배열과 행렬
>> D = A + B
D = 12
4 11
6
-3 19
>> D-2
ans = 10
2 9
-5 17 4
>> C * 2
ans =
-16 -20 6
38 -22 8
행 렬의 덧셈이나
뺄 셈에 스칼라가
포함된 경우, 행렬
의 모든 원소에 스
칼 라를 더하거나
뺀다.
4/35
배열의 덧셈과 뺄셈 응용예
MATLAB HCH

세 학생의 과목별 중간고사 및 기말고사 성적은 다음 표와 같다. 세 학생의
각 과목별 평균점수와 중간고사에 대한 성적향상 점수를 구하라.
중간고사
이 름
기말고사
국어
영어
수학
물리
국어
영어
수학
물리
이스근
61
78
39
42
69
84
51
46
강후동
49
57
24
36
55
53
31
40
이숭기
92
97
89
84
96
97
92
90
>> M = [61 78 39 42; 49 57 24 36; 92 97 89 84]; %중간고사 성적
>> F = [69 84 51 46; 55 53 31 40; 96 97 92 90]; %기말고사 성적
>> T = 0.5*(M + F) % 학생별, 과목별 총점 구하기
T=
3장 배열과 행렬
65.0000 81.0000 45.0000 44.0000
52.0000 55.0000 27.5000 38.0000
94.0000 97.0000 90.5000 87.0000
>> E = F – M
% 학생별, 과목별 성적 향상
E=
4
4
6
8
6
4
6 12
-4 7
0 3
5/35
MATLAB HCH

배열의 곱셈
MATLAB에서 행렬의 곱은 선형대수의 규칙에 따라 행해진다.
 a11
A
a21
a12
a22
b11 b12 
a13 


,
B

b
b

 21 22 
a23 
b31 b32 


 a11b11  a12b21  a13b31
 AB  
a21b11  a22b21  a23b31
>> A = [ 1 4 3; 2 6 1; 5 2 8];
>> B = [5 4; 1 3; 2 6];
>> C = A*B
T = 15 34
18 32
43 74
>> D = B*A
??? Error using ==> mtimes
Inner matrix dimensions must agree.
3장 배열과 행렬
a11b12  a12b22  a13b32 

a21b12  a22b22  a23b32 
1 4 3 5 4 

 

2 6 1  1 3 
5 2 8 2 6

 

1 5  4 1  3  2 1 4  4  3  3  6  15 34 

 

 2  5  6 1  1 2 2  4  6  3  1 6   18 32 
5  5  2 1  8  2 5  4  2  3  8  6 43 74

 

6/35
행렬 곱과 벡터 곱
MATLAB HCH
(1/2)

행렬의 곱은 교환법칙이 성립하지 않는다. 즉, AB≠BA이다.

벡터 곱 vw의 경우, 두 벡터의 원소 개수는 같아야 하고 한쪽 벡터가 행
벡터이면 나머지 벡터는 열벡터이어야 하며, 스칼라 또는 행렬을 얻게
된다. dot(a, b) 내장함수는 두 벡터의 행∙열 구분 없이 내적을 구한다.
v1
v2
 w1 
 
v3   w2   v1w1  v2 w2  v3 w3 ,
 w3 
 
 w1 
 
 w2   v1 v2
 w3 
 
 w1v1

v3    w2 v1
 w3v1

w1v2
w2 v2
w3v2
w1v3 

w2 v3 
w3v3 
>> A = [ 6 2; 4 7]; B = [3 9; 5 1];
>> C = A*B, D = B*A % A*B≠B*A
C=
28 56
47 43
D=
54 69
34 17
3장 배열과 행렬
7/35
MATLAB HCH
행렬 곱과 벡터 곱
>> v = [ 6 2 4 ]; w = [3; 9; 5];
>> x = v*w
x=
v*w
56
≠ w*v
>> z = w*v
z=
18 6 12
54 18 36
30 10 20
>> dot(v, w)
% v*w
ans =
56
>> F=[1 3; 5 7]; G=[4 2; 1 6];
>> F*G
ans =
7 20
27 52
3장 배열과 행렬
(2/2)
>> G*F
ans =
14 26
31 45
>> A=[2 5 7 0; 10 1 3 4; 6 2 11 5]
A=
2 5 7 0
10 1 3 4
수와 행렬의 곱은
6 2 11 5
행렬의 각 원소에
>> C = 3*A
수를 곱해 구한다.
C=
6 15 21 0
30
3
9 12
18
6 33 15
>> D=A*3
D=
6 15 21 0
30
3
9 12
18
6 33 15
8/35
MATLAB HCH


연립선형방정식의 행렬 표현과 나눗셈
연립선형방정식을 행렬에 의해 간단히
법으로 구할 수 있다.
a11 x1  a12 x2  a13 x3  b1
 a11 a12
a
a21 x1  a22 x2  a23 x3  b2
 21 a22
 a31 a32
a31 x1  a32 x2  a33 x3  b3
표현하고 해를 체계적인 방
a13 
a23 
a33 
 x1   b1 
 x   b   Ax  b
 2  2
 x3  b3 
단위행렬(identity matrix or unity matrix) I
대각선 원소가 모두 1이고 그 외의 원소는 0인 정방행렬(square matrix)로서,
MATLAB에서는 eye(n) 명령어로 생성한다. 스칼라 변수에 1을 곱한 경우처
럼 행렬(또는 벡터)에 단위행렬 I를 곱해도 행렬은 변화가 없다. 즉, AI = A,
Iv = v, BI = B 이다. 만일 A가 정방행렬이면, AI = IA = A이다.
1 0 0 
6 2 9  
  6 2 9  ,
0
1
0
5 10 4  
 5 10 4 

 


0 0 1 
3장 배열과 행렬
1 0 0   7   7 
0 1 0   3    3

    
0 0 1  9  9 
9/35
MATLAB HCH
행렬의 역행렬(Inverse Matrix)

정방행렬인 A와 B를 곱한 결과가 단위행렬 I라면, 두 행렬은 서로 역행
렬의 관계에 있다. 즉 A는 B의 역행렬이며, B는 A의 역행렬이다.
AB = BA = I → A=IB-1 =B-1 or B=IA-1 =A-1
AA-1 =I
→ A-1 은 A의 역행렬

MATLAB에서 A의 역행렬은 A^-1 또는 inv(A) 명령으로 구한다.
>> A= [ 7 4 6; 3 1 8; 2 5 4];
>> B=inv(A)
B=
0.2278 -0.0886 -0.1646
-0.0253 -0.1013 0.2405
-0.0823 0.1709 0.0316
>> A*B % B*A와 동일
ans =
1.0000 0.0000 0.0000
0 1.0000
0
-0.0000 0.0000 1.0000
3장 배열과 행렬
>> A^-1
% A의 역행렬
ans =
0.2278 -0.0886 -0.1646
-0.0253 -0.1013 0.2405
-0.0823 0.1709 0.0316
>> A*A^-1 % AA-1=I
5.55 e-17
ans =
1.0000
0.0000 0.0000
0
1.0000
0
-0.0000
0.0000 1.0000
10/35
행렬식(Determinant)
MATLAB HCH

행렬 A의 determinant는 |A|로 표시하며, MATLAB 명령어 det(A)에
의해 구한다.
A
a11
a12
a21 a22
a11
a12
B  a21 a22
a31 a32
 a11a22  a12a21
a13
a23  a11a22a33  a12a23a31  a13a21a32  a23a32a11  a33a21a12
a33
>> A= [ 1 2 0; 0 1 1; 3 0 1]; det(A)
ans =
7
>> B=[ 1 2 1; 0 1 1; 3 1 1]; det(B)
ans =
3
3장 배열과 행렬
1 2 0 


A  0 1 1 
3 0 1 


1 2 1


B  0 1 1
3 1 1


11/35
MATLAB HCH
행렬 나눗셈
(1/2)

MATLAB에는 ‘right division(/)’과 ‘left division(\)’의 두 가지 형식의 행
렬 나누기가 있다. 연립선형방정식을 Ax=B의 행렬형태로 나타냈을 때
벡터 x는 두 가지 방법으로 구할 수 있다.

Left division \
1) Ax = b의 양변에 A의 역행렬 A-1을 곱하면,
A-1Ax = A-1b → Ix = x = A-1b
즉, Ax = b의 해는 x = A-1b이다. MATLAB 명령어로 x = inv(A)*b 이다.
2) MATLAB에서 left division ‘\’를 이용하여 구할 수도 있다. 즉, x = A\b.

위의 두 방법은 같은 결과를 주는 것처럼 보이지만, MATLAB이 x를 계
산하는 방법은 다르다. Left division ‘\’는 Gauss elimination 방법에 따라
수치적으로 계산한다.

큰 행렬이 포함된 경우, 역행렬 계산이 가우스 소거법보다 정확도가 떨어
질 수 있으므로 선형연립방정식을 푸는 경우에는 left division을 사용하
는 것이 유리하다.
3장 배열과 행렬
12/35
MATLAB HCH

행렬 나눗셈
(2/2)
Right division /

행 벡터 v와 w에 대해, 선형방정식 vA = w 에서 v를 구하려면
vAA-1 = wA-1 → vI = v = wA-1 or v = w/A
즉, vA = w의 해는 v = w/A or wA-1 이다.
>> 4/8
ans = 0.5000
>> 4\8
ans = 2
>> A=[ 4 -2 6; 2 8 2; 6 10 3]; b=[8; 4; 0];
>> x=A^-1 * b
ans =
 4 2 6 
8 
-1.8049
 2 8 2  x   4 : Ax = b


 
0.2927
6 10 3
0 
2.6341
3장 배열과 행렬
Ax=b
>> x2 = inv(A)*b
x2 =
-1.8049
0.2927
2.6341
>> x3 = A\b % 가우스 소거법
x3 =
-1.8049
0.2927
2.63412
13/35
MATLAB HCH

예제 3.1 연립선형방정식의 해
다음 선형연립방정식을 행렬 형식으로 나타내고 해를 구하라.
4x – 2y + 6z = 8
2x + 8y + 2z = 4
6x + 10y + 3z = 0
위 연립방정식을 행렬 형식으로 나타내면 다음과 같다:
 4 2 6   x 
8 
 2 8 2  y   4

  
 
6 10 3  z 
0 
or
x
y
 4 2 6
z   2 8 10   8 4 0 
 6 2 3 
>> A=[ 4 -2 6; 2 8 2; 6 10 3]; b=[8; 4; 0];
>> x=A\ b % x=inv(A)*b로 구할 수도 있음
x = -1.8049
0.2927
2.6341
>> C=[4 2 6;-2 8 10; 6 2 3]; w = [8 4 0];
>> x = w/C
x = -1.8049 0.2927 2.6341
3장 배열과 행렬
Ax = b
→ A-1Ax=A-1b
→ x=A\b
xC=w
→ xCC-1=wC-1
→ x = w/C
14/35
MATLAB HCH
Gauss-Jordan Elimination
(1/2)

선형연립방정식을 행렬로 표현한 후, 계수행렬의 대각선 원소들을 0으
로 만들고 대각선 밑의 원소들은 모두 0으로 만듦으로써 삼각형 모양의
계수 행렬로 변형하여 해를 구하는 방법이다.

예제 : x + 3y + z = 10
4x + y + 2z = 16
x + 2y + 5z= 12
1 3 1  10
 4 1 2  16 

  
1 2 5  12
1
1 3
0 1 4 


0 11 2
1 3 1 
0 1 4 


0 0 46
3장 배열과 행렬

1 3 1  x  10
 Ax  b : 4 1 2  y   16
1 2 5  z  12
1   10 
1 3
①행 ×(-4)+②행 → ②
0 11 2  24

 

①행 ×(-1)+③행 → ③
0 1 4   2 
1   10 
 10 
1 3
1 3 1 
 2   0 1 4   2   0 1 4 



 



 24
0 11 2   24 
0 0 46
 10 
 2 


 46

 10 
 2  ②행과 ③행 교환


46
②행 ×(-1) → ②
1 3 1  10 
②행 ×(11)+③행 → ③
0 1 4  2

  
0 0 1   1  ③행 ×(-1/46) → ③
15/35
MATLAB HCH
Gauss-Jordan Elimination
(2/2)
1 z  1  z  1
1 3 1   x   10 
0 1  4  y    2  y-4 z  -2  y  4 z- 2  2

   
0 0 1   z   1 
x  3 y  z  10  x  -3 y-z  10  3

위 식의 계수 행렬을 I 행렬로 만들면 Gauss-Jordan 소거법이 된다.
1 3 1   x  10 
0 1 4   y    2

    
0 0 1   z   1 
1 3 0   x   9 
0 1 0   y    2 

    
0 0 1   z  1 
1 0 0   x   3 
 0 1 0  y    2
0 0 1   z  1 
3장 배열과 행렬


1 3 0   x   9 
0 1 0  y    2

    
0 0 1   z  1 
1 0 0   x   3 
0 1 0   y    2 

    
0 0 1   z  1 
③행 ×(4) + ②행 → ②
③행 ×(-1) + ①행 → ①
②행 ×(-3) +①행 → ①
x3

y2
z 1
16/35
MATLAB HCH
원소별(Element-by-Element) 연산

행렬에 대한 곱셈과 나눗셈은 선형대수의 법칙을 따른다. 그러나 두 행
렬의 원소와 원소 사이의 연산이 필요한 경우가 많다. 덧셈과 뺄셈은 원
래 행렬의 같은 위치의 원소끼리 더하거나 빼므로 원칙적으로 원소별 연
산에 해당된다.

원소별 연산은 다음과 같이 점 뒤에 연산기호를 붙이면 된다:
.* (원소별 곱셈), .^ (원소별 지수승), ./ (우측 나눗셈), .\ (좌측 나눗셈)

두 벡터 v와 w가 각각 v=[v1, v2, v3], w=[w1 w2 w3]이라면,
v.*w = [ v1w1, v2w2, v3w3 ]
v./w = [ v1/w1, v2/w2, v3/w3 ]
v.^w = [ v1w1, v2w2, v3w3 ]

두 행렬 A와 B에 대해
 a11 a12
A.* B   a21 a22
 a31 a32
3장 배열과 행렬
a13 
a23 
a33 
 b11 b12 b13   a11b11 a12b12
b b
  a b
b
 21 22 23   21 21 a22b22
b31 b32 b33   a31b31 a32b32
a13b13 
a23b23 
a33b33 
17/35
MATLAB HCH
행렬의 원소별 연산
 a11 a12

A. / B  a21 a22
a
 31 a32
a13  b11 b12 b13   a11 / b11 a12 / b12
 
 
a23  ./ b21 b22 b23   a21 / b21 a22 / b22
a33  b31 b32 b33   a31 / b31 a32 / b32
 a11n a12n
 n
n
A.^ n  a21
a22
a n a n
 31 32
a13n 
n 
a23

n 
a33

 2 6 3
A

5
8
4


1 4 10
B

3 2 7 
3장 배열과 행렬
>> C=A./B
>> A=[2 6 3; 5 8 4];
>> B=[1 4 10; 3 2 7];
>> A.*B
ans =
2 24
15 16
a13 / b13 

a23 / b23 
a33 / b33 
30
28
C=
2.0000
1.6667
1.5000
4.0000
0.3000
0.5714
>> 2.^B
ans =
2
8
16
4
1024
128
>> A*B
??? Error using==> mtimes
Inner matrix dimensions must agree.
18/35
MATLAB HCH
원소별 연산 예

원소별 연산은 많은 독립변수에서 함수값을 계산할 때 매우 유용하다. 먼
저 독립변수의 값들을 벡터로 정의하고 이 벡터를 이용하여 함수값을 원
y=2x2 - 5x + 1
소별 연산을 이용하여 계산한다.
70

y(x)= 2x2- 5x+1 함수의 값 계산
60
50
40
y
>> x = 1:7
x=
1 2 3 4 5 6 7
>> y = 2*x.^2 – 5*x + 1
y=
-2 -1 4 13 26 43 64
30
20
10
0
-10
2
4
6
x
y=(x.3 + 5x)/(4x2 - 10)
60
>> plot(x, y)
40
20
y(x) = (x3 + 5x)/(4x2 – 10)의 계산
0
y

>> x = [1:0.03:3];
>> y = (x.^3 + 5*x)./(4*x.^2 - 10);
>> plot(x, y)
-20
-40
-60
-80
-100
1
1.5
2
2.5
3
x
3장 배열과 행렬
19/35
MATLAB HCH
내장함수에서의 배열 사용
(1/2)

MATLAB의 내장함수는 입력인자가 배열인 경우 함수에 의해 정의된 연
산이 배열의 각 원소에 대해 수행되도록 만들어져 있으므로, 함수를 원소
별로 적용하는 것으로 생각할 수 있다. 따라서 출력은 입력인자 배열의 각
원소를 함수에 대입하여 얻은 결과를 해당 원소로 갖는 배열이다.

cos(x) 함수의 계산
>> x=[0:pi/6:2*pi]
x=
Columns 1 through 7
0
0.5236 1.0472 1.5708 2.0944 2.6180 3.1416
Columns 8 through 13
3.6652 4.1888 4.7124 5.2360 5.7596 6.2832
0.6
0.4
0.2
0
-0.2
-0.4
>> y=cos(x)
y=
Columns 1 through 7
1.0000 0.8660 0.5000
Columns 8 through 13
-0.8660 -0.5000 -0.0000
1
0.8
-0.6
-0.8
-1
0.0000 -0.5000
-0.8660
0.5000
1.0000
0.8660
0
1
2
3
4
5
6
-1.0000
>> plot(x, y), grid on
3장 배열과 행렬
20/35
MATLAB HCH

내장함수에서의 배열 사용
(2/2)
sqrt(x) 함수의 계산
>> d=[1 4
d=
1
4
16 25
49 64
9; 16 25 36; 49 64 81]
9
36
81
>> h=sqrt(d)
h=
1
2
3
4 5 6
7
8
9
3장 배열과 행렬
21/35
MATLAB HCH
배열 해석용 내장함수
함수
mean(A)
(1/2)
설명
예
A가 벡터이면, 벡터 원소들의 평균값을 돌려준다. >> A=[5,9,2,4];
>> mean(A)
ans = 5
C=max(A)
A가 벡터이면, C는 A에서 가장 큰 원소이다. A가 >> A=[5,9,2,4,11,6,11,1];
행렬인 경우, C는 A의 각 열에서 가장 큰 원소들 >> C=max(A)
C = 11
로 구성된 행벡터이다.
[d,n]=max(x)
A가 벡터이면, d는 A에서 가장 큰 원소이며 n은 >>[d,n]=max(A)
원소의 위치이다(최대값이 여러 개인 경우에는 d = 11
n= 5
첫 번째 최대값의 위치).
min(A)
최소값을 찾는다는 점을 제외하고는 max(A)와 >> A=[5,9,2,4];
>> min(A)
동일하다.
[d,n]=min(A)
최소값을 찾는다는 점을
[d,n]=max(A)와 동일하다.
sum(A)
A가 벡터이면, 벡터 원소들의 합을 돌려준다.
3장 배열과 행렬
제외하고는
ans = 2
>> A=[5,9,2,4];
>> sum(A)
ans = 20
22/35
MATLAB HCH
배열 해석용 내장함수
함수
sort(A)
(2/2)
설명
예
A가 벡터이면, 벡터의 원소들을 오름차순으로 정 >> A=[5,9,2,4];
>> sort(A)
렬한다.
ans = 2 4
5 9
median(A) A가 벡터이면, 벡터 원소들의 중앙값(median >> median(A)
value)을 돌려준다.
ans = 4.5
std(x)
A가 벡터이면, 벡터의 원소들의 표준편차를 돌려 >> std(A)
ans = 2.9439
준다.
det(A)
정방행렬 A의 행렬식을 돌려준다.
dot(a,b)
두 벡터 a와 b의 스칼라 곱(내적)을 계산한다. 벡 >> a=[1,2,3]; b=[3,4,5];
>> dot(a, b), cross(a, b)
터는 각각 행벡터 또는 열벡터가 될 수 있다.
cross(a,b)
>> A=[2, 4; 3, 5];
>> det(A)
ans = -2
ans = 26
두 벡터 a와 b의 외적(cross product)을 계산한다. ans = -5 3 -2
두 벡터는 3개의 원소를 가져야 한다.
inv(A)
3장 배열과 행렬
정방행렬 A의 역행렬을 돌려준다.
>> A=[2,-2,1;3,2,-1;2,-3,2];
>> inv(A)
ans = …
23/35
MATLAB HCH
Random number(난수)의 생성
(1/2)

많은 공학 응용에서 많은 난수들의 집합을 필요로 하는 경우가 종종 있다.
MATLAB은 난수를 생성하는 내장함수로 rand, randn이 있다.

rand 명령어 : 0과 1 사이에서 균일하게 분포된 난수들을 생성시킴



rand : 한 개의 난수 생성,
rand(1, n) : n개의 난수 행벡터 생성
rand(n) : nn 크기의 난수 행렬 생성, rand(m, n) : mn 크기의 난수행렬 생성
randperm 명령어 : 1 에서 n 까지의 정수의 무작위 순열(random
permutation)으로 구성된 1n의 행벡터를 생성함
>> x = randperm(8)
x= 8

2 7
4
3 6
5
1
(0, 1)이 아닌 구간에 분포되어 있는 난수들이나 정수로만 이루어진 난수
들이 필요한 경우, 다음과 같은 수학적인 조작에 의해 구할 수 있다:
(b-a)*rand+a
예) -5와 10 사이의 난수를 가지는 원소 10개의 벡터 :
>> v=15*rand(1,10)-5
v = 7.2209 8.5869 -3.0952 8.7006 4.4854 -3.5369 -0.8225 3.2032 9.3626 9.4733
3장 배열과 행렬
24/35
MATLAB HCH

Random number(난수)의 생성
(2/2)
모두 정수인 난수의 생성은 실수를 정수로 변환하는 함수를 이용한다.
예) 1에서 100 사이의 정수 난수를 갖는 2×15 행렬의 생성:
>> A=round(99*rand(2,15)+1)
A=
44 77 20 45 71 28
39 80 49 65 76 68

66
17
13
50
96
35
59
23
randn 명령어 : 평균이 0이고 표준편차가 1인 정규분포 난수들의 생성

randn(n) : nn 크기의 난수행렬, rand(m, n) : mn 크기의 난수행렬
>> d=randn(3,4)
randn 명령어의 결과에 원하는
평균값을 더하고 원하는 표준
편차를 곱함으로써 임의의 평
균과 표준편차를 갖는 난수를
생성할 수 있다.
d=
-0.5883 -0.1364 1.0668
2.1832 0.1139 0.0593
>> x = round( 5*randn(1, 10) + 10)
x= 6
3장 배열과 행렬
4
10
10
7
10
10
3
13
8
25/35
MATLAB HCH
예제 3.2 등가 힘의 계산
(1/2)
 그림과 같이 고리에 가해지는 세 힘의 합력(등가 힘)을 구하라.
 풀이

F3=700 N
직각좌표계에서 힘 벡터 F는 다음과 같이 쓸 수 있다:
F  Fx i  Fx j  F cos  i  F sin  j  F (cos  i  sin  j)
where F  F  F ,
2
x

2
y
tan  
Fy
F2=500 N
143°
30°
20°
F1=400 N
Fx
합력(등가 힘)은 고리에 가해지는 세 힘을 모두 더하여 구한다. 다음 세 단계
에 따라 해를 구한다.
• 각 힘을 두 원소의 벡터로 나타낸다. 벡터의 첫 번째 원소는 힘 벡터의 x 축
성분이고 두 번째 원소는 힘 벡터의 y 축 성분이다.
• 세 벡터를 더하여 등가 힘을 벡터 형태로 구한다.
• 등가 힘의 크기와 방향을 구한다.
3장 배열과 행렬
26/35
MATLAB HCH
예제 3.2 등가 힘의 계산
(2/2)
스크립트 파일 Ch3Ex3_2.m
명령어 창에서의 프로그램 실행
F3=700 N
Ftot=589.98 N
F2=500 N
64.95°
F1=400 N
3장 배열과 행렬
27/35
MATLAB HCH

예제 3.3 마찰 실험(원소별 계산)
실험에서 마찰 계수 μ는 질량 m을 이동시키는데 필요한 힘 F를 측정하면 다음
식에 의해 구할 수 있다:
  F / (mg ) (g  9.81 m/s2 )
m
F
여섯 번의 시험을 통한 F 에 대한 측정 결과가 다음 표로 주
어졌다. 각 시험에 대한 마찰계수를 구하고, 모든 시험 결과
에 대한 마찰계수의 평균을 구하라.
시험 번호
1
2
3
4
5
6
질량 m (kg)
2
4
5
10
20
50
12.5
23.5
30
61
117
294
힘
F (N)
>> m=[2 4 5 10 20 50]; F = [12.5, 23.5, 30, 61, 117, 294];
>> mu=F./(m*9.81)
mu =
0.6371 0.5989 0.6116 0.6218 0.5963 0.5994
>> mu_ave = mean(mu)
mu_ave =
0.6109
3장 배열과 행렬
m과 F의 값을
벡터로 입력함
원소별 연산으로 각
시험에 대한 mu의
값을 계산함
28/35
MATLAB HCH

예제 3.4 전기저항회로 분석
(1/3)
다음 전기회로에 대해 Kirchhoff의 전압법칙에 의한 망
전류 방법(mesh current method)을 이용하여 각 저항에
서의 전류를 구하라.
V1 = 20 V, V2 = 12 V, V3 = 40 V
R1 = 18 , R2 = 10 , R3 = 16 
R4 = 6 , R5 = 15 , R6 = 8 
R7 = 12  , R8 = 14 

풀이 :
Kirchhoff 전압법칙(voltage law) : 폐회로상의 전압을 모두 더하면 0이다.
각 망에 전류 i1, i2, i3, i4 를 할당한 후, Kirchhoff 전압 제2법칙을 각 망에 적용하면,
전류에 대한 선형 연립방정식 4개를 얻을 수 있으며, 이 선형 연립방정식으로부터
망전류의 값을 구할 수 있다. 두 망에 모두 속해 있는 저항을 흐르는 전류는 각 망에
서의 전류를 더한 값과 같다. 모든 전류는 시계방향으로 흐른다고 가정한다.
각 망에 대한 식에서, 전압원의 부호는 전류가 -극 쪽으로 흐를 때 양(+)이며, 저항
의 전압 부호는 망전류 방향의 전류에 대해 음(-)이다.
3장 배열과 행렬
29/35
MATLAB HCH

예제 3.4 전기저항회로 분석
(2/3)
네 망에 대해 전압 제2법칙을 적용하여 얻은 선형방정식
V1  R1i1  R3  i1  i3   R2  i1  i2   0
 R5 i2  R2  i2  i1   R4  i2  i3   R7  i2  i4   0
V2  R6  i3  i4   R4  i3  i2   R3  i3  i1   0
V3  R8 i4  R7  i4  i2   R6  i4  i3   0

위의 연립방정식을 행렬 형태로 나타낸다.
   R1  R2  R3 
  i1   V1 
R2
R3
0

  

R

R

R

R

R
R
R


2
2
4
5
7
4
7

  i2    0 

  i3   V2 
R3
R4
  R3  R4  R6 
R6

  

0
R7
R6
  R6  R7  R8    i4   V3 

3장 배열과 행렬
30/35
MATLAB HCH

예제 3.4 전기저항회로 분석
스크립트 파일 Ch3Ex3_4.m

(3/3)
명령어 창에서의 실행 결과
 i1 
i 
 2
 i3 
 
 i4 
3장 배열과 행렬
31/35
MATLAB HCH
예제 3.5 두 질점의 운동
기차와 자동차가 교차로로 가고 있다. t=0에서 기차는 교차
로의 남쪽 400 ft 지점에서 54 mi/h의 정속으로 북쪽으로
달리고 있으며, 동시에 자동차는 교차로의 서쪽 200 ft 지
점에서 28 mi/h의 속력과 4 ft/s2의 가속도로 동쪽으로 달리
고 있다. 이후 10초 동안에 대해 매초마다 기차와 자동차의
위치, 둘 사이의 거리, 자동차에 대한 기차의 상대 속력을
구하라. 결과는 11×6의 행렬로 생성하여 출력한다. 행렬의
각 행에서 첫째 원소는 시간, 나머지 다섯 원소는 각각 기
차의 위치, 자동차의 위치, 기차와 자동차 사이의 거리, 자
동차의 속력, 자동차에 대한 기차의 상대 속력이다.

(1/3)
y
v=28 mi/h
a=4 ft/s2
x
200 ft
400 ft
v=54 mi/h
풀이 :
일정한 가속도로 직선을 따라 움직이는 기차와 자동차의 위치:
y  400  v0 train t
(기차)
1
x  200  v0car t  acar t 2 (자동차)
2
기차와 자동차 사이의 거리: d 
3장 배열과 행렬
x2  y2
32/35
MATLAB HCH
예제 3.5 두 질점의 운동
(2/3)
기차의 속도는 일정하며, 벡터 기호로는 vtrain = v0 train j이다. 자동차는 가속하고 있
으며 시간 t 에서의 속도는 vcar=(v0 car + acar t)i 이다. 자동차에 대한 기차의 상대속도
는 vt/c = vtrain – vcar = (vocar + acar t)i + v0 train j 이며, 상대속도의 크기는 벡터의 길이와
같다.
3장 배열과 행렬
33/35
MATLAB HCH
예제 3.5 두 질점의 운동
(3/3)
스크립트 파일을 명령창에서 실행하면 다음 결과를 얻는다:
차에 대한 기차의 상대속력(ft/s)
시간
차와 기차 사이의 거리(ft)
차 위치(ft)
기차 위치(ft)
3장 배열과 행렬
34/35
MATLAB HCH
3장 배열과 행렬
3장 강의록 끝
35/35