Upload
lekhue
View
223
Download
0
Embed Size (px)
Citation preview
12장 연립 방정식을풀기 위한 반복법
12.1 선형 시스템: Gauss-Seidel
12.2 비선형 시스템
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 = 이전 반복 단계
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
,
Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법
12.1 선형 시스템: Gauss-Seidel (3/10)
반복법의 원리 (a) Gauss-Seidel법과 (b) Jacobi법
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
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
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
Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법
12.1 선형 시스템: Gauss-Seidel (4/10)
수렴과 대각지배
Gauss-Seidel법은 단일방정식의 근을 구하는
고정점 반복법과 일맥상통한다.
수렴조건
대각지배 시스템
n
ijj
ijii aa1
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
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
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
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')
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
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)
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
Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법
12.1 선형 시스템: Gauss-Seidel (9/10)
이완법
수렴 속도를 개선하기 위함
새로운 값을 계산한 후, 그 값을 현재와 직전에
계산된 결과의 가중평균으로 놓음
oldnewnew )1( iii xxx
Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법
12.1 선형 시스템: Gauss-Seidel (10/10)
가중인자 : 0 2
- = 1 수정되지 않음 = Gauss-Seidel법
- 0 1 하이완법
수렴하지 않는 시스템을 수렴하도록 만들거나, 진동을 감쇠시켜 수렴
을 빠르게 함
- 1 2 상이완법
현재 계산된 값에 큰 비중을 둠
새로운 값을 정해로 더 가까이 가도록 함
수렴하는 시스템의 수렴속도를 증가시키기 위함
연속상이완법(successive overrelaxation, SOR)이라고도 함
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
Applied Numerical Methods 12장 연립 방정식을 풀기 위한 반복법
12.2 비선형 시스템 (2/6)
연속대입법
고정점 반복법과 Gauss-Seidel법과 같은 전략을 사용함
수렴의 여부는 방정식을 어떻게 수식화하는가에 달려있음
초기 가정값이 정해에 충분히 가깝지 않으면 발산할 수 있음
비선형 방정식의 해를 구하는데 한계가 있음
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
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
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
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
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이다. 선형방정식
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
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
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
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
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}{