24
02. 선선 선선선 선선 데데데데 데데데 선선선 : 선선선선 선선 : 선선선 1

02.선형변환과 행렬

Embed Size (px)

Citation preview

1

02. 선형 변환과 행렬

데브루키 스터디

닉네임 : 꿈꾸는소이름 : 박재홍

2

목차 (p.61~p.81)

1. 선형변환 1) 정의 2) 영 공간과 범위 3)선형 변환과 기저 벡터들2. 행렬 1) 행렬에 대한 소개 2) 간단한 연산들 3) 벡터 표현 4) 블록 행렬 5) 행렬의 곱셈 6) 벡터 변환 7) 선형 변환의 결합 8) 항등 행렬 9) 행렬을 통한 벡터 연산 수행하기 10) 구 현

P . 61 3

2.1 소개 선형 변환의 성질들은 벡터를 변환하기 위한 간략한 표현으로 , 행렬이라고 불리는 구조를 사용할 수 있도록 해준다 .행렬의 실용성- 행렬의 값은 단순하지만 선형 변환의 모든 능력을 담고 있다 .- 새로운 변환을 만들기 위해 두 변환 행렬을 결합할 수 있다 .- 이 행렬이 어떤 변환인지 알 수 있다- 선형 연립 방정식을 풀기 위해서 사용될 수 있고 이것은

그래픽스와 물리 시뮬레이션에서 특정 알고리즘을 푸는 데 유용하다 .

- 행렬은 그래픽 애플리케이션 프로그래밍 인터페이스에서 주요한 데이터 구조이다 .

4

2.2 선형 변환 선형 변환은 선형 대수에서 매우 유용하고 중요한 개념이고 , 변환이라고

알려진 함수들의 분류 중 하나이며 , 벡터공간에서 벡터 공간으로 사상한다 . 이것이 벡터에 복잡한 함수 또는 변환을 적용할 수 있도록 해준다 .

1) 정 의 관계는 정의역이라고 하는 값들의 집합 X에서 치역이라고 하는 또 다른

값들의 집합 Y 로 사상한다 . 함수는 정의역의 모든 값들이 치역의 오직 하나의 값에 사상하는 관계이고 예를 들어 f(x) =sin x 이다 .

정의역이 n차원이고 치역이 m차원인 함수를 변환이라고 한다 . 만약 정의역과 치역이 동일하다면 때때로 연산자라고 부른다 .선형변환 J는 두 벡터공간 V 와 W사이의 사상이고 , 여기서 V 안의 모든 v 그리고 모든 스칼라 a에 대해서 다음과 같이 설명할 수 있다 . V 안의 모든 v0,v1 에 대해서

V 안의 모든 v에 대해서

p. 62

)()(.2

)1()0()10(.1

vaTavJ

vJvJvvJ

5

2.2 선형 변환2) 영 공간과 범위

V안의 모든 벡터들의 집합이 0으로 사상하거나 , 다음과 같은 선형 변환 J : V ->W의 영 공간 (또는 핵 ) N(J)를 정의하자 .

N(J)의 차원은 변환의 영 공간의 차원이라고 부른다 . V안의 적어도 하나의 벡터에 의해서 사상되는 W 안의 모든 벡터들의 집합 또는 다음과 같은 선형 변환 J :V->W의 범위 R(J)를 정의하자 .

