제 6 장 행렬과 선형대수 -...

45
6 행렬과 선형대수

Upload: others

Post on 26-Feb-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

제 6 장

행렬과 선형대수

Page 2: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

행렬의 생성과 원소

행렬의 원소

• A(i,j): 하나의 원소 • A(p:q,r:s): p행에서 q행까지, 그리고 r열에서 s열까지의 교차부분 • A(:,j): j번째 열 • A(i,:): i번째 행 • A(:,end): A의 마지막 열 • A(end,:): A의 마지막 행 • A([i j k],[p q]): i, j 및 k 행들과 p 및 q 열들로 주어지는 부행렬을 생성

>> A = [2 3 5;7 11 13;17 19 23] A = 2 3 5 7 11 13 17 19 23 >> A(2:3,2:3) ans = 11 13 19 23

>> A(end:-1:1,end) ans = 23 13 5 >> A([1 3],[2 3]) ans = 3 5 19 23

Page 3: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• A(:): A의 처음 열부터 마지막 열까지의 모든 원소들로 구성되는 벡터 >> B = A(:) B = 2 7 17 3 11 19 5 13 23

• A(:)는 할당문의 왼편에 위치하면 그 형태를 유지하면서 A를 채움 >> A = zeros(3); A(:) = primes(23); A = A' A = 2 3 5 7 11 13 17 19 23

Page 4: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• primes: 주어진 인수 이하의 소수들의 벡터를 반환 • 전치 A = A': 소수들을 열이 아닌 행을 따라 재배치 • 기호 []: 원소가 없는 0 x 0 행렬 • []를 행이나 열에 할당하는 것은 행렬로부터 행이나 열을 삭제하는 한 가지 방법: >> A = [2 3 5;7 11 13;17 19 23] A = 2 3 5 7 11 13 17 19 23 >> A(2,:) = [] A = 2 3 5 17 19 23

• A = A([1 3],:)에 의해 위에서와 동일한 효과

Page 5: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• 행렬의 생성

• eye(size(A)): 차원이 주어진 행렬 A와 일치하는 단위행렬의 설정

• length(A): A의 두 차원 가운데 큰 것

• rand: 구간 [0, 1] 상에서 균일분산된 수들의 행렬을 생성

• randn: 구간 (0, 1) 상에서의 표준 정규분포 수들의 행렬을 생성

• rand와 randn을 인수가 없이 호출하면 하나의 불규칙 수를 생성 >> rand ans = 0.2311 >> rand(3) ans = 0.6068 0.7621 0.8214 0.4860 0.4565 0.4447 0.8913 0.0185 0.6154

Page 6: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• repmat(A,m,n): 각 블록이 A의 복사인 m x n 행렬을 생성. m을 생략하면 m=n >> A = repmat(eye(2),2) A = 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1

Page 7: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• 기본적인 행렬 생성함수들:

함수 기능

zeros 0들의 배열

ones 1들의 배열

eye 단위행렬

repmat 배열을 복제하고 붙임

rand 균일분산된 불규칙 수

randn 정규분포 불규칙 수

linspace 선형적으로 구분 배열된 벡터

logspace 로그눈금으로 구분 배열된 벡터

meshgrid 3D 그래프를 위한 X 및 Y 배열들

Page 8: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• 블록 형태 행렬 구성: >> B = [1 2; 3 4]; >> C = [B zeros(2) ones(2) eye(2)] C = 1 2 0 0 3 4 0 0 1 1 1 0 1 1 0 1 • blkdiag: 블록 대각행렬 생성 >> A = blkdiag(2*eye(2),ones(2)) A = 2 0 0 0 0 2 0 0 0 0 1 1 0 0 1 1

Page 9: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• 특수행렬의 생성

• 특수한 행렬들:

함수 생성행렬 비고

compan Companion 행렬

gallery 테스트용 행렬들의 모음

hadamard Hadamard 행렬

hankel Hankel 행렬 각 역대각선 아래부분의 원소들이 일정하다.

hilb Hilbert 행렬 (i,j)번째 원소는 1/(i+j-1)이다.

invhilb Hilbert 행렬의 역행렬

magic 마방진

pascal Pascal 행렬

rosser 고전적인 대칭 고유치 테스트 문제

