2 (dot products, cross products)contents.kocw.net/kocw/document/2015/hankyong/kwaknotae/7.pdf ·...

14
매틀랩입문 8차시 행렬 연산 행렬에 벡터가 섞여 있어 조금 혼동될 수 있습니다. 여기선 핵심 내용은 수학(적) 행렬 곱셈입니 다. 연장되어 누승(거듭제곱)이나 역행렬이며 최종적으로 선형 연립방정식 풀이로 진행됩니다. 이와는 별도로 물리(학)적인 벡터가 나옵니다. 평면(좌표)에서 위치(방향)를 표시하는 2차원 벡터에 서 공간(좌표)에서 위치(방향)를 표시하는 3차원 벡터 간의 곱셈(Dot products, Cross products) 이 야기입니다. 다른 이야기가 섞여 있어 이를 나누어 썼습니다. 이 둘을 구분하지 않고 한번에 같이 설명하려고 하면 맞지 않게 됩니다. 하여튼 우린 수학행렬 곱셈(과 연장)을 매틀랩으로 (계산)하는 것을 연습합니다. (벡터 곱셈을 매틀 랩으로 하는 것도 연습하지만). 매틀랩 연습 점에 수학행렬 곱셈(과 연장)과 벡터 곱셈의 개념에 대해 조금 생각할 시간(기회, 여유)를 갖는 것이 좋습니다. (수학)행렬은 사각형 표에 쓰인 자료(숫자) 묶음입니다. 가로(행)과 세로(열)이 있습니다. 행과 열이 하나인 행벡터와 열벡터도 있습니다. 이 행벡터와 열벡터가 물리벡터와 연결되는 (유일한) 고리입 니다(현재 우린 학습 목적상 행렬과 벡터를 연결시킬 필요가 없다는 뜻). 물리벡터는 크기와 방향 을 가진 요소로 자료(숫자)가 둘(평면좌표) 또는 셋(공간좌표)의 묶음입니다 벡터는 다른 분야엣도 많이 쓰이는 데 유전공학에서 벡터는 유전자를 전달하는 매개체(흔히 플라스마, 바이러스 등)을 말합니다. 보건, 위생학에선 질병을 매개하는 곤충이나 동물을 말합니다. 1. 사칙연산 행렬과 상수의 사칙연산은 행렬의 모든 요소에 상수를 더하거나 빼거나 곱하거나 나누기하게 되 므로 굳이 행렬과 같은 크기의 상수 행렬을 만들어 연산할 필요가 없다. 1-1. 덧셈과 뺄셈 크기(size)가 같은((행과 열의 수가 같은) 행렬끼리 덧셈과 뺄셈이 가능하며 같은 요소(같은 위치) 끼리 덧셈 또는 뺄셈을 한다. (스크립트) A=[1 2 3; 4 5 6]

Upload: others

Post on 11-Feb-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 2 (Dot products, Cross products)contents.kocw.net/KOCW/document/2015/hankyong/kwaknotae/7.pdf · 이와는 별도로 물리(학)적인 벡터가 나옵니다. 평면(좌표)에서

매틀랩입문 8차시

행렬 연산

행렬에 벡터가 섞여 있어 조금 혼동될 수 있습니다. 여기선 핵심 내용은 수학(적) 행렬 곱셈입니

다. 연장되어 누승(거듭제곱)이나 역행렬이며 최종적으로 선형 연립방정식 풀이로 진행됩니다.

이와는 별도로 물리(학)적인 벡터가 나옵니다. 평면(좌표)에서 위치(방향)를 표시하는 2차원 벡터에

서 공간(좌표)에서 위치(방향)를 표시하는 3차원 벡터 간의 곱셈(Dot products, Cross products) 이

야기입니다. 다른 이야기가 섞여 있어 이를 나누어 썼습니다. 이 둘을 구분하지 않고 한번에 같이

설명하려고 하면 맞지 않게 됩니다.

하여튼 우린 수학행렬 곱셈(과 연장)을 매틀랩으로 (계산)하는 것을 연습합니다. (벡터 곱셈을 매틀

랩으로 하는 것도 연습하지만). 매틀랩 연습 점에 수학행렬 곱셈(과 연장)과 벡터 곱셈의 개념에

대해 조금 생각할 시간(기회, 여유)를 갖는 것이 좋습니다.

(수학)행렬은 사각형 표에 쓰인 자료(숫자) 묶음입니다. 가로(행)과 세로(열)이 있습니다. 행과 열이

하나인 행벡터와 열벡터도 있습니다. 이 행벡터와 열벡터가 물리벡터와 연결되는 (유일한) 고리입

니다(현재 우린 학습 목적상 행렬과 벡터를 연결시킬 필요가 없다는 뜻). 물리벡터는 크기와 방향

을 가진 요소로 자료(숫자)가 둘(평면좌표) 또는 셋(공간좌표)의 묶음입니다 벡터는 다른 분야엣도

많이 쓰이는 데 유전공학에서 벡터는 유전자를 전달하는 매개체(흔히 플라스마, 바이러스 등)을

말합니다. 보건, 위생학에선 질병을 매개하는 곤충이나 동물을 말합니다.

1. 사칙연산

행렬과 상수의 사칙연산은 행렬의 모든 요소에 상수를 더하거나 빼거나 곱하거나 나누기하게 되

므로 굳이 행렬과 같은 크기의 상수 행렬을 만들어 연산할 필요가 없다.

1-1. 덧셈과 뺄셈

크기(size)가 같은((행과 열의 수가 같은) 행렬끼리 덧셈과 뺄셈이 가능하며 같은 요소(같은 위치)

끼리 덧셈 또는 뺄셈을 한다.

(스크립트)

A=[1 2 3; 4 5 6]

Page 2: 2 (Dot products, Cross products)contents.kocw.net/KOCW/document/2015/hankyong/kwaknotae/7.pdf · 이와는 별도로 물리(학)적인 벡터가 나옵니다. 평면(좌표)에서

B=[1 2 2; 3 4 2]

C=A+B

A =

1 2 3

4 5 6

B =

1 2 2

3 4 2

C =

2 4 5

7 9 8

1-2. 곱셈

행렬의 곱셈은 정말 문제가 많다. 차근히 정리하도록 한다. 먼저 수학 행렬의 곱셈과 물리학/수학

벡터의 곱셈 그리고 매트랩 행렬의 곱셈으로 나누어 설명하도록 한다.

(1) 수학 행렬의 곱셈

곱해지는 행렬(앞 행렬)의 행(전체)과 곱하는 행렬(뒤 행렬)의 열(전체)를 서로 곱하여(순서대로, 같

은 위치끼리) 합하여 앞 행렬의 행 번호와 뒤 행렬의 열 번호에 해당하는 요소에 이 값을 넣는다.

곱하는 앞 행렬의 행 수와 뒤 행렬의 열의 수가 같아야 한다.

A=[2 3 4; 1 2 3]

B=[1000; 1500; 2000]

C=A*B

A =

2 3 4

1 2 3

B =

1000 1200

1500 2000

2000 1800

C =

14500 15600

10000 10600

Page 3: 2 (Dot products, Cross products)contents.kocw.net/KOCW/document/2015/hankyong/kwaknotae/7.pdf · 이와는 별도로 물리(학)적인 벡터가 나옵니다. 평면(좌표)에서

C행렬의 1행 1열은 C(1,1) = 2*1000 + 3*1500 + 4*2000 = 14500

C행렬의 2행 1열은 C(2,1) = 1*1000 + 2*1500 + 3*2000 = 10000

C행렬의 1행 2열은 C(1,2) = 2*1200 + 3*2000 + 4*1800 = 15600

C행렬의 2행 2열은 C(2,1) = 1*1200 + 2*2000 + 3*1800 = 10600

이를 반복문을 써서 표현해보면(행렬 곱셈이 어떻게 실행되는지 보여주려고, 설명하려고)

(행렬 곱셈 함수)

% matrix_multiply

function C=matrix_mul(A,B)

[ar,ac]=size(A); [br,bc]=size(B);

if ac~=br, error('U cannot multiply these matrix together!'), end

for k=1:ar

for kk=1:bc

C(k,kk)=sum(A(k,:).*B(:,kk)’);

end

end

end

(스크립트, 실행 해보기)

C=matrix_mul(A,B)

(결과)

C =

14500 15600

10000 10600

(설명)

Page 4: 2 (Dot products, Cross products)contents.kocw.net/KOCW/document/2015/hankyong/kwaknotae/7.pdf · 이와는 별도로 물리(학)적인 벡터가 나옵니다. 평면(좌표)에서

C(k,kk)=sum(A(k,:).*B(:,kk)’); 은 A행렬의 k 행(의 모든 열)과 B 행렬의 kk 열(의

모든 행)의 요소를 순서대로 곱하여 합하여 C 행렬의 k행 kk열의 요소값으로 하라는 뜻으로

매틀랩 요소곱(‘.*’)은 행벡터(A(k,:))와 열벡터(B(:,kk))를 곱할 수 없기에 열벡터를

행벡터로 전치한 것이다(B(:,kk)’).

A(2,:) =

2 3 4

1 2 3

B(:,2) =

1000 1200

1500 2000

2000 1800

C(2,2) =

14500 15600

10000 10600

A(2,:) =

1 2 3

B(:,2)’ =

1200 2000 1800

C(2,2) =

10600

sum(A(k,:).*B(:,kk)’) = A(k,:)*B(:,kk); 와 같다.

Cij = ∑ Ai,k ∙ Bk,j

n

k=1

3231

2221

1211

23

13

2221

1211,

bb

bb

bb

Ba

a

aa

aaA 라면

322322221221312321221121

321322121211313121121111

babababababa

babababababaAB

그러므로 앞 행렬 수와 뒤 행렬의 행의 수가 같아야 행렬의 곱셈이 가능하다.

즉, A(m n) B(n r) = AB(m r)

(2) 수학과 물리 벡터의 곱셈

여기서 벡터는 3차원 공간 위에서 x, y, z 축의 위치 값을 표시하는 벡터 A=(x1, y1, z1)를 말한다.

Page 5: 2 (Dot products, Cross products)contents.kocw.net/KOCW/document/2015/hankyong/kwaknotae/7.pdf · 이와는 별도로 물리(학)적인 벡터가 나옵니다. 평면(좌표)에서

1) (가운데)점곱, 내적, dot product

AB 와 같이 커다란 가운데 점을 넣어 표기한다. 매틀랩 함수로는 dot()가 있다.

두 벡터의 같은 위치 요소끼리 곱하여 합하면 된다. 즉, dot(A, B) 와 sum(A.*B)와 같다.

다음은 예를 들기 위해 2차원 평면 위에서의 2차원 벡터를 예를 들었다(매틀랩에선 3차원 벡터

값이 아니면 오류가 난다).

AB = |A|*|B|*cosθ = r1*r2*(cos(t1-t2)) = r1*r2*[cos(t1)*cos(t2) + sin(t1)*sin(t2)]

= r1*r2*[x1/r1 * x2/r2 + y1/r1 * y2/r2] = x1*x2 + y1*y2

Dot − product = ∑ Ai ∙ Bi

n

i=1

Dot-product = sum(A.*B) = dot(A, B)

물체에 힘을 가한 방향과 물체가 움직인 방향이 다를 경우 사용될 수 있다.

2) 가위곱, 외적, cross produc