R(J)의 차원은 변환의 순위라고 부른다 .영 공간과 범위는 두 가지 매우 중요한 성질을 가진다 .첫째로 , 그것들은 둘 다 벡터 공간이고 사실 영공간은 V의 부분공간이고 범위는 W의 부분 공간이다 .둘째로 , 다음을 설명할 수 있다 .

}0)(|{)( xJxJN

}|)({)( VxxJJR

)dim()()( JJrankJnullity

6

A ㅏ……………… .

7

2.2 선형 변환3) 선형 변환과 기저 벡터들N차원 벡터 공간 V안의 임의의 벡터 x를 다음과 같이 표현할 수 있다는 것을 상기하자 .

여기서 {V0,V1,…,Vn-1} 은 V의 기저이다 .V에서 m차원 벡터 공간 W로 사상하는 선형 변환 J : V -> W 가 있다고 하자 . 만약 임의의 벡터 x에 변환을 적용한다면 , 그때 다음을 얻는다 .

V의 기저 중 하나인 원소 Vd에 대해 , W의 기저 {W0,W1,…,Wm-1} 의 항들의 선형 결합으로 J(Vd)를 표현할 수 있다 .

111100 nn vxvxvxx

)()()(

)()(

111100

111100

nn

nn

vJxvJxvJx

vxvxvxJxJ

1,11,10,0)( mjmjjj wawawavJ

8

2.2 선형 변환3) 선형 변환과 기저 벡터들 만약 {W0,….,Wm-1}이 W의 표준 기저라면 식을 다음과 같이 간략히 정리할 수 있다 .

앞의 식들을 결합하여 다음과 같은 식을 얻는다 .

만약 b = J(x)라면 , 그 때 b의 주어진 성분에 대해서 다음과 같이 나타낼 수 있다 .

이 사실을 알기 때문에 ,N개의 변환된 기저 벡터들을 미리 계산해서 저장할 수 있고 , 일반 벡터 x를 변환하기 위해서 언제라도 이 공식을 사용할 수 있다 .

),....,,()( ,1,1,0 jmjjj aaavJ

),...,,(

),...,,(),...,,()(

1,11,11,01

1,11,11,010,10,10,00

nmnnn

mm

aaax

aaaxaaaxxJ

11,11,00, nniiii xaxaxab

9

아아아아짜증나아 !!!!!!!!

10

2.3 행렬1) 행렬에 대한 소개행렬은 값들의 2차원 배열인 삼각형이다 . 행렬에서 각 개별 값은 원소라고 부른다 .임의의 행렬을 ‘m개의 행 곱하기 n개의 열을 가진 , 또는 m x n 행렬’이라고

표현한다 .정방행렬은 동일한 개수의 행과 열을 가지고 있는 행렬을 말한다 . 또 모든 원소가 0

인 행렬은 영 행렬이라고 부른다 . 만약 두 행렬이 동일한 개수의 행과 열을 가지고 있다면 , 또 대응하는 원소들이

동일한 값을 가진다면 둘은 같지만 크기만 같다면 같지 않다 .행과 열의 숫자가 동일한 곳의 원소들의 집합을 주대각 이라고 부른다 . 행렬의 트레이스는 주대각 원소들의 합이다 .

주대각 아래 있는 모든 원소들이 0과 같으면 상삼각 행렬이다 .주대각 위에 있는 원소들은 필수적으로 0이 아니여도 되지만 반드시 정방이어야

한다 .

,....,, 2,21,10,0 aaa

11

2.3 행렬

1016

0130

0022

0003

L

주 대각 위에 있는 원소들이 0 이라면 , 그때 다음과 같은 하삼각 행렬을 갖는다 .

마지막으로 , 정방 행렬의 주대각이 아닌 원소들이0 이라면 대각 행렬이라고 부른다 .

1000

0100

0020

0003

D

임의의 대각 행렬은 상삼각이면서 하삼각 행렬이다 .

12

2.3 행렬2) 간단한 연산들행렬 덧셈과 스칼라 곱셈

S=A+B벡터와 마찬가지로 성분별로 수행된다 .

이러한 작업을 수행하기 위해서 셋다 반드시 동일한 크기를 가져야만 한다 . 뺄셈은 유사하나 ,교환법칙이 성립하지 않는다 .

행렬을 스케일 하기 위해서 아래와 같이한다 .

P=sA벡터와 같이 , 각 원소에 스칼라 값을 곱한다 .

