Gauss elimination의 수치 해석적 기법들.
아가씨가 시험 기간이 되니 이런 질문이 들어오는군요 허허 -ㅁ- 신경쓰지 말고 넘기세요-
일단 Gauss elimination 자체는 잘 알고 있다고 가정하자. 근데 여기에 수치 해석적으로 여러 가지 변형들이 존재하거든? 질문한 건 특히 pivoting에 관한 이야기니까, 거기에만 초점을 맞춰서 설명할게.

1) 기본 형태: pivoting은 행렬의 (k, k) 원소가 0일 때만 실행한다.


손으로 계산할 때는 그냥 이대로 계산해도 되는데, 컴퓨터를 이용하는 경우에 문제가 생겨. 어떤 행렬들에서는 반올림 오차(round-off error)가 발생하면 오차가 상당히 커지게 되지. 그래서 그걸 막기 위해 도입한 녀석이 다음 녀석이야.

2) Partial pivoting: pivoting은 pivot element의 절댓값이 같은 열에 있는 원소들의 절댓값 중 최댓값이 되도록 실행한다.

예를 들어 다음 행렬을 보자.


첫번째 열에서 pivoting을 하려고 보니까, 기본 형태의 Gauss elimination이라면 더 이상 pivoting을 할 필요가 없지? 0인 원소가 없으니까. 하지만 partial pivoting에서는 pivoting을 해줘야 해. 지금 pivot element인 (1, 1) 원소의 절댓값은 2.11인데 그보다 절댓값이 큰 -4.01이 있잖아. 그래서 두번째 행과 첫번째 행을 교환해줘서, 다음과 같이 pivoting을 하는 거지.



그런데 이 방법에도 어떤 경우에는 치명적인 오차가 발생하거든. 그래서 오차를 더 줄일 수 있는 방법을 찾아냈지.

3) Scaled partial pivoting
① 각 행에서 절댓값이 가장 큰 원소 si를 찾는다. (덧붙인 부분은 제외하고)
② pivot element가 위치한 열 k의 원소들 aik를 각각 si로 나누어준다.
③ 이 값의 절대값이 가장 큰 원소가 pivot element가 되도록 행을 교환한다.

뭔 소리지... 자 앞의 예제를 보자.


여기서 첫번째 행을 pivoting해보자. 이 알고리즘에 따르면, 우선 각 행에서 절댓값이 가장 큰 원소를 찾아야겠네. 첫번째 행에서 절댓값이 가장 큰 원소는 s1 = -4.21이고, 두번째 행 s2 = 10.2, 세번째 행 s3 = 1.09가 되네. (세번째 행의 s3가 4.21이 아님에 주의! 이 부분은 덧붙인 부분이라서 카운트에 안 들어가.)

다음으로 우리가 지금 보고 있는 열이 첫번째 열이니까, a11, a21, a31을 각각 s1, s2, s3로 나누어주자.

a11 / s1 = 2.11 / (-4.21) = -0.501
a21 / s2 = 4.01 / 10.2 = 0.393
a31 / s3 = 1.09 / 1.09 = 1.000

이 중에서 절댓값이 가장 큰 놈은? 그래, a31 / s3이지? 그럼 이 녀석이 첫번째 열의 pivot element가 되게 행 교환을 해주면 되는 거야. 그래서 다음과 같이 된다는 말씀.


자, 기본 이론 설명은 여기까지... 뭔 소린지 모르겠으면 질문을 하시압 :)
by 로보스 | 2009/10/22 20:58 | |과학| | 트랙백 | 덧글(2)
트랙백 주소 : http://lovos.egloos.com/tb/2455424
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by hyde at 2018/04/09 23:32
피보팅할때는 덧붙인 부분만 빼고

절댓값
abs(가장작은계수/가장큰계수) 입니다. 그래서 3번째행은
0.921/4/21 이라 이것만 젤 위로 보내면 풀립니다.
Commented by 로보스 at 2018/04/13 07:25
hyde님// 무슨 말씀인지 잘 모르겠습니다.

:         :

:

비공개 덧글

◀ 이전 페이지 다음 페이지 ▶



즐겁게 살아야죠. :)
by 로보스
Calendar
메모장
카테고리
|소개|
|일기|
|감상|
|과학|
|과학사|
|잡념|
|작업|
* 홈페이지 ('02-'03)
* 네이버 블로그 ('05-'06)
최근 등록된 덧글
4주 뒤에 입대 저도 뭐..
by ㅋㅋ at 02/05
앗삼님// 간단히 정리하자..
by 로보스 at 01/30
개성있는 젠투펭귄님// ..
by 로보스 at 01/30
좋은글 감사합니다. ..
by 앗삼 at 12/23
안녕하세요! 겨울방학맞..
by 개성있는 젠투펭귄 at 12/18
조영래님// 방문 감사 드..
by 로보스 at 09/01
좋은 글 정말 감사합니다.
by 조영래 at 08/27
나그네님// 방문 감사 드..
by 로보스 at 06/20
hongbok님// 아마 제가..
by 로보스 at 06/20
좋은글 잘 보고 갑니다 그..
by 나그네 at 05/16
신기하네요. 음, 사실 ..
by hongbok at 04/27
hyde님// 무슨 말씀인지 ..
by 로보스 at 04/13
피보팅할때는 덧붙인 부..
by hyde at 04/09
krnchica님// 구글 번..
by 로보스 at 03/24
독일어도 잘 하시나 봐요!
by krnchica at 03/21
비밀글님// 두 번째 문단..
by 로보스 at 02/09
Barde님// 방문 감사 드..
by 로보스 at 02/09
ㄹㄹ님// 쉽게 설명하느라..
by 로보스 at 02/09
이명래님// 글과 질문, ..
by 로보스 at 02/09
최종하 교수님// 안녕하..
by 로보스 at 02/09
최근 등록된 트랙백
공정혼합물의 융해/빙결
by Adagio ma non tanto
동양학 최고수 남회근! ..
by 도서출판 부키
(연재할 수 있을지 모..
by THIS STORY ver 3.0 ..
그립다는 느낌은 축복이다..
by 도서출판 예문당 - 함께..
[책] 젊은 베르테르의..
by 월풍도원(月風道院) -..
이글루 파인더

rss

skin by zodiac47