AⅹB 와 같이 커다란 가운데 가위표를 넣어 표기한다. 매틀랩 함수로는 cross()가 있다.

A(x1,y1)

B(x2,y2)

θ

θ

가해진 힘(크기와 방향)

움직인 힘과 일의 방향

한 일의 크기(빨간 네모)

Page 6: 2 (Dot products, Cross products)contents.kocw.net/KOCW/document/2015/hankyong/kwaknotae/7.pdf · 이와는 별도로 물리(학)적인 벡터가 나옵니다. 평면(좌표)에서

두 벡터의 같은 ‘X’ 위치 즉 서로 엇갈리는 요소끼리 곱하여 빼면 된다. 즉, A, B가 요소 2 개인 벡

터라 하면(물론 요소가 2 개이면 연산이 되지 않지만) cross(A, B) 와 det([A;B])는 같다.

AⅹB = |A|*|B|*sinθ = r1*r2*(sin(t1-t2)) = r1*r2*[sin(t1)*cos(t2) + cos(t1)*sin(t2)]

= r1*r2*[y1/r1 * x2/r2 + y1/r1 * x2/r2] = x2*y1 + x1*y2

위의 그림을 예로 들어 A=[3, 2, 0]; B=[4, 1, 0]; 이라면 (계산하고 생각하기 쉽게 평면상 벡터)

