본문 바로가기

컴퓨터219

미분방정식에 대한 수치해석학적 해(Runge-Kutta) - 원리 이 방법은 원리는 조금 어려운데 알고리즘의 구현은 어렵지 않다. 따라서 원리보다는 알고리즘이 문제가 된다면 우선 알고리즘만 보면 된다. 또한, C++의 가상함수를 사용하여 조금 일반화시켰다. 만약 수천수만번 미방을 풀어야 한다면 이렇게 일반화된 방법은 좀 많이 느리므로 직접 코드를 구현해 사용할 것을 추천한다. 글이 너무 길어서 두 부분으로 나눈다. 구현 부분은 따로 뺀다. 풀어야 할 문제는 주어진 함수의 미분된 식을 알고 있을 때, 미분되지 않은 식을 찾아 내는 것이다. 즉, dy/dt = f(t, y(t)) 로 y의 t 에 대한 미분식이 주어져 있을 때 y(t) 를 찾아 내는 것이 목표이다. 예를 들면 이렇다. y' = t - 1 일 때, y는 무엇일까? 이것은 매우 간단하다. 양변을 t 로 적분하고.. 2010. 5. 23.
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.
리눅스의 find 명령 find는 기본적으로 파일을 찾는 기능을 한다. find의 형식은 다음과 같다. find [시작경로] [option] 많이 사용하는 옵션은 file 이름에 match되는 정규표현식을 지정해 주는 -name 이 있겠다. 이것을 사용하여 현재 경로와 현재 경로의 모든 하위 경로에서 test로 시작하고 txt 로 끝나는 모든 파일을 출력하고자 한다면 다음과 같이 하면 되겠다. find . -name 'test*.txt' 만약 딱 현재 경로에서만 하고, 하위 경로로는 들어가고 싶지 않으면 검색의 깊이를 지정하는 maxdepth option을 사용하면 된다. 즉, find의 option 으로 준 경로가 depth 1 이다. 다음과 같다. find . -maxdepth 1 -name 'test*.txt' 만약 파일.. 2010. 5. 18.