toeplitz Toeplitz 행렬 첫 번째 열과 첫 번째 행을 지정해야 한다.

vander Vandermonde 행렬

wilkinson Wilkinson의 고유치 테스트 문제

Page 10: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• magic: 마방진을 생성 >> A = magic(3) A = 8 1 6 3 5 7 4 9 2 >> magic(5) ans = 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 • toeplitz: Toeplitz 행렬을 생성. 첫 번째 열과 첫 번째 행을 지정할 것 >> toeplitz([1 0 -1 -2],[1 2 4 8]) ans = 1 2 4 8 0 1 2 4 -1 0 1 2 -2 -1 0 1

Page 11: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• gallery: 테스트용 행렬들을 생성 >> A = gallery('moler',5) A = 1 -1 -1 -1 -1 -1 2 0 0 0 -1 0 3 1 1 -1 0 1 4 2 -1 0 1 2 5

• hankel: Hankel 행렬을 생성. 첫 번째 열과 마지막 행을 지정할 것 >> hankel([3 1 2 0],[0 -1 -2 -3]) ans = 3 1 2 0 1 2 0 -1 2 0 -1 -2 0 -1 -2 -3

Page 12: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

배열 연산

• /: 오른쪽 나누기( ) 연산자

• ∖: 왼쪽 나누기( ) 연산자

• 기본적인 행렬 및 배열 연산:

연산 행렬 측면

(행렬대수 규칙에 따른 연산)

배열 측면

(각 원소들에 대한 연산)

더하기 + +

빼기 - -

곱하기 * .*

왼쪽 나누기 ∖ .∖

오른쪽 나누기 / ./

멱급수 ^ .^

Page 13: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• 백슬래쉬와 앞슬래쉬는 선형 시스템의 해를 정의

• A∖B는 A*X = B의 해 X, A/B는 X*B = A의 해 X

>> A = [1 2; 3 4], B = ones(2) A = 1 2 3 4 B = 1 1 1 1 >> A∖B ans = -1 -1 1 1

• 연산자 앞에 점(.): 배열 측면, 혹은 원소들끼리의 곱셈 및 나눗셈

• A와 B가 같은 차원의 행렬들이라면 C = A.*B는 C(i,j) = A(i,j)*B(i,j), C = A./B는 C(i,j) = A(i,j)/B(i,j) >> A.*B ans = 1 2 3 4 >> B./A ans = 1.0000 0.5000 0.3333 0.2500

Page 14: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• kron: 행렬의 Kronecker 곱을 계산

• m x n 행렬 A와 p x q 행렬 B의 Kronecker 곱은 mp x nq 의 차원, (i,j) 블럭이 인 m x n 블럭

행렬로 나타낼 수 있음

>> A = [1 10; -10 100]; B = [1 2 3; 4 5 6; 7 8 9]; >> kron(A,B) ans = 1 2 3 10 20 30 4 5 6 40 50 60 7 8 9 70 80 90 -10 -20 -30 100 200 300 -40 -50 -60 400 500 600 -70 -80 -90 700 800 900

Page 15: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• 스칼라를 행렬에 더하는 경우: >> [4 3; 2 1] + 4 ans = 8 7 6 5 >> A = [1 -1] - 6 A = -5 -7 • 행렬을 스칼라로 곱하거나 나누기: >> [3 4 5; 4 5 6]/12 ans = 0.2500 0.3333 0.4167 0.3333 0.4167 0.5000

Page 16: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• 행렬의 원소들끼리의 계산: expm, funm, logm, sqrtm과 같이 이름 마지막에 m을 붙임 >> A = [2 2; 0 2] A = 2 2 0 2 >> sqrt(A) ans = 1.4142 1.4142 0 1.4142 >> sqrtm(A) ans = 1.4142 0.7071 0 1.4142 >> ans*ans ans = 2.0000 2.0000 0 2.0000

Page 17: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

행렬의 처리

• reshape: 행렬의 차원을 변경

• reshape(A,m,n): 그 원소들이 A의 열들로부터 차례로 얻어지는 m x n 행렬을 생성

>> A = [1 4 9; 16 25 36], B = reshape(A,3,2) A = 1 4 9 16 25 36 B = 1 25 16 9 4 36