AⅹB = 3*1 – 4*2 = -5 이다. 물론 방향이 있고 이는 이 평면에 수직인 수직선이다(모멘트 크기는

|5|이고 방향은 평면 아래로 내려가는 방향).

>> A=[3, 2, 0]; B=[4, 1, 0];

>> A

A =

3 2 0

>> B

B =

4 1 0

>> cross(A,B)

(3,2,0)

(4,1,0)

크기는 B*sin(θ)

모멘트 크기는 A*B*sin(θ)

Page 7: 2 (Dot products, Cross products)contents.kocw.net/KOCW/document/2015/hankyong/kwaknotae/7.pdf · 이와는 별도로 물리(학)적인 벡터가 나옵니다. 평면(좌표)에서

ans =

0 0 -5

* (a1, a2, a3) x (b1, b2, b3) = |i j k

a1 a2 a3b1 b2 b3

|

* axb = |a||b|sinθ•ê (ê 는 a --> 방향으로 돌리면 움직이는 오른나사 방향인 단위벡터)

(3) 매틀랩 행렬의 곱셉

매틀랩에선 많은 자료의 묶음(매틀랩 행렬)을 한 번에 처리(연산)하기 위해 요소곱(요소 나눗셈,

요소 누승)을 사용한다.

(요소곱 함수)

