4 장 . 선형방정식의 해법과 응용 (1~3 장 까지의 내용 review)

Post on 06-Jan-2016

176 views 0 download

description

4 장 . 선형방정식의 해법과 응용 (1~3 장 까지의 내용 review). 최 윤정. Contents. 4.1 가우스 소거법을 이용한 선형방정식의 해법 첨가행렬로의 표현 가우스 - 조단 소거법에 의한 선형방정식의 해법 LU- 분해법에 의한 선형방정식의 해법 4.2 선형방정식의 다양한 응용들 여러 가지 응용들 화학방정식에의 응용 교통 흐름에의 응용 마르코프 체인에의 응용 암호 해독에의 응용 키르히호프 법칙에의 응용. 4.1.1 첨가행렬로의 표현. 4.1.1 첨가행렬로의 표현. - PowerPoint PPT Presentation

Transcript of 4 장 . 선형방정식의 해법과 응용 (1~3 장 까지의 내용 review)

4 장 . 선형방정식의 해법과 응용(1~3 장 까지의 내용 review 포함 )

최 윤정

Contents

4.1 가우스 소거법을 이용한 선형방정식의 해법

• 첨가행렬로의 표현

• 가우스 - 조단 소거법에 의한 선형방정식의 해법

• LU- 분해법에 의한 선형방정식의 해법

- 두리틀 , 촐스키

4.2 선형방정식의 다양한 응용들

• 여러 가지 응용들

• 화학방정식 / 교통 흐름 / 마르코프 체인 / 암호 해독 등에 응용

3

4.1.1 첨가행렬로의 표현

4

4.1.1 첨가행렬로의 표현

5

4.1.1 첨가행렬로의 표현

6

4.1.2 가우스 - 조단 소거법에 의한 선형방정식의 해법

7

4.1.2 가우스 - 조단 소거법에 의한 선형방정식의 해법

8

4.1.2 가우스 - 조단 소거법에 의한 선형방정식의 해법

9

4.1.2 가우스 - 조단 소거법에 의한 선형방정식의 해법

10

4.1.2 가우스 - 조단 소거법에 의한 선형방정식의 해법

11

12

4.1.2 가우스 - 조단 소거법에 의한 선형방정식의 해법

행렬의 계수와 연립방정식의 해의 관계

• 다른 형식으로 정의해도 좋습니다 .

13

m 행 n 열의 A

가우스소거법 : 첨가행렬과 RREF 를 이용한 풀이방법

>>A = [ 1 3 -2 0 2 0 ;

2 6 -5 -2 4 -3;

0 0 5 10 0 15 ;

2 6 0 8 4 18 ];

>>b = [ 0 -1 5 6 ]’;

>>C = [A b];

>> rank(A)

>> rank(C)

이 때 rank(C) < 4 보다 작으므로 무수히

많은 해를 갖는다 . 14

>> rref(C)

위 결과에 대해 다시 정리

>> syms r s t

>> x2 = r; x4=s ; x5=t;

x6=1/3;

>> x1=-3*x2-4*x4 - 2*x5;

>> x3 = -2*x4;

>> sol = [x1 x2 x3 x4 x5 x6]

상수항이 0 일 때와 0 이 아닐 때를 함께 비교해보세요 .

1) 2x –y =0

x + 3y =0

2) 2x –y =0

4x -2y =0

15

>>A= [ 2 -1; 1 3];

>>rref(A)

>>b=[0 0]’

>>rref([A,b])

>>A= [ 2 -1; 4 -2];

>>rref(A)

>>b=[0 0]’

>>rref([A,b])

• 무수히 많은 해를 가지는 경우

• rank(A) < n

ans =

1 0 0 0 1 0

ans =

1 -1/2 0 0 0 0

LU-Decomposition

• Ax = b 에서 A = L U 로 인수분해하여 중간해를 구한 후 , 다시 원래의 해를 구하는 방법 .

• L = 하부삼각행렬 , U = 상부삼각행렬

• 두리틀 (Doolittle method), 촐스키 (cholesky), 크라우트 (crout)

• 조사해보기 .

진행방법

• Step1 : Ax = b 를 LUx = b 로 치환

• Step2 : Ux = y 로 두고 , Ly = b 로 대체

• Step3: Ly=b 에 대하여 y 를 구하고

• Step4 Ux=y 를 대입하여 x 에 대한 최종해를 구한다 .16

http://numericalmethodsece101.weebly.com/doolittlersquos-method.html

예제 4-8

• x1 + x2 + x3 = 7

• x1 + 2x2 + 2x3=7

• x1 + 2x2 + 3x3=5

• Step1 : Ax = b 의 형태로 .

17

1 1 11 2 21 2 3