1. A + B = B + A2. A + (B+C) = (A+B)+C3. A + 0 = A4. A + (-A) = 05. a(A+B) = aA+ aB6. a(bA) = (ab)A7. (a+b)A = aA +bA8. 1A = A

jijiji bas ,,,

jiji asp ,,

13

2.3 행렬2) 간단한 연산들전치행렬의 전치는 A 의 행들과 열들을 교체한다 .

대칭행렬

대칭행렬의 전치는 자기 자신이다 .

인 행렬을 반대칭 행렬이라고 부른다 .

jijiT AA ,, )()(

321

602

36

20

12

1903

9152

0521

3213

jijiT AA ,, )()(

052

501

210

14

2.3 행렬2) 간단한 연산들반대칭 행렬의 전치는

이기 때문에 원본 행렬의 부정이다 .

전치와 연관 있는 대수학적 규칙1.2.3.여기서 a 는 스칼라이고 A 와 B 는 덧셈에 대해서 정합이다 .

jijijiT AAA ,,, )()()(

AA TT )(TT aAaA )(

TTT BABA )(

15

2.3 행렬3) 벡터 표현행렬이 열만 혹은 행만 가진다면 이것들은 종종

벡터들을 표현하기 위해서 사용된다 .열과 행 둘중 어떤 것을 사용하는 것이 표준인지

정해진 것은 없다 . OpenGL 문서에서는 열 벡터를 사용하였다 .반대로 DirectX 는 행 벡터를 사용한다 .마지막으로 쿼터니언의 고전적인 표기법은 벡터들을

열 행렬로 표현하는 일관된 연관 순서를 사용한다 .

16

2.3 행렬4) 블록 행렬행렬을 각 원소들이 아니라 부분행렬들로 표현할 수 있다 . 이것을 블록 행렬이라고 한다 .

따라서 다음과 같이 나타낼 수 있다 . 여기서 A 는

그리고 0 은 다음과 같다 .

=> =>

100

023

032

10

0T

A

23

32

0

00

2,21,20,2

2,11,10,1

2,01,00,0

aaa

aaa

aaa

][

][

][

2,21,20,22

2,11,10,11

2,01,00,00

aaaa

aaaa

aaaa

T

T

T

B

T

T

T

a

a

a

2

1

0

17

2.3 행렬5) 행렬의 곱셈행렬을 가지고 수행할 주된 연산은 행렬의 곱이라고 하는 곱셈이다 . 두 가지 필수적인 일을 수행할 수 있도록

해주기 때문에 행렬의 곱은 중요하다 . 1. 행렬과 벡터를 곱하는 것은 그 벡터에 선형 변환을 수행하는 것이다 .2. 행렬들을 서로 곱하는 것은 그것들의 결합된 선형 변환을 수행하는 단일 행렬을 생성한다 .행렬 A,B의 곱 C

C=AB이것을 수식으로 표현

블록 행렬들로 곱을 표현

대수학적 규칙1. A(BC) = (AB)C2. a(BC) = (aB)C3. A(B+C) = AB+AC4. (A+B)C =AC+BC5.

1

0,,,

n

kjijiji bac

DHCFDGCE

BHAFBGAE

HG

FE

DC

BA

TTT ABAB )(

18

2.3 행렬6) 벡터 변환행렬은 벡터에 대한 선형 변환을 표현하기 위해서 사용될 수 있다 . 변환하고자 하는 벡터에 행렬을 곱해서 이것을

수행하는데 단순히 표현된다 . b = Axn 차원 공간 V 에서 m 차원 공간 W 로의 변환을 나타내고 , 따라서 x 는 n 개의 성분들을 가지고 결과 벡터 b 는 m

개를 가진다 . 곱셈을 수행하기 위해서 행렬 A 는 반드시 m x n 이어야 한다 . 일반적인 행렬 곱셈과 마찬가지로 , 곱해질 벡터의 성분들의 개수는 반드시 행렬의 열들의 개수와 일치해야 하고 결과 벡터는 행의 개수와 동일한 성분의 개수를 가진다 .

