강의:전산물리학

전산물리의 목적

2014년 고등과학원 주최로 열린 Pyeong-chang Summer Institute 중 전건상 교수님이 “원자물리학은 원자를 배우고 핵물리학은 핵을 배우지만 전산물리학은 전산이 아니라 물리를 배우는 것”이라고 한 적이 있다. 컴퓨터와 같이 고지식한 친구에게 물리를 가르쳐주다보면 결국 본인이 배우게 된다는 이치이다. Numerical Recipes에 언급된 Hamming의 모토, “계산의 목적은 통찰이지 숫자가 아니다”라는 말도 생각해볼 만하다.

전산으로 계산하는 양

우리가 다루는 양을 길이, 무게, 시간 등의 물리량이라고 해석하지만 결국 컴퓨터 안에서는 무차원의 숫자이다. 따라서 우리가 다루는 방정식은 차원분석을 거쳐 무차원화된 것들이어야 한다.

전산작업의 단계와 일반적 교훈들

이하의 내용은 전건상 교수님의 강의에 바탕한 것이다.

  1. 문제를 이해하고 진술
  2. 필요한 변수들과 그것을 구하는 법을 발견
  3. 그 방법을 컴퓨터가 이해할 수 있게 변환
  1. 전체 구조를 설계한다
  2. 코드를 작성한다
    • 권장사항
      1. 의사코드 작성
      2. 검증된 기존 코드를 사용
      3. 논리를 잘 분리해서 정리
      4. 주석을 작성
    • 피할 것
      1. 복잡한 논리
      2. 교묘한 테크닉
      3. 컴퓨터 하드웨어 사양에 의존하는 언어
    • 코드에 큰 수정을 가하기 전 백업을 남길 것
  3. 테스트와 디버깅
    • 오류의 종류
      1. 문법 오류: 컴파일러 수준에서 발견 가능
      2. 결과 없음: 무한 루프, 메모리 접근 오류 등
      3. 결과가 나오지만 틀렸음: 가장 골치아픈 경우
    • 어떻게 디버깅할 것인가
      1. 탐정처럼 일하라
      2. 전체 논리를 점검
      3. 부분부분 프로그램을 머리로 따라가며 논리를 점검
      4. 매 줄마다 변수의 값들을 출력
    • 어떻게 테스트할 것인가
      1. 알려져 있는 특별한 경우와 비교
      2. 예전 결과를 재현하는지 점검
      3. 물리적으로 말이 되는지 점검
  • 분석을 통해 결과에 물리적 의미를 주게 된다
  • 결과의 중요성은 계산이 얼마나 복잡하느냐가 아니라 물리적 의미에 따라 주어진다
  • 시각화는 결과 이해를 돕는다
  • 시각화는 결과의 중요성을 강조해준다
  • 컴퓨터가 일하는 방식대로 생각해보라
  • 컴퓨터는 매우 빠르게 계산을 수행할 수 있다
  • 컴퓨터는 물리를 모르고 상식도 모른다
  • 컴퓨터가 어떤 일을 잘 하고 어떤 일에 약한지 파악하라
  • 컴퓨터는 잘 부서지지 않으니까 이것저것 시도해보자

참고문헌

  • 강의/전산물리학.txt
  • Last modified: 2017/07/11 16:13
  • (external edit)