본문 바로가기

분류 전체보기691

미분방정식에 대한 수치해석학적 해(Runge-Kutta) - 원리 이 방법은 원리는 조금 어려운데 알고리즘의 구현은 어렵지 않다. 따라서 원리보다는 알고리즘이 문제가 된다면 우선 알고리즘만 보면 된다. 또한, C++의 가상함수를 사용하여 조금 일반화시켰다. 만약 수천수만번 미방을 풀어야 한다면 이렇게 일반화된 방법은 좀 많이 느리므로 직접 코드를 구현해 사용할 것을 추천한다. 글이 너무 길어서 두 부분으로 나눈다. 구현 부분은 따로 뺀다. 풀어야 할 문제는 주어진 함수의 미분된 식을 알고 있을 때, 미분되지 않은 식을 찾아 내는 것이다. 즉, dy/dt = f(t, y(t)) 로 y의 t 에 대한 미분식이 주어져 있을 때 y(t) 를 찾아 내는 것이 목표이다. 예를 들면 이렇다. y' = t - 1 일 때, y는 무엇일까? 이것은 매우 간단하다. 양변을 t 로 적분하고.. 2010. 5. 23.
인과율 - 과학의 본질 2005-07-10 19:28 과학적 설명의 본질은 무엇일까? '과학적'이라는 것은 무엇일까? 인간은 세계를 인식할 때, 원인과 결과로 현상을 분석할 수밖에 없다. 인과율은 세계를 지배한다.아마도 matrix 2편에서 나왔던 대사인 듯 하다. 사람은, '변화'를 인식하는 순간, 항상 그 '변화'를 일으킨 '힘'이 있을 것으로 생각한다. 즉, 모든 '변화'에는 그 변화를 일으킨 '원인'이 있다는 생각을 하는, 인과율로 인간은 외부 세계를 인식한다. 과학은, 그 인과율의 정밀한 고리를 연결하는 작업이다. 관찰된 현상(결과)에 대한 원인을 찾는 작업이 과학이다. 이 때, 하나의 원인과 결과의 쌍은 아주 근본적이어야 한다. 이러한 인과율에 대한 물음의 핵심이 "왜?"와 "어떻게?" 이다. 따라서, 과학을 하려면.. 2010. 5. 22.
for 문의 동작 순서 다음과 같은 곳에서 에러가 났다. 환경 : Visual C++ 9.0 (VS2008) on Windows XP SP2 수행하다 문제가 생긴 곳을 알려 주는 노란색 화살표가 가리키는 곳을 보면 range 를 검사하다 문제가 생긴 것 같다. 위 코드는 vector 파일이고, 보아 하니 operator-- 를 호출하는 과정에 에러가 난 것으로 보인다. 왜 그런지 다시 call stack 을 따라서 내가 작성해 놓은 코드로 가보면, 위와 같다. 403 번째 줄을 실행중이라는 것을 알 수 있는데, 그 줄에서 vector의 iterator 형 변수인 [pos_x]와 [pos_y]가 operator-- 를 호출하는 것을 볼 수 있고 이것은 위에서 살펴 본 코드 (vector 파일) 와 이야기가 맞아 떨어진다. ran.. 2010. 5. 19.
DC를 제대로 해제하지 않아서 생기는 문제 다음과 같은 에러가 났다. 환경 : Visual C++ 9.0 (VS2008) on Windows XP SP2 디버깅 모드로 실행시키고 있는 중이었기 때문에 위에서 다시 시도(R) 버튼을 눌러서 디버깅을 시작한다. 그러면 다음과 같이 breakpoint 를 trigger 했다는 메세지가 나오는데, 여기서 Break 를 누른다. 그러면 실제로 에러가 난 코드에서 멈추게 된다. 실제로 에러가 난 줄까지 어떤 호출경로를 통해서 들어갔는지 살펴 보기 위하여 Call Stack 을 살펴 본다. 지금의 경우는 다음과 같다. 보면은, IICGPerfusion2::save_map_information(~) --> CImage::~CImage() --> CImage::Destroy() --> CImage::Detach(.. 2010. 5. 19.