Page 18: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• diag(x): 벡터 x에 대하여 대각원소가 x의 원소들로 이루어지는 대각행렬을 생성

• diag(x,k): x를 k번째 대각위치에 넣어줌. k=0은 주대각선, k>0는 주대각선 윗부

분의 대각선 위치, k<0은 주대각선 아래부분의 대각선 위치

>> diag([1 2 3]) ans = 1 0 0 0 2 0 0 0 3 >> diag([1 2], 1) ans = 0 1 0 0 0 2 0 0 0

>> diag([3 4], -2) ans = 0 0 0 0 0 0 0 0 3 0 0 0 0 4 0 0

Page 19: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• diag(diag(A)): 대각원소들이 A의 대각원소들과 동일한 대각행렬을 생성

• diag(A,k): A의 k번째 대각선 원소들로 이루어지는 열벡터를 생성

>> A = [2 3 5; 7 11 13; 17 19 23] A = 2 3 5 7 11 13 17 19 23 >> diag(A) ans = 2 11 23 >> diag(A,-1) ans = 7 19

Page 20: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• tril(A): A의 아래쪽 삼각부분(주대각선 및 그 아래부분의 원소들) 지정

• triu(A): A의 위쪽 삼각부분(주대각선 및 그 윗부분의 원소들) 지정

• tril(A,k): A의 k번째 대각선 및 그 이하부분의 원소들을 취함

• triu(A,k): A의 k번째 대각선 및 그 윗부분의 원소들을 취함

>> tril(A) ans = 2 0 0 7 11 0 17 19 23 >> triu(A,1) ans = 0 3 5 0 0 13 0 0 0

>> triu(A,-1) ans = 2 3 5 7 11 13 0 19 23

Page 21: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• rref(A): 주어진 행렬 A에 대한 에셜론(echelon) 형태를 생성 >> A = magic(8) A = 64 2 3 61 60 6 7 57 9 55 54 12 13 51 50 16 17 47 46 20 21 43 42 24 40 26 27 37 36 30 31 33 32 34 35 29 28 38 39 25 41 23 22 44 45 19 18 48 49 15 14 52 53 11 10 56 8 58 59 5 4 62 63 1

>> rref(A) ans = 1 0 0 1 1 0 0 1 0 1 0 3 4 -3 -4 7 0 0 1 -3 -4 4 5 -7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Page 22: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• MATLAB 행렬처리 함수들:

함수 기능

reshape 크기를 변경

diag 대각행렬 및 행렬의 대각원소들

blkdiag 블록 대각행렬

tril 아래쪽 삼각부분을 추출

triu 위쪽 삼각부분을 추출

fliplr 왼쪽/오른쪽 방향으로 옮기기

flipud 위쪽/아래쪽 방향으로 옮기기

rot90 행렬을 90도 회전

Page 23: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

성긴 행렬(Sparse Matrices)

• 성긴 행렬: 원소들의 상당부분이 0인 행렬

• A = sparse(i,j,s): 원소가 행렬들인 t-벡터 s와 지수들의 t-벡터 i, j가 주어질 때 차원이 max(i)

x max( j) 이고 k=1:t에 대하여 A(i(k),j(k)) = s(k)이며 다른 모든 원소들은 0인 성긴 행렬 A를

정의

>> A = sparse([1 2 2 4 4],[3 1 4 2 4],1:5) A = (2,1) 2 (4,2) 4 (1,3) 1 (2,4) 3 (4,4) 5

Page 24: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• full: 성긴 행렬을 충만행렬로 변환 >> B = full(A) B = 0 0 1 0 2 0 0 3 0 0 0 0 0 4 0 5 • nnz: 성긴(혹은 충만) 행렬에서 0이 아닌 원소들의 수 반환 >> nnz(A) ans = 5

• whos: 이용된 기억용량을 조사 >> whos Name Size Bytes Class A 4x4 80 double array (sparse) B 4x4 128 double array ans 1x1 8 double array Grand total is 22 elements using 216 bytes

Page 25: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• spdiags: 성긴 행렬들에 대한 diag의 유사 형태

• A = spdiags(B,d,m,n): 지수가 d로 정해지는 대각원소들을 B의 열들로부터 취한 m

x n 행렬 A를 생성

