29
12장 연립 방정식을 풀기 위한 반복법 12.1 선형 시스템: Gauss-Seidel 12.2 비선형 시스템

12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

  • Upload
    lekhue

  • View
    223

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

12장 연립 방정식을풀기 위한 반복법

12.1 선형 시스템: Gauss-Seidel

12.2 비선형 시스템

Page 2: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

12.1 선형 시스템: Gauss-Seidel (1/10)

반복법은 초기 근을 가정한 후에 더 좋은 근의 값을추정하는 체계적인 절차를 이용한다.

G-S 방법은 선형 대수방정식을 푸는 반복법 중에서

가장 보편적으로 사용되는 방법이다.

n 개의 방정식에서 n = 3인 (대각원소들이 모두 0이 아닌)

경우를 다루자.

11

1

313

1

21211

a

xaxabx

jjj

22

1

32312122

a

xaxabx

jjj

33

23213133

a

xaxabx

jjj

여기서 j = 현재 반복 단계

j-1 = 이전 반복 단계

Page 3: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

12.1 선형 시스템: Gauss-Seidel (2/10)

x의 초기 값들을 가정한다.

(예) 모두 0

수렴 상태를 점검한다.

새로 계산된 x 값이 바로 다음 방정식의 x 값에대입된다: Gauss-Seidel

참고로 Jacobi 반복법에서는 새로 계산된 x 값이

그 다음 단계의 계산에서 대입된다.

sj

i

j

i

j

iia

x

xx

%1001

,

Page 4: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

12.1 선형 시스템: Gauss-Seidel (3/10)

반복법의 원리 (a) Gauss-Seidel법과 (b) Jacobi법

Page 5: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

예제 12.1 (Gauss-Seidel 법) (1/3)

Q. Gauss-Seidel법을 사용하여 다음 연립방정식의

해를 구하라.

참고로 정해는

4.71 10 .203.0

3.193.07 1.0

85.7 0.21.03

321

321

321

xxx

xxx

xxx

75.23}{ Tx

Page 6: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

예제 12.1 (Gauss-Seidel 법) (2/3)

풀이)

첫 번째 반복

; ;

x2 = x3 = 0라고 놓고 x1을 구하고, 구한 값을 대입하여x2와 x3를 구한다.

3

2.01.085.7 321

xxx

7

3.01.03.19 312

xxx

10

2.03.04.71 213

xxx

