9. 소규모의방정식을풀기 9. 순수 Guss 소거법 9. 피봇팅 9.4 삼중대각시스템
어떤원리에의해다음과같은 MATLAB 명령어가수행되는가? >> =A\ >> =iva)*
9. 소규모의방정식을풀기 /6) 컴퓨터를필요로하지않고소규모연립방정식 ) 에적합한방법 - 도식적방법, Crmer 공식, 미지수소거법 도식적인방법 8 9 두연립선형대수방정식의도식적인해 교점이해를나타냄 )
9. 소규모의방정식을풀기 /6) 특이 평행선 해가없음 두선이일치함 해가무한히많음 불량조건 특이에가까워반올림오차에매우민감함 특이시스템과불량조건시스템의도식적표현 ) 해가없음, ) 해가무한히많음, c) 해를식별하기어려움.
9. 소규모의방정식을풀기 /6) 행렬식과 Crmer 공식 세개의방정식에대한행렬식을고려하자. [ A]{ } { } 여기서 [ A] 이시스템의행렬식은계수행렬로부터구성되는데다음과같다. D mior ) ) )
예제 9. Q. 다음시스템에대하여행렬식을구하라. 풀이 ) 8. 5. 8 ) ) D 0 ) D 0 ) ) D 04 0. 5. ) 5. D 4 4 불량조건특이조건특이조건
9. 소규모의방정식을풀기 4/6) 특이시스템 행렬식 = 0 불량조건시스템 행렬식이 0 에가까움 Crmer 공식 D
예제 9. /) Q. Crmer 공식으로다음의연립방정식을풀어라. 0. 0.5 0. 0.5 0..9 0.5 0.0 0.67 0.44 풀이 ).9 0.5.9 0.5 D 0. 0.5 0.00 0. 0.5 0. 0.5 0. 0.
예제 9. /) 풀이 ) 0.0 0.5 0.67.9 0.44 0. 0.00 0.5 0.078 0. 0.5 0. 0.0 0.67.9 0.44 0.00 0.5 0.00 0.0649 0.00 4.9 9.5 0. 0.5 0. 0.5 0.0 0.67 0. 0.00 0.44 0.0456 0.00 9.8 Crmer 공식은 > 이면비현실적이다.
9. 소규모의방정식을풀기 5/6) 미지수소거법 두개의방정식으로구성된경우를고려해보자. 상수를곱하면 뺄셈으로 을소거하면 따라서 이결과를대입하면
9. 소규모의방정식을풀기 6/6) 미지수소거법은 Crmer 공식을그대로따른것이다. 이기법은컴퓨터를이용하도록공식화되어있어 프로그램작성이용이하다.
9. 순수 Guss 소거법 /4) Guss 소거법의두단계 : 전진소거와후진대입 하나의방정식에 오직하나의미지수만나타나도록방정식을조작한다. 그미지수를풀고, 후진대입을통해나머지미지수도결정한다.
9. 순수 Guss 소거법 /4) 알고리즘을개발하면대규모의방정식으로 확장이가능하다. Guss 소거법은가장기본적인알고리즘이다. " 순수 " Guss 소거법은 0 으로나누는경우를 극복하지못한방법이다.
9. 순수 Guss 소거법 /4) 개의미지수를가진방정식을다루어보자. 피봇원소 첫번째방정식의미지수의계수 ) 첫번째미지수에대한 ) 피봇방정식
9. 순수 Guss 소거법 4/4) 단계 : 미지수의전진소거 방정식을상삼각시스템으로바꿈 ) 두번째에서 번째방정식까지미지수 을소거한다. 첫번째식에 / 을곱하면 두번째식에서빼면 또는 ' ' '
9. 순수 Guss 소거법 5/4) 나머지방정식에서도대해반복하면두번째피봇방정식을이용하여미지수 를소거하면 ' ' ' ' ' ' ' ' ' ' ' ' " " " " " " ' ' ' '
9. 순수 Guss 소거법 6/4) 나머지피봇방정식을이용하여계속적으로소거를수행하면상삼각행렬시스템을구성할수있다. ) ) " " " ' ' ' '
9. 순수 Guss 소거법 7/4) 단계 : 후진대입 ) ) i i) i ji i) ii i) ij j i = -, -,,)
예제 9. /) Q. Guss 소거법을이용하여방정식을풀어라. 정해는 =, = -.5, 그리고 = 7) 0. 0. 0. 7 0. 풀이 ) 전진소거를수행하면 0. 7.00 0.90000 0. 0. 0 0. 0.9 0.000 7.85 9. 7.4 7.85 9.567 70.650 0. 7.00 0. 0.9 0.00 7.85 9.567 70.084
예제 9. /) 풀이 ) 후진대입하여해를구하면 70.084 0.00 결과를확인하면 7.0000 9.567 0.97.0000) 7.00 7.85 0..50000) 0.7.0000) 결과를확인하면.50000.00000 ) 0..5) 0.7.0000) 7.84999 7.85 0.) 7.5) 0.7.0000) 9.0000 9. 0.) 0..5) 07.0000) 7.400 7.4
9. 순수 Guss 소거법 8/4) [ 순수 Guss 소거법을수행하는 M- 파일 ] fuctio = GussNiveA,) % GussNive A,): % Guss elimitio without pivotig % iput: % A = coefficiet mtri % = right hd side vector % output: % = solutio vector [m,] = sizea); if m ~=, error'mtri A must e squre'); ed = +; Aug =[A ];
9. 순수 Guss 소거법 8/4) [ 순수 Guss 소거법을수행하는 M- 파일 ] % forwrd elimitio for k = :- for i = k+: fctor = Augi,k)/Augk,k); Augi,k:) = Augi,k:)-fctor*Augk,k:); ed ed % ck sustitutio = zeros,); ) = Aug,)/Aug,); for i = -:-: i) = Augi,)-Augi,i+:)*i+:))/Augi,i); ed
9. 순수 Guss 소거법 9/4) 연산횟수수행시간 ~ 부동소수점연산 flops) 의횟수몇개의항들을정의하면 m i m i i f c i cf ) ) m i m i m i i g i f i g i f ) ) ) ) m m i k m m k i ) ) O m m m m m i m i ) 6 ) ) O m m m m m m i m i 여기서 Om ) = 크기가 m 차수와그보다낮은차수의항
9. 순수 Guss 소거법 0/4) 순수 Guss 소거법의 M- 파일에대하여 외부루프가 k = 에서시작하므로, 내부루프의한계는 i = 에서부터 까지다. 따라서내부루프의반복횟수는 i ) 번반복하는내부루프에대해서 - 나눗셈한번 - 각각의열요소에대해 에서 까지곱셈 + 까지 번의곱셈 ) - 마찬가지로 번뺄셈 - 합하면 + 번곱셈 / 나눗셈과 번뺄셈 - 외부루프를한번지나는것에대해전체적으로 ) + ) 번곱셈 / 나눗셈과 )) 번뺄셈
9. 순수 Guss 소거법 /4) 요약하면 외부루프 k 내부루프 i 덧셈 / 뺄셈연산횟수 곱셈 / 나눗셈연산횟수, )) ) + ), ) ) )) k k +, k) + k) k) + k -), )) ))
9. 순수 Guss 소거법 /4) 따라서소거를위한전체덧셈 / 뺄셈연산횟수는또는결과적으로다음과같다. 유사한해석을곱셈 / 나눗셈에대해서수행하면 ] ) ) [ ) ) k k k k k k ) ) k k k k k ) ) )] [ )] [ O O O O ) ) )] [ )] [ O O O O
9. 순수 Guss 소거법 /4) 최종적으로 O ) O ) 이하의항들은 이증가할수록무시됨을유의하라.. 후진대입에대하여 덧셈 / 뺄셈연산횟수 = )/ 곱셈 / 나눗셈연산횟수 = + )/ 따라서합은 O )
9. 순수 Guss 소거법 4/4) 순수 Guss 소거법에소요되는전체연산횟수는다음과같다. O ) Forwrd elimitio O ) Bck sustitutio s icreses 시스템이커질수록연산시간이크게증가한다. 대부분의연산은소거단계에서발생한다. O ) 전진소거후진대입전체연산횟수 / 소거의비율 % 0 00 000 705 67550 6.67 0 8 00 0000 0 6 805 68550 6.68 0 8 667 666667 6.67 0 8 87.58% 98.5% 99.85%
9. 피봇팅 /) 4 6 7 6 8 5 순수 Guss 소거법의정규화에서 0 으로나누는나눗셈발생! 피봇원소가 0 에가까우면어떤일이일어나는가? 피봇원소의크기가다른원소에비해작으면반올림오차가개입! 처방 각각의행을정규화하기전에해당열에서계수가가장큰것을찾는다. 가장큰원소가피봇원소가되도록순서를바꾼다 부분피봇팅 열과행에서가장큰원소를찾아순서를바꾼다 완전피봇팅 드물게사용됨
예제 9.4 부분피봇팅 ) /) Q. Guss 소거법을이용하여다음의방정식을풀어라. 0.000.0000.0000.0000.000.0000 첫번째피봇원소는 = 0.000 이며, 0 에매우가깝다. 그래서방정식의순서를바꾸는부분피봇팅을취한다. 정해는 = / 과 = / 이다.
예제 9.4 부분피봇팅 ) /) 풀이 ) 첫번째식에 /0.000) 을곱하면 0,000 6667 두번째식에서이식을빼면결과는 9999 6666 = / 따라서.000 / ) 0.000 유효숫자수 의백분율상대오차의절대값 4 5 6 7 0.667 0.6667 0.66667 0.666667 0.6666667 -. 0.0000 0.0000 0.0000 0.0000 099 00 0 0.
예제 9.4 부분피봇팅 ) /) 거의같은두수사이의뺄셈으로인해결과가유효숫자수에매우민감하다. 순서를바꾸어서방정식을풀면 = 부분피봇팅 ).0000 0.000.0000.0000.0000.000 = / 그리고 / ) 유효숫자수 의백분율상대오차의절대값 4 5 6 7 0.667 0.6667 0.66667 0.666667 0.6666667 0. 0. 0. 0. 0. 0. 0.0 0.00 0.000 0.0000
9. 피봇팅 /) [ 부분피봇팅이포함된 Guss 소거법을위한 M- 파일 ] fuctio = GussPivotA,) % GussPivot A,): % Guss elimitio with prtil pivotig % iput: % A = coefficiet mtri % = right hd side vector % output: % = solutio vector [m,] = sizea); if m ~=, error'mtri A must e squre'); ed = +; Aug =[A ];
9. 피봇팅 /) [ 부분피봇팅이포함된 Guss 소거법을위한 M- 파일 ] % forwrd elimitio for k = :- % prtil pivotig [ig, i] = msaugk:,k))); ipr = i + k -; if ipr ~= k % pivot the row Aug[k,ipr],:) = Aug[ipr,k],:); ed
9. 피봇팅 /) [ 부분피봇팅이포함된 Guss 소거법을위한 M- 파일 ] for i = k+: fctor = Augi,k)/Augk,k); Augi,k:) = Augi,k:)-fctor*Augk,k:); ed ed % ck sustitutio = zeros,); ) = Aug,)/Aug,); for i = -:-: i) = Augi,)-Augi,i+:)*i+:))/Augi,i); ed
9. 피봇팅 /) >> y = [; ; 5; ; 4]; >> [ym, im] =my) ym = 5 im = >> A=[0.000 ; ]; =[.000; ]; >> = GussPivotA,) = 0. 0.6667
9.4 삼중대각시스템 /) 띠의폭이 인삼중대각시스템을고려하자. r r r r r f e g f e g f e g f e g f
예제 9.5 삼중대각시스템의해 ) /) Q. 다음의삼중대각시스템의해를구하라. 40.8 0.8 0.8 40.8.04.04.04.04 4
예제 9.5 삼중대각시스템의해 ) /) 풀이 ) 전진소거를통해.04.550.95. 4 40.8 0.8 4. 50.996 후진대입으로 해를구하면 4 r f r r r 4 4 g f g f g f 50.996. 4 8.545 4. )8.545.95 0.800 )7.8.550 40.800 )7.8.040 7.8 7.8 8.545
9.4 삼중대각시스템 /) [ 상삼각시스템을풀기위한 M- 파일 ] fuctio = Tridige, f, g, r) % Tridige, f, g, r): % Tridigol system solver % iput: % e = sudigol vector % f = digol vector % g = superdigol vector % r = right hd side vector % output % = solutio vector
9.4 삼중대각시스템 /) [ 상삼각시스템을풀기위한 M- 파일 ] = legthf); % forwrd elimitio for k = : fctor = ek)/fk-); fk) = fk) - fctor*gk-); rk) = rk) - fctor*rk-); ed % ck sustitutio dispf); dispr) % check modified coefficiets ) = r)/f); for k = -:-: k) = rk)-gk)*k+))/fk); ed
9.4 삼중대각시스템 /) >> e=[0; -; -; -]; >> f=[.04;.04;.04;.04]; >> g=[-; -; -; 0]; >> r=[40.8; 0.8; 0.8; 40.8]; >> = Tridige, f, g, r).0400.5498.948.0 40.8000 0.8000 4. 50.996 = 8.5449 7.87 7.87 8.5449 대부분의상삼각시스템에서는피봇팅이필요하지않으나드물게요구되는경우도있다. 상삼각시스템에소요되는계산노력 ~ 참고로 Guss 소거법 ~ )