B = 1 2 0 1 2 3 0 2 3 0 2 3 d = -2 0 1

>> A = spdiags(B,d,4,4) A = (1,1) 2 (3,1) 1 (1,2) 3 (2,2) 2 (4,2) 1 (2,3) 3 (3,3) 2 (3,4) 3 (4,4) 2 >> full(A) ans = 2 3 0 0 0 2 3 0 1 0 2 3 0 1 0 2

•결과:

Page 26: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• 비행기 날개의 공기흐름에 대한 유한요소 모델링 >> load airfoil >> plot(x,y,'.')

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5

x 109

0

0.5

1

1.5

2

2.5

3

3.5

4

4.5x 10

9

•비행기 날개의 유한요소 계산격자 점.

Page 27: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• 날개 주위에는 4253 개의 점들이 존재하며 점들 간에는 상호관계가 존재하는데 어떤 주어진

하나의 점은 주변의 점들에만 영향을 미치는 것으로 간주. 이에 대한 정보는 데이터에 포함된

벡터 i와 j에 저장. 모든 점들에 1,2,...,4253과 같이 번호가 붙여져 있다고 하면 벡터 i와 j는 점 i

와 점 j 사이의 연결을 나타냄

>> [i(1:5) j(1:5)]'

ans =

1 2 3 5 4

2 3 10 10 11

• 점 1은 점 2에, 점 2는 점 3에, 점 3과 5는 점 10에, 점 4는 점11에 연결

• 성긴 인접행렬 A를 생성:

>> A = sparse(i,j,1);

>> spy(A)

•성긴 인접행렬의 가시화

Page 28: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• spy: 성긴 패턴을 가시화

• gplot: 점들 간의 상호 간섭을 기하학적으로 표시

>> clf

>> gplot(A,[x y])

>> axis off

•점들 간의 상호 간섭관계.

Page 29: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

선형 방정식 시스템

• 백슬래쉬 연산자 ∖: 선형 방정식 시스템 를 풀기 위한 기본적인 도구

• 선형 방정식 시스템 의 해를 구하면:

>> A = [1 0 2; 3 4 1;-2 1 3] A = 1 0 2 3 4 1 -2 1 3 >> rank(A) ans = 3 >> b = [3; 1; 2] b = 3 1 2

>> x = A/b x = 0.5758 -0.4848 1.2121

Page 30: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

선형 방정식 시스템

• 미지수보다 식의 수가 적은 과소계의 보기로서 선형 방정식 시스템

의 해를 구하면:

>> A = [1 1 1; 1 1 -1], b = [3; 1] A = 1 1 1 1 1 -1 b = 3 1 >> x = A/b x = 2.0000 0 1.0000

Page 31: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

치환 및 삼각행렬

• 치환행렬: 행과 열들이 교환된 단위행렬. 행렬의 각 행과 열에는 정확히 하나의 1 만이 존

재하며 나머지 원소들은 모두 0

• PA: A의 행들을 치환시킨 행렬

• AP: A의 열들을 치환시킨 행렬

• 행 벡터:

• A(p,:): P*A와 같음. 좀 더 빠르며 메모리를 적게 차지

Page 32: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

>> P = [0 0 0 1; 1 0 0 0; 0 0 1 0; 0 1 0 0] P = 0 0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 >> p = [4 1 3 2] p = 4 1 3 2 >> A = magic(4) A = 16 2 3 13 5 11 10 8 9 7 6 12 4 14 15 1 >> P*A ans = 4 14 15 1 16 2 3 13 9 7 6 12 5 11 10 8 >> A(p,:) ans = 4 14 15 1 16 2 3 13 9 7 6 12 5 11 10 8

Page 33: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• 치환행렬을 포함하는 선형 방정식:

• 해:

• 상부삼각행렬: 대각선을 포함한 윗부분의 원소들은 0이 아니며 대각선 아래부분의 원소들

은 모두 0인 행렬

• 단위 하부삼각행렬: 대각선 부분의 원소들이 모두 1이고 주 대각선 아래부분의 원소들이 0 이

아닌 행렬

Page 34: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

LU 인수분해

• 가우스 소거법: 정방형 연립 선형 방정식 시스템을 푸는 데에 거의 보편적으로 사용되는