x1

X2

x3

=775

1 1 11 2 21 2 3

a1 0 0b1 b2 0c1 c2 c3

a'1 a'2 a'3 0 b'1 b'20 0 c'1

• Step2 : A = LU 의 형태로 !

a1 0 0b1 b2 0c1 c2 c3

a'1 a'2 a'3 0 b'1 b'20 0 c'1

x1

X2

x3

=775

• Step3 : LUx = b 에서 Ux 를 y 로 치환 !

a1 0 0b1 b2 0c1 c2 c3

=y1

y2

y3

775

a1 y1 = 7b1 y1 + b2 y2 = 7

c1 y1 + c2 y2 + c3 y3 = 5

• Step4 : Ux 대신 y 를 대입하여 L y = b

……..

18

>> [L U]=lu(A) 를 이용하여 L 과 U 를 구해보세요 .

19

20

LU 분해론 – 두리틀 알고리즘http://www.engr.colostate.edu/~thompson/hPage/CourseMat/Tutorials/CompMethods/doolittle.pdf

• 수치해석에서 다루긴 하지만 알고리즘에 따라 구현해보겠습니다 .

• A = LU . 정방행렬 이므로 m=n

21

l11 0 … 0l21 l22 … 0…lm1 lm2 … lm3

u11 u12 … u1n

0 u21 … u2n

… 0 0 … umn

=a11 a12 … a1n

a21 a22 … a2n

am1 am2 … amn

* a ij  = ∑𝑘=1

𝑛

𝐿𝑖𝑘∗𝑈𝑘𝑗❑

2 -1 -1-4 6 1-4 -2 6

L 의 대각원소를 1 로 만들어 주고 시작한다 ...

LU 분해론 – 두리틀 알고리즘

일반적인 Step :

1. 하삼각행렬 (L 행렬 ) 의 대각을 1 로 정한다 . L[i,i]=(1)

2. 상삼각행렬의 1 행의 값을 원 행렬의 1 행과 동일하기 때문에 대입을 한다 .

3. 구하고자 하는 행렬의 값을 대각으로 나눈다 .       ( 대각을 기준으로 위는 U 를 구하고 , 아래는 L 를 구한다 .)

            3-1. 대각의 위쪽 : L[i,j]U[i,j] = a(ji)-sum(L[i,j-1]U[i-1,j])

                  -> A[j,i] 에서 L 은 (i j-1) 까지와 U 은 (i-1 j) 까지의 합을 뺀다 .

            3-2. 대각의 아래쪽 : L[i,j]U[i,j] = a(ji)-sum(L[i,j-1]U[i-1,j])

                    -> A[j,i] 에서 L 은 (i j-1) 까지와 U 은 (i-1 j) 까지의 합을 뺀다 .

  4. 대각으로 나눈다 .( 대각을 기준으로 위는 U 를 구하고 , 아래는 L 를 구한다 .)

            4-1. 대각의 위쪽은 U[i,j)]= A[i,j] - ' 생각 3' 에서 구한값을 뺀다 .

            4-2. 대각의 아래쪽은 L[i,j] = (A]i,j]-' 생각 3' 구한 합 )/U(ji)

22

23

jiii

ji

ii kiikii

코드로 확인하고 , lu() 와 비교해봅니다 .

24

function my_lu(A)[m,n]=size(A) if( m ~= n) error(‘ 정방행렬이 아닙니다 .’)endL=eye(n);U=zeros(n,n) %LU 분해for i = 1:n U(i,i)=A(i,i) - L(i, 1:i-1) * U(1:i- 1, i); for j= i+1:n U(i,j)= A(i,j) - L(i,1:i-1) * U(1:i-1,j); L(j,i)= (A(j,i) - L(j,1:i-1) * U(1:i-1, i)) / U(i,i); endend% 출력해보고LU% 확인해보세요A2= L*UA

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

>>my_lu(A)

>>lu(A)

LU- 분해론에 대하여 . 좀더 찾아보세요 .

• 원 행렬 A 를 L 과 U 의 두 개의 단순한 문제로 바꾸어 ( 물론 분해연산은 필요합니다 .)

• 순서대로 대입하는 것과 거꾸로 대입하는 방법을 몇 번함으로써 ( 역행렬의 존재와 상관없이 ) 너무도 쉽게 풀 수 있게 된다 .

• 이것이 Von Neumann 과 함께 최초의 stored-program 컴퓨터를 개발한 Alan Turing 이 1948 년에 소개한 LU- 분해이며 그 후 10 년만에 ,

주어진 행렬를 그와 닮음인 (similar) block 대각 행렬로 수렴시키는 QR-factorization 을 이용한 QR-algorithm 이 F. H. Wilkinson 과 House-