% Elements multiply

function C=element_mul(A,B)

[ra, ca]=size(A); [rb, cb]=size(B);

if ra~=rb || ca~=cb, error('Sizes must be same!'), end

for k=1:ra

for kk=1:ca

C(k,kk)=A(k,kk)*B(k,kk);

end

end

end

나사 움직이는 방향

힘의 크기와 방향

나사 돌리는 방향

나사를 돌리는 힘의 크기(Torque)

θ

Page 8: 2 (Dot products, Cross products)contents.kocw.net/KOCW/document/2015/hankyong/kwaknotae/7.pdf · 이와는 별도로 물리(학)적인 벡터가 나옵니다. 평면(좌표)에서

(실행 스크립트)

A=[1 2 3; 4 5 6]

B=[1 2 2; 3 4 2]

C=A.*B

C2=element_mul(A,B)

(결과)

A =

1 2 3

4 5 6

B =

1 2 2

3 4 2

C =

1 4 6

12 20 12

C2 =

1 4 6

12 20 12

2. 행렬 연산(사칙연산 외)

2-1. 전치(Transposition)

A = [

a11 a12 a13

a21 a22 a23

a31 a32 a33

] → AT = [

a11 a21 a31

a12 a22 a32

a13 a23 a33

]

A = [1 2 34 5 67 8 9

] → A′ = [1 4 72 5 83 6 8

]

Page 9: 2 (Dot products, Cross products)contents.kocw.net/KOCW/document/2015/hankyong/kwaknotae/7.pdf · 이와는 별도로 물리(학)적인 벡터가 나옵니다. 평면(좌표)에서

(스크립트)

A=[1 2 3; 4 5 6; 7 8 9]

AT=A'

(결과)

A =

1 2 3

4 5 6

7 8 9

AT =

1 4 7

2 5 8

3 6 9

2-2. 거듭제곱(누승, Power)

같은 행렬을 거듭제곱하는 것은 같은 행렬을 서로 행렬 곱하는 것으로 행과 열의 수가 같은 정방

행렬(또는 정사각형 행렬)이어야 가능하다.

A^2 ≠ A.^2

2-3. 역행렬(Inverse matrix)

곱하면 단위행렬이 되는 행렬로 실수(a)에서의 역수(a-1)와 같다.

역행렬을 가지려면 정방행렬이어야 한다.

A*A-1 = I, A-1*A = I

