[GPG 1 글 2.4] 암묵적 해법과 명시적 해법에 대해 설명좀 부탁드림다

GPG 시리즈 관련 질답, 논의 공간.

Moderator: 류광

tifld78
Posts: 4
Joined: 2002-04-13 09:00

Post by tifld78 »

263페이지 보면여

불안정성을 해소하기 위해 암묵적 해법을 사용한다고 나오는데

도대체 명시적과 암묵적의 의미를 잘 모르겠네요 리플좀 부탁합니다.
류광
Posts: 3805
Joined: 2001-07-25 09:00
Location: GPGstudy
Contact:

Post by 류광 »

2.4 섹션의 본문에 암시적으로-.- 설명되어 있긴 한데요...
엄밀한 수학적 정의를 내리지는 못하겠네요.. 누가 도움을 좀..

참고로 명시적을 '양(postive)적', 암시적(암묵적)을 '음(negative)적', '내재적'이라고 합니다.. 대한 수학회의 경우 양적, 음적이라고 나와 있구요...

2.4에 근거한다면.. 명시적은 이미 알려진 값들에 근거하는 것, 암묵적은 주어진 문제의 내재적인 성질을 이용하는 것.. 뭐 그런게 아닐지.. -.-

Pion
Posts: 34
Joined: 2001-07-26 09:00
Contact:

Post by Pion »

암묵적과 명시적
암묵적은 영어로 implicit, 명시적은 explicit 라고 하지요. 실제 gpg 의 원문에 그렇게 쓰였는진 저도 모르겠습니다만..^^;;

explict 해법은, 쉽게 말하면 식이 하나로 나오는 경우입니다. 보통 유한차분법에서 생각해보면, 시간이 (n+1) 일 때의 각 노드에서의 값을 시간 n 일 때로 계산이 된다면, 즉

z(n+1)_i,j - 2 z(n)_i,j + z(n-1)_i,j = α^2 ( z(n)_i+1,j + z(n)_i-1,j + z(n)_i,j+1 + z(n)_i,j-1 - 4 z(n)_i,j )

where, α = c / (h Δt)

일 경우입니다(261페이지 식입니다). 시간 (n+1)일 때의 z_i,j 만 미지수이고 나머지 값들은 모두 시간 (n)에서 알려져 있습니다. 그러므로 이 식만 풀면 시간 (n+1)에서의 값을 구할 수 있단 말이지요. (말 그대로 명시적입니다)

반면, 263페이지에서 설명하듯 불안정성의 요인이 있으며, 따라서 α^2 <= 1/2 조건이 항상 만족하도록 그리드(노드)를 정해야한다는 단점이 있습니다. 즉 시간 간격이 너무 크면 해가 아예 안 구해지게 됩니다.

implicit의 경우엔 위의 식을 살짝 바꿔서, 시간이 (n+1)에서의 각 노드의 값은 역시 시간이 (n+1)에서의 다른 노드의 값의 지배를 받는다고 생각한 것입니다. 이를 식으로 쓰면

z(n+1)_i,j - 2 z(n)_i,j + z(n-1)_i,j = α^2 ( z(n+1)_i+1,j + z(n+1)_i-1,j + z(n+1)_i,j+1 + z(n+1)_i,j-1 - 4 z(n+1)_i,j )

이 됩니다. 위의 식의 우변에서 z(n)을 모두 z(n+1)로 바꾼 것이지요..

이 경우엔 이 식을 풀게되는 시점, 즉 시간 n에서의 모든 노드값이 알려져있는 경우에서, 시간 (n+1)에서의 값은 모두 미지수가 됩니다. 결국 위 식에서 미지수는 졸지에 5개가 되어버립니다. 해를 바로 풀 수가 없으므로 암묵적이라고 하는 거지요.

그럼 이걸 어떻게 푸느냐? 그건 모든 노드에 대해 식을 다 써 줍니다. 그러면 boundary condition 까지 합치면 미지수의 수와 식의 수가 일치하게 됩니다. 즉 노드가 총 10000개라면 10000개의 식을 한꺼번에 풀어제끼는 겁니다. - -;;

식 10000개를 한꺼번에 풀어제끼려면 말 그대로 허벌나기 때문에, 여러가지 기법들이 도입됩니다. ① x 스위핑(sweeping)과 y 스위핑으로 나눠서 한 식에 미지수가 3개가 만든 후에 (그러면 전체 식은 tri-diagonal matrix로 표현될 수 있습니다) ②전체 행렬의 값을 구하기 위해 역행렬을 구하면 되는데, ③ 이 때 가우스 법 등으로 역행렬을 구해도 되지만, 역시나 허벌나기 때문에 --; ④ tri-diagonal matrix를 U/L 행렬로 바꾼 후에 미지수를 푸는 Tomas 알고리즘이란 놈을 주로 사용합니다. ⑤ 뭐.. 여기에 대해서 너무 알려고 하면 머리 아픕니다 -_-;

implicit의 장점은 말 그대로 불안정성의 요소가 없다는 것이지만, 실제로 implict로 풀어도 시간 간격이 너무 크거나 하면 제대로된 값은 나오지 않는다고 알고 있습니다. 하지만 물리적으로 식이 implicit가 더 신빙성이 있고, 여러가지 기법으로 수렴속도를 빠르게 하는 방법 등이 있기 때문에 공학용 수치해석에서는 꽤 많이 사용되는 방식입니다.

하지만.. 상대적으로 명시적 해에 비해 값이 빨리 빨리 나와주지 않는데다, 전체 노드의 값을 한꺼번에 풀어야하기 때문에 메모리 용량을 많이 차지하게 되므로, 게임 등의 응용에는 그다지 적합하지 않다고 생각합니다.


<font size=-1>[ 이 게시물 는(은) 수정됨 by : Pion 수정 시간: 2002-04-14 14:09 ]</font>
Post Reply