holder 등의 기여로 개발되었으며

• 이러한 분해이론은 그후 Cholesky 분해 , Polar Decomposition, Singular Value Decomposition, L D LT Decomposition 등으로 다양한

연구의 한 분야가 되어 오고 있다 .

• 실제로 , 이 기간동안 행렬이론의 기존의 또 , 새로운 지식은 선형계획법 , 비선형계획법 , Markov Chain, 암호이론 , 인구문제 , 교통문제 ,

최적화이론 , 수치해석학등의 다양한 연구분야를 개척하고 발전시키는데 큰 기여를 기여했던 것이다 .

• 우리 사회의 여러 문제를 수학적으로 표현하여 수학 문제로 바꾸어 놓은 후 , 그 문제를 선형화하여 일차연립방정식과 관련된 문제로 바꾼 후 , 행렬에

대한 지식을 이용하여 쉽게 해를 구한 다음 그 해를 원래 사회문제에 대한 답으로 해석하는 것이 바로 수학의 역할 중의 하나이다 .

• 이 과정에서 선형성에 근거한 컴퓨터를 만들었으며 그러한 컴퓨터의 발전과 더불어 선형대수학을 포함한 선형대수학의 연구와 이용이 20 세기 후반에

가히 폭발적으로 활발해졌다………

• ( … )

25

* 행렬식의 활용 : 보간다항식

• * 보간다항식 : n 개의 점을 지나는 n-1 차 다항식

• P(x) = a0 + a1x1 + … + an-2x n-2 + an-1x n-1

= an-1x n-1 + an-2x n-2 + …..+ a1x1 + a0

• 반데르몽드 행렬을 이용할 수 있습니다 .

26

네 점을 지나는 3 차 보간다항식 구하기

• (-1, 3), ( 0,4), (1,2), (3, 6)

det(A) !=0 이므로 유일한 해

>>format rat

>>rref([A b]) =

27

1 -1 1 -1 1 0 0 01 1 1 11 3 9 27

a0

a1

a2

a3

3426

A x b

1 0 0 0 40 1 0 0 -29/240 0 1 0 -3/20 0 0 1 17/24

=

P(x) = a0 + a1x1 + a2x2 + a3x3 에 대입

= 4 - 29/24 x1 - 3/2x2 + 17/24x3

1 x1 x2 x3

방법 1: polyfit(X, Y, 3) //X,Y 를 지나는 3 차 다항식의 계수구하기방법 2: A = [ X.^3 X.^2 X [1 1 1 1]’ ] 로 생성한 후 구하기 .

방법 3: 반데르몽드 함수 이용해보기>> X=[-1 0 1 3];

>> A=vander(X)

A =

-1 1 -1 1

0 0 0 1

1 1 1 1

27 9 3 1

>> y=[3 4 2 6]’;

>> C= inv(A)*y 또는 rref([A y])

17/24

-3/2

-29/24

4

>> syms x

>> S=C(4) + C(3).*x.^1 + C(2).*x.^2 + C(1)*x.^3

>> ezplot(S)

an-1x n-1 + an-2x n-2 +… + a0 의 형태

x3 x2 x1

1

행렬식도 활용할 수 있습니다 .

• 직선방정식 : y= ax + b

• 원 방정식 : (x-a)2+(x-b)2 = r 2

a(x2 + y2 ) + bx + cy + d=0

• 원을 제외한 2 차 곡선의 방정식 : 포물선 , 타원 , 쌍곡선 등

c1x2 + c2xy +c3 y2 + c4x + c15y + c16 = 0

28

직선의 방정식 : y= ax + b

• ax + by + c = 0 ---1)

• 서로 다른 두 점 (x1, y1) (x2, y2) 를 지나는 직선의 방정식은 주어진 직선 위에 있으므로

• ax1 + by1 + c =0 ---2)

• ax2 + by2 + c =0 ---3)

• 즉 , 이 세 방정식은 변수 a,b,c 에 대한 연립방정식이 된다 .

• Ax = b 에서 b=0 인 동차연립방정식에서 자명해 ( 미지수가 모두 0) 를 가지지 않으려면 , 그리고 직선은 무수히 많은 해를 가지므로 |A| = 0 이 되어야 한다 .

• 따라서 =0 을 구한다 .

• x*(y1-y2) - y*(x1-x2) + x1y2-y1x2 =0 ^^

• 29

x y 1 x1 y1 1 x2 y2 1

두 점 ( 9 -7), (-8 3) 을 지나는 직선방정식

= 0 을 구한다 .

1 행에 대핸 여인자 전개에 의한 행렬식 구하기

det(A) = sum(akj*Akj) ( k=1 부터 n 까지 )