Page 10: 2 (Dot products, Cross products)contents.kocw.net/KOCW/document/2015/hankyong/kwaknotae/7.pdf · 이와는 별도로 물리(학)적인 벡터가 나옵니다. 평면(좌표)에서

a * a-1 = 1, a * 1/a = 1

>> A=[1 2]

A =

1 2

>> inv(A)

??? Error using ==> inv

Matrix must be square.

>> A=magic(3)

A =

8 1 6

3 5 7

4 9 2

>> inv(A)

ans =

0.1472 -0.1444 0.0639

-0.0611 0.0222 0.1056

-0.0194 0.1889 -0.1028

>> A*inv(A)

ans =

1.0000 0.0000 -0.0000

-0.0000 1.0000 0.0000

Page 11: 2 (Dot products, Cross products)contents.kocw.net/KOCW/document/2015/hankyong/kwaknotae/7.pdf · 이와는 별도로 물리(학)적인 벡터가 나옵니다. 평면(좌표)에서

0.0000 0.0000 1.0000

1-4. 행렬식(Determinant)

행렬식 값이 영이면 역행렬이 없다.

A = |

a11 a12 a13

a21 a22 a23

a31 a32 a33

|

>> A=[1 2 3; 2 4 8; -2 2 0]

A =

1 2 3

2 4 8

-2 2 0

>> det(A)

ans =

-12

>> B=[1 2 3; 2 4 6; -2 2 0]

B =

1 2 3

2 4 6

-2 2 0

Page 12: 2 (Dot products, Cross products)contents.kocw.net/KOCW/document/2015/hankyong/kwaknotae/7.pdf · 이와는 별도로 물리(학)적인 벡터가 나옵니다. 평면(좌표)에서

>> det(B)

ans =

0

3. 행렬과 벡터를 이용한 연립방정식 풀이

벡터(Vector) : 행의 수 또는 열의 수가 단 하나인 행렬. 행이 하나인 행렬(벡터)를 행벡터, 열이 하

나인 벡터를 열벡터라 한다.

아래는 일반적인 3원 1차 연립방정식의 형태이다.

p1x + q1x + r1z = b1

p2x + q2x + r2z = b2

p3x + q3x + r3z = b3

이는 아래와 같이 표현될 수 있으며

3

2

1

333

222

111

b

b

b

z

y

x

rqp

rqp

rqp

여기서 앞 행렬을 계수행렬, 다음을 미지수 벡터, 마지막 열벡터를 상수항 벡터라 한다.

계수행렬에서 행번호와 열번호가 같은 요소 즉, a11, a22 , a33 등을 ‘대각요소’라 한다.

(1) 역행렬법(Matrix Inversion Method)

계수행렬의 역행렬을 구한 다음, 역행렬과 상수행렬의 곱셈에 의하여 근을 구하는 방법이다. 이

방법의 장점은 반복계산에 의하지 않고 직접 근을 구할 수 있다는 것이다.

Page 13: 2 (Dot products, Cross products)contents.kocw.net/KOCW/document/2015/hankyong/kwaknotae/7.pdf · 이와는 별도로 물리(학)적인 벡터가 나옵니다. 평면(좌표)에서

Ax = b

A-1(Ax) = A-1b

(A-1A)x = A-1b

x = A-1b

즉, 근 벡터는 계수행렬의 역행렬과 상수항벡터의 곱이다.

(2) 왼쪽나눗셈법(Back-slash Method)

가우스 소거법을 이용하여 미지수 계수를 차례로 소거하여 해를 구하는 방법으로 연립방정식 규

모가 커지면 실행 시간과 반올림 오차를 고려하면 역행렬법보다 더 좋은 결과를 기대할 수 있다.

A=[3 -3 3; -3 5 1; 3 1 5]

b=[9 -7 12]'

x=inv(A)*b

x2=A\b

A =

3 -3 3

-3 5 1

3 1 5

b =

9

-7

12

x =

3.5000

0.6667

0.1667

x2 =

Page 14: 2 (Dot products, Cross products)contents.kocw.net/KOCW/document/2015/hankyong/kwaknotae/7.pdf · 이와는 별도로 물리(학)적인 벡터가 나옵니다. 평면(좌표)에서

3.5000

0.6667

0.1667

2015-06-09, 곽노태