알고리듬(U: 상부삼각행렬, L: 하부삼각행렬, P: 치환행렬)

LU 인수분해에 따르면 일반적인 방정식 시스템

은 다음과 같은 한 쌍의 삼각 시스템이 된다.

• lu: 주어진 행렬에 대하여 LU 인수분해를 수행

• [L,U]=lu(X): 행렬 X를 상부삼각행렬 U와 하부삼각행렬 L로 분해하여 주며 X = L*U의 관계

가 성립

• [L,U,P]=lu(X): L과 U 외에 PX=LU를 만족하는 치환행렬 P를 반환

Page 35: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

>> A = magic(3) A = 8 1 6 3 5 7 4 9 2 >> [L, U, P] = lu(A) L = 1.0000 0 0 0.5000 1.0000 0 0.3750 0.5441 1.0000 U = 8.0000 1.0000 6.0000 0 8.5000 -1.0000 0 0 5.2941 P = 1 0 0 0 0 1 0 1 0

Page 36: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

놈(Norm)과 조건수(Condition Number)

• 놈(norm): 벡터의 원소들의 일반적인 크기의 정도를 나타내는 하나의 수 • : 벡터 놈들의 집단. 의 범위에서 파라미터 p에 따라 좌우

• 대부분의 경우 , 혹은 가 이용

• 놈: Mahattan 놈

• 놈: 유클리드 거리

• 놈: Chebyshev 놈

• 벡터 놈의 기본적인 성질:

Page 37: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• norm(x,p): 계산. norm(x)는 norm(x,2)와 동일 >> x = [3 1 -2 0 4]; >> norm1 = norm(x,1) norm1 = 10 >> norm2 = norm(x) norm2 = 5.4772 >> norminf = norm(x,inf) norminf = 4 • 행렬의 p-놈의 정의: • m x n 행렬 A의 1-놈: “최대 열 합”

• m x n 행렬 A의 -놈: “최대 행 합” • A의 2-놈은 A의 최대 특이값 max(svd(A))로 나타낼 수 있음

Page 38: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• 행렬의 경우 norm 함수는 norm(A,p)로 호출되며 p=1,2,inf 및 p='fro'가 지원된다. p는

double이거나 문자열이 될 수 있는데 p='fro'인 경우는 다음과 같은 Frobenius 놈이다:

>> A = [1 2 3; 4 5 6; 7 8 9] A = 1 2 3 4 5 6 7 8 9 >> [norm(A,1) norm(A,2) norm(A,inf) norm(A,'fro')] ans = 18.0000 16.8481 24.0000 16.8819

>> A = [4 3;10 7] A = 4 3 10 7 >> norm1 = norm(A,1) norm1 = 14 >> norm2 = norm(A,2) norm2 = 13.1900 >> norminf = norm(A,inf) norminf = 17

Page 39: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• 벡터 x에 행렬 A를 곱한 새로운 벡터 Ax의 놈(norm)의 범위:

• 최대(max)와 최소(min)는 0 벡터가 아닌 모든 x에 대하여 취하며 A가 특이행렬이라면

m=0 • 조건수 : M/m 로 주어지는 비율:

• cond: 조건수 계산 >> A = [4 3;10 7] A = 4 3 10 7 >> cond(A) ans = 86.9885

Page 40: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• cond(A)나 cond(A,2) : 를 계산. svd(A)를 이용하며 놈의 기하학적 성질

이 중요한 보다 작은 행렬들의 경우에 대해 적절

• cond(A,1) : 를 계산. inv(A)를 이용하며 cond(A,2)보다 기능이 덜함