616667.23

)0(2.0)0(1.085.71

x

794524.27

)0(3.0)616667.2(1.03.192

x

005610.710

)794524.2(2.0)616667.2(3.04.713

x

Page 7: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

예제 12.1 (Gauss-Seidel 법) (3/3)

두 번째 반복

오차를 추정하면

a,2 = 11.8%; a,3 = 0.076%;

990557.23

)005610.7(2.0)794524.2(1.085.71

x

499625.27

)005610.7(3.0)990557.2(1.03.192

x

000291.710

)499625.2(2.0)990557.2(3.04.713

x

%5.12%100990557.2

616667.2990557.21,

a

Page 8: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

12.1 선형 시스템: Gauss-Seidel (4/10)

수렴과 대각지배

Gauss-Seidel법은 단일방정식의 근을 구하는

고정점 반복법과 일맥상통한다.

수렴조건

대각지배 시스템

n

ijj

ijii aa1

Page 9: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

12.1 선형 시스템: Gauss-Seidel (5/10)

MATLAB M-파일: GaussSeidel

행렬 형태로 표시하면

new

2

33

32new

1

33

31

33

3new

3

old

3

22

23new

1

22

21

22

2new

2

old

3

11

13old

2

11

12

11

1new

1

xa

ax

a

a

a

bx

xa

ax

a

a

a

bx

xa

ax

a

a

a

bx

333

222

111

/

/

/

}{

ab

ab

ab

d

0//

/0/

//0

][

33323331

22232221

11131112

aaaa

aaaa

aaaa

C

}]{[}{}{ xCdx

Page 10: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

12.1 선형 시스템: Gauss-Seidel (6/10)

[Gauss-Seidel 법으로 해를 구하는 MATLAB M-파일 ]

function x = GaussSeidel(A,b,es,maxit)

% GaussSeidel (A,b,es,maxit):

% Gauss-Seidel method

% input:

% A = coefficient matrix

% b = right hand side vector

% es= (optional) stop criterion (%) (default = 0.00001)

% maxit = (optional) max iterations (default = 50)

% output:

% x = solution vector

Page 11: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

12.1 선형 시스템: Gauss-Seidel (6/10)

[Gauss-Seidel 법으로 해를 구하는 MATLAB M-파일 ]

% default values

if nargin<4, maxit=50; end

if nargin<3, es=0.00001; end

[m,n] = size(A);

if m ~= n, error('Matrix A must be square'); end

C = A;

for i = 1:n

C(i,i) = 0;

x(i) = 0;

end

Page 12: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

12.1 선형 시스템: Gauss-Seidel (6/10)

[Gauss-Seidel 법으로 해를 구하는 MATLAB M-파일 ]

x = x';

for i = 1:n

C(i,1:n) = C(i,1:n)/A(i,i);

end

for i = 1:n

d(i) = b(i)/ A(i,i);

end

iter = 0;

while (1)

xold = x; disp(x')

Page 13: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

12.1 선형 시스템: Gauss-Seidel (6/10)

[Gauss-Seidel 법으로 해를 구하는 MATLAB M-파일 ]

for i = 1:n

x(i) = d(i) - C(i,:)*x;

if x(i) ~= 0

ea(i) = abs((x(i) - xold(i))/x(i)) * 100;

end

end

iter = iter +1;

if max(ea)<=es | iter >= maxit, break, end

end

Page 14: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

12.1 선형 시스템: Gauss-Seidel (7/10)

>> A= [3 -.1 -.2; .1 7 -.3; .3 -.2 10]

A =

3.0000 -0.1000 -0.2000

0.1000 7.0000 -0.3000

0.3000 -0.2000 10.0000

>> b=[7.85; -19.3; 71.4];

>> x = GaussSeidel(A,b)

Page 15: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

12.1 선형 시스템: Gauss-Seidel (8/10)

0 0 0

2.6167 -2.7945 7.0056

2.9906 -2.4996 7.0003

3.0000 -2.5000 7.0000

3.0000 -2.5000 7.0000

3.0000 -2.5000 7.0000

x =

3.0000

-2.5000

7.0000

Page 16: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

12.1 선형 시스템: Gauss-Seidel (9/10)

이완법

수렴 속도를 개선하기 위함

새로운 값을 계산한 후, 그 값을 현재와 직전에

계산된 결과의 가중평균으로 놓음

oldnewnew )1( iii xxx

Page 17: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

12.1 선형 시스템: Gauss-Seidel (10/10)

가중인자 : 0 2

- = 1 수정되지 않음 = Gauss-Seidel법

- 0 1 하이완법

수렴하지 않는 시스템을 수렴하도록 만들거나, 진동을 감쇠시켜 수렴

을 빠르게 함

- 1 2 상이완법

현재 계산된 값에 큰 비중을 둠

새로운 값을 정해로 더 가까이 가도록 함

수렴하는 시스템의 수렴속도를 증가시키기 위함

연속상이완법(successive overrelaxation, SOR)이라고도 함

Page 18: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

12.2 비선형 시스템 (1/6)

다음의 비선형 방정식을 고려해 보자.

573

10

2

212

21

2

1

xxx

xxx

0),,,(

0),,,(

0),,,(

21

212

211

nn

n

n

xxxf

xxxf

xxxf

Page 19: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

12.2 비선형 시스템 (2/6)

연속대입법

고정점 반복법과 Gauss-Seidel법과 같은 전략을 사용함

수렴의 여부는 방정식을 어떻게 수식화하는가에 달려있음

초기 가정값이 정해에 충분히 가깝지 않으면 발산할 수 있음

비선형 방정식의 해를 구하는데 한계가 있음

Page 20: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

예제 12.2 (비선형 방정식에 대한 연속대입법) (1/3)

Q. 연속대입법을 이용하여 다음 방정식의 근을 결정하라.

참고로 정해는 x1 = 2와 x2 = 3이다.

처음 계산을 위해 해를 x1 = 1.5와 x2 = 3.5로 가정한다.

573

10

2

212

21

2

1

xxx

xxx

Page 21: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

예제 12.2 (비선형 방정식에 대한 연속대입법) (2/3)

풀이)

첫 번째 반복

두 번째 반복

이상의 결과에서 이 접근법은 발산할 것으로 보임

2

2

11

10

x

xx

2

212 357 xxx

21429.25.3

)5.1(10 2

1

x 37516.24)5.3)(21429.2(357 2

2 x

20910.037516.24

)21429.2(10 2

1

x

709.429)37516.24)(20910.0(357 2

2 x

Page 22: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

예제 12.2 (비선형 방정식에 대한 연속대입법) (3/3)

원래의 방정식을 다른 형태로 바꾸어 계산해 보자.

첫 번째 반복

두 번째 반복

따라서 이 방법은 정해 x1 = 2와 x2 = 3에 수렴하는 결과를 산출한다.

211 10 xxx 1

22

3

57

x

xx

17945.2)5.3(5.1101 x 86051.2)17945.2(3

5.3572

x

94053.1)86051.2(17945.2101 x

04955.3)94053.1(3

86051.2572

x

Page 23: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

12.2 비선형 시스템 (3/6)

Newton-Raphson법접선이 x축과 만나는 교점으로 근을 추정하기 위해 도함수(기울기)를 계산하였음

1차 Taylor 급수 전개로도 유도가 가능

두 변수에 대한 Taylor 급수 전개는 다음과 같다.

여기서 xi = 근의 초기 가정 값

xi+1 = 접선이 x축과 만나는 교점

)()()()( 11 iiiii xfxxxfxf

)(

)(1

i

iii

xf

xfxx

2

,1

,21,2

1

,1

,11,1,11,1 )()(x

fxx

x

fxxff

i

ii

i

iiii

2

,2

,21,2

1

,2

,11,1,21,2 )()(x

fxx

x

fxxff

i

ii

i

iiii

Page 24: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

12.2 비선형 시스템 (4/6)

근의 추정 값에 대해 f1,i+1 = f2,i+1 = 0라고 놓으면

Cramer 공식을 사용하면

두 식에서 나타나는 분모를 시스템의 Jacobian행렬식이라고 한다.

2

,1

,2

1

,1

,1,11,2

2

,1

1,1

1

,1

x

fx

x

fxfx

x

fx

x

f i

i

i

iii

i

i

i

2

,2

,2

1

,2

,1,21,2

2

,2

1,1

1

,2

x

fx

x

fxfx

x

fx

x

f i

i

i

iii

i

i

i

1

,2

2

,1

2

,2

1

,1

2

,1

,2

2

,2

,1

,11,1

x

f

x

f

x

f

x

f

x

ff

x

ff

xxiiii

i

i

i

i

ii

1

,2

2

,1

2

,2

1

,1

1

,2

,1

1

,1

,2

,21,2

x

f

x

f

x

f

x

f

x

ff

x

ff

xxiiii

i

i

i

i

ii

하첨자 i가 붙은 모든 값(가정이나 추정)들은 알려져

있기 때문에 미지수는 x1,i+1과 x2,i+1이다. 선형방정식

Page 25: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

예제 12.3 (비선형 방정식에 대한 Newton-Raphson법) (1/3)

Q. 여러 방정식에 대한 Newton-Raphson법을 이용하여

다음 식의 근을 구하라.

처음 계산은 해를 x1 = 1.5와 x2 = 3.5라고 가정하고 시작한다.

573

10

2

212

21

2

1

xxx

xxx

Page 26: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

예제 12.3 (비선형 방정식에 대한 Newton-Raphson법) (2/3)

풀이)

초기 값 x1 = 1.5와 x2 = 3.5에서의 편도함수를 계산한다.

첫 번째 반복을 위해 Jacobian 행렬식을 구한다.

5.32)5.3)(5.1(6161 75.36)5.3(33

5.1 5.65.3)5.1(22

21

2

0,222

2

1

0,2

1

2

0,1

21

1

0,1

xxx

fx

x

f

xx

fxx

x

f

125.156)75.36(5.1)5.32(5.6

Page 27: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

예제 12.3 (비선형 방정식에 대한 Newton-Raphson법) (3/3)

초기 가정 값에서의 함수 값을 계산하면 다음과 같다.

첫 번째 반복을 통해 계산한 수치 해는 다음과 같다.

이러한 과정을 만족할 만한 수치 해를 얻을 때까지 반복한다.

5.210)5.3(5.1)5.1( 2

0,1 f

625.157)5.3)(5.1(35.3 2

0,2 f

03603.2125.156

)5.1(625.1)5.32(5.25.11

x

84388.2125.156

)75.36)(5.2()5.6(625.15.32

x

Page 28: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

12.2 비선형 시스템 (5/6)

두 방정식에 대한 Newton-Raphson법은 n개의

연립방정식에 대해서도 일반화가 가능하다.

k번째 방정식에 대한 Taylor 급수 전개는 다음과 같다.

행렬 표기법을 사용하여 간단히 나타내면

n

ik

in

ik

i

ik

iikin

n

ik

i

ik

i

ik

x

fx

x

fx

x

fxfx

x

fx

x

fx

x

f

,

,

2

,

,2

1

,

,1,1,

,

1,2

2

,

1,1

1

,

}]{[}{}]{[ 1 ii xZfxZ

Page 29: 12장연립방정식을 풀기위한반복법bml.pusan.ac.kr/resources/2015_Numerical_Analysis/... · b a x x j j j 22 1 2 21 1 23 3 2 a b a x x j j j 33 3 31 1 32 2 3 a ... function

Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법

12.2 비선형 시스템 (6/6)

여기서 [Z] = 위치 i에서 계산된 편도함수로 구성된

Jacobian 행렬

초기 값

최종 값

위치 i에서 계산된 함수 값

n

ininin

n

iii

n

iii

x

f

x

f

x

f

x

f

x

f

x

f

x

f

x

f

x

f

Z

,

2

,

1

,

,2

2

,2

1

,2

,1

2

,1

1

,1

][

inii

T

i xxxx ,,2,1}{

1,1,21,11}{ inii

T

i xxxx

inii

T ffff ,,2,1}{