따라서 x * -10 - y * 17 - 29 = 0

>> syms x y

>> X=[9 -8] ; Y=[-7 3];

>> [X; Y]’

>> A = [x y ; [X; Y]']

>> A =[A, [1 1 1]’]

>> det(A)

>> ezplot(det(A))30

x y 1 9 -7 1 -8 3 1

A = [ x, y][ 9, -7][ -8, 3]

A =[ x, y, 1][ 9, -7, 1][ -8, 3, 1]

- 10*x - 17*y - 29

원의 방정식 : a(x2 + y2 )+ bx + cy + d=0

• 서로 다른 세 점 ( x1, y1) (x2, y2) (x3, y3) 이 한 원 위에 있다고 가정하면 , a, b, c ,d 에

대한 연립방정식을 얻을 수 있고 , 이때

• a,b,c,d 가 모두 0 인 자명해를 가지면 원은 존재하지 않는다 .

• 원은 무수히 많은 해를 가지므로 이 선형시스템의 행렬식은 0 이다 .

• a(x12 + y12 )+ bx1 + cy1 + d=0

• a(x22 + y22 )+ bx2 + cy2 + d=0

• a(x32 + y32 )+ bx3 + cy3 + d=0

31

x2+y2 x y 1

x12+y12 x1 y1 1 x22+y22 x2 y2 1 x32+y32 x3 y3 1

=0

세 점 (1,7) (4,-3) (2,3) 을 지나는 원의 방정식

>> syms x y

>> point=[1 7; 4 -3; 2, 3];

>> X=point(:,1) ; Y=pont( : , 2);

A = [ x^2 + y^2 x y ;

X.^2 + Y.^2 X Y ]

>>A=[A, [ 1 1 1 1]’]

A =

[ x^2 + y^2, x, y 1]

[ 50, 1, 7, 1]

[ 25, 4, -3, 1]

[ 13, 2, 3, 1]

>> det(A)

ans =

- 2*x^2 + 270*x - 2*y^2 + 86*y – 772

>> ezplot(det(A))

>> ezplot(det(A),[-20 140], [-60 100])32

2 차 곡선 방정식 : 원이 아닌 타원 , 쌍곡선 , 포물선

• 어떤 소행성의 궤도 위에 있는 5 개의 점 (5.764, 0.648) (6.268, 1.202)

(6.759, 1.823) ( 7.168, 2.526) (7.480, 3.380) 을 지나는 궤도 방정식

33

x2 xy y2 x y 1

. . . . . . . . . . . . . . . . . .

=0

x2 xy y2 x y 133.224 3.735 0.42 5.764 0.648 139.514 7.556 1.44 6.286 1.202 145.685 12.332 3.32 6.759 1.823 151.38 18.106 6.38 7.168 2.526 155.95 25.133 11.29 7.48 3.36 1

34

입력과 계산의 편의를 위해 열벡터로 변환하기 .

>> X = [ 7.4800 , 7.1680, 6.7590, 6.2860, 5.7640 ]’;

>> Y = [ 3.3800, 2.5260, 1.8230, 1.2020, 0.6480 ]’;

>> D=[X.^2 X.*Y Y.^2 X Y ]

D =

55.9504 25.2824 11.4244 7.4800 3.3800

51.3802 18.1064 6.3807 7.1680 2.5260

45.6841 12.3217 3.3233 6.7590 1.8230

39.5138 7.5558 1.4448 6.2860 1.2020

33.2237 3.7351 0.4199 5.7640 0.6480

>> C = [ 1 1 1 1 1]’ ;

>> D =[ D, C] ;

>> syms x, y;

>> A=[ x^2 x*y y^2 x y 1 ];

>> F = [A ; D] ;

>> ezplot(det(F), [0 10], [-2 6])

>> hold on, plot(X,Y,'Marker','diamond','LineWidth',2,'LineStyle',':','Color',[1 0 0]);

Plot 은 plot 에디터에서 ..

35

응용하기 화학방정식

교통 흐름

마르코프 체인

암호 해독

키르히호프 법칙

실제로는 훨씬 더 많아요

36

37

4.2.1 여러 가지 응용들

38

4.2.1 여러 가지 응용들

39

40

41

4.2.2 화학방정식에 응용 1

42

43

44

4.2.2 화학방정식에 응용 2

45

4.2.2 화학방정식에 응용

46

4.2.3 교통 흐름에 응용

47

4.2.3 교통 흐름에 응용

48

49

50

51

4.2.4 마르코프 체인에 응용

52

53

54

55

56

4.2.5 암호 해독에 응용

57

4.2.5 암호 해독에 응용

4.2.6 키르히호프 법칙에 응용

58

59

60

61