• cond(A,inf) : 를 계산. inv(A)를 이용하며 cond(A',1)과 같음

• condest(A) : 를 추정. lu(A)를 이용하며 규모가 크고 성긴 행렬들에 대하

여 특히 적합

• rcond(A) : 1/ 를 추정. lu(A)를 이용함

>> A = magic(3) A = 8 1 6 3 5 7 4 9 2 >> cond(A,1) ans = 5.3333 >> condest(A) ans = 5.3333 >> rcond(A) ans = 0.1875

Page 41: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• condeig: 행렬의 고유치들에 대한 조건수들을 계산. 조건수가 크면 고유치가 행렬의 교

란에 민감하다는 것을 의미함

>> A = [2 1 3; -1 0 1; 4 2 6] A = 2 1 3 -1 0 1 4 2 6 >> [V,D,s] = condeig(A) V = 0.4465 0.1925 0.1187 0.0550 -0.9623 -0.9641 0.8931 0.1925 0.2374 D = 8.1231 0 0 0 0.0000 0 0 0 -0.1231 s = 1.0261 11.6190 11.6369

Page 42: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• cond(A)나 cond(A,2) : 를 계산. svd(A)를 이용하며 놈의 기하학적 성질

이 중요한 보다 작은 행렬들의 경우에 대해 적절

• cond(A,1) : 를 계산. inv(A)를 이용하며 cond(A,2)보다 기능이 덜함

• cond(A,inf) : 를 계산. inv(A)를 이용하며 cond(A',1)과 같음

• condest(A) : 를 추정. lu(A)를 이용하며 규모가 크고 성긴 행렬들에 대하

여 특히 적합

• rcond(A) : 1/ 를 추정. lu(A)를 이용함

>> A = magic(3) A = 8 1 6 3 5 7 4 9 2 >> cond(A,1) ans = 5.3333 >> condest(A) ans = 5.3333 >> rcond(A) ans = 0.1875

Page 43: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• condeig: 행렬의 고유치들에 대한 조건수들을 계산. 조건수가 크면 고유치가 행렬의 교

란에 민감하다는 것을 의미함

>> A = [2 1 3; -1 0 1; 4 2 6] A = 2 1 3 -1 0 1 4 2 6 >> [V,D,s] = condeig(A) V = 0.4465 0.1925 0.1187 0.0550 -0.9623 -0.9641 0.8931 0.1925 0.2374 D = 8.1231 0 0 0 0.0000 0 0 0 -0.1231 s = 1.0261 11.6190 11.6369

Page 44: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

QR 알고리듬

• m x n 행렬 A의 QR 인수화 A=QR에서 Q는 m x m unitary 행렬이고 R은 m x n 상

부삼각 행렬이다. QR 인수화는 최소자승 문제의 풀이 및 A의 열들에 대한 단위직교

기저(basis, 基底)의 구축에 매우 유용하다.

• qr: 임의의 실수나 복소행렬, 그리고 정방 및 사각행렬을 단위수직 열들을 갖는 행

렬 Q와 상부, 혹은 오른쪽 감각부분만 0이 아닌 행렬 R의 곱으로 인수분해함.

• [Q,R]=qr(A): QR인수화. m>n이면 [Q,R]=qr(A,0)로부터 Q는 n개의 열들로만 이루어

지며 R이 n x n 행렬인 “절약형” 버전이 생성

>> format short e, A A = 1 0 1 1 -1 1 2 0 0 >> [Q,R] = qr(A) Q = -4.0825e-001 1.8257e-001 -8.9443e-001 -4.0825e-001 -9.1287e-001 -5.5511e-017 -8.1650e-001 3.6515e-001 4.4721e-001 R = -2.4495e+000 4.0825e-001 -8.1650e-001 0 9.1287e-001 -7.3030e-001 0 0 -8.9443e-001

Page 45: 제 6 장 행렬과 선형대수 - elearning.kocw.netelearning.kocw.net/KOCW/document/2013/hanyang/ParkSangung/06.pdf · • 날개 주위에는 4253 개의 점들이 존재하며

• 열 피벗팅을 이용하는 QR 인수화는 AP=QR의 형태를 갖는다. 여기에서 P는 순열행렬이

다. 여기에서 이용되는 순열조작에서는 대각원소들이 증가하지 않는 순서로 된 인수 R을

생성한다. 열 피벗팅은 A가 계수결핍인 것으로 의심되는 경우에 특히 적절하다.

A = [-2 1 0 3;1 0 4 -3;-4 2 0 6] A = -2 1 0 3 1 0 4 -3 -4 2 0 6

>> rank(A) ans = 2 >> [Q,R,P] = qr(A) Q = -0.4082 -0.1826 -0.8944 0.4082 -0.9129 0.0000 -0.8165 -0.3651 0.4472 R = -7.3485 1.6330 4.4907 -2.0412 0 -3.6515 0.9129 -0.9129 0 0 0.0000 0.0000 P = 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0