1

1

0

1,11,10,1

1,11,10,1

1,01,00,0

1

1

0

nnmmm

n

n

m x

x

x

aaa

aaa

aaa

b

b

b

][ 110 naaaA

11,11,00, nniiii xaxaxab

1,11,10,1

1,11,10,1

1,01,00,0

110110 ][][

nmmm

n

n

mm

aaa

aaa

aaa

xxxccc

Axc TT

이러한 경우에 A 의 행들이변환된 기저벡터들이고 xT 안의 성분들의 개수는 반드시 행렬의 행들의 개수와 일치 해야만 한다

19

2.3 행렬6) 벡터 변환이제 , 행렬에 대한 추가적인 성질들을 정의 할 수 있다 . 행렬의 열공간은 행렬의 열 벡터들에 의해서 생성되는 벡터 공간이고 열

벡터를 후위에 곱함으로써 수행된 선형 변환의 치역이다 . 마찬가지로 행 공간은 행렬의 행 벡터들에 의해서 생성된 벡터 공간이고 예상한 것처럼 , 행 벡터를 전위에 곱함으로써 수행된 선형변환의 치역이다 . 공교롭게도 , 행 공간과 열 공간의 차원은 같고 그 값을 행렬의 순위라고 부른다 .

행렬의 순위는 연관된 선형 변환의 순위와 동일하다 .열 공간과 행 공간이 동일한 벡터 공간일 필요는 없다 .

000

100

010

z

y

x)0,,( zy

000

100

010 zyx ),,0( yx

)0,,(

010

001

000

zyzyx

20

2.3 행렬7) 선형 변환의 결합S 와 J 의 합성

변환의 합성 ( 결합 ) 은 일반화된 행렬 곱을 통해서 수행된다 .행렬 A, B 가 각각 S,J 를 대응할 때 A 를 구성하기 위해 S 로 표준 기저 벡터들을 먼저 변환하고

그것들을 A 의 열로 저장한다 이번엔 J 로 변환한다 . 명시적으로 이 변환을 수행하거나 B 행렬을 곱하는 것이 J 를 통해서 V 안의 벡터들을 변환한다는 사실을 이용할 수 있다 . 그래서

A 의 각열을 B 로 곱해서 그 결과를 새로운 행렬 C 안에 열로서 순서대로 저장한다 .C = BA

U 가 n 차원 ,V 가 m 차원 , W 가 l 차원을 가진다면 A 는 m x n 행렬 B 는 l x m 행렬C 는 l x n 행렬

))(())(( xSxS

2

1

0

Ncd

Nbc

Nab

TT

TT

TT

rT

T

TT

Na

NNNa

NNbd

210

21

BACxJxSx )()()(

21

2.3 행렬

8) 항등 행렬벡터 1*x = x 행렬도 있다 ! A*I=I*A=A주대각이 모두 1 이고 대각 정방행렬이여야한

다 !

PASS!!

22

2.3 행렬9) 행렬을 통한 벡터 연산 수행하기행백터 곱하기 열벡터는 내적반대로 곱하면 정방행렬 !

이 정방행렬 T 는 텐서 곱 V X W 라고 한다 .

V X W 외적 계산 !

이것이 외적 공식 ! 다행히 효용성은 다음장에서 !!

wvvwvwvwvw zzyyxxT

zzyzxz

zyyyxy

zxyxxx

T

wvwvwv

wvwvwv

wvwvwv

vwT

uvwwvu )()(

0

0

0

xy

xz

yz

vv

vv

vv

v

yxyx

xzxz

zyzy

z

y

x

xy

xz

yz

vwwv

vwwv

vwwv

w

w

w

vv

vv

vv

0

0

0

23

2.3 행렬

10) 구현

집에서 쳐보시는게… . 정신건강에 좋아요 ..

24

감사합니다Q&A