파이썬을 활용한 수치해석 > 대학 교재

본문 바로가기
배경
검색창 열기
수학

파이썬을 활용한 수치해석

본문

책소개

컴퓨터에게 수학을 가르치는 설계도


계산과학의 시대, 수치해석이 필요한 이유

현대 과학기술은 이론과 실험을 넘어 계산과학(Computational Science)의 시대로 접어들었다. 유체역

학, 양자역학, 구조해석 등 현실 세계의 복잡한 물리 현상을 지배하는 미분방정식의 대부분은 해석적

해가 존재하지 않으며, 우리는 결국 컴퓨터에 의존할 수밖에 없다. 그러나 컴퓨터는 미적분도, 물리 법

칙도 이해하지 못한다. 더하기와 빼기만 수행하는 기계일 뿐이다. 수치해석은 자연 현상을 컴퓨터가

계산할 수 있는 언어—행렬, 벡터, 사칙연산—로 번역해 주는 통역사이자, 신뢰할 수 있는 시뮬레이션

을 위한 설계도다. 이 책은 단순한 코딩 매뉴얼이 아니다. 코딩이라는 도구를 통해, 무너지지 않는 공

학적 계산을 설계하는 원리를 전달하는 데 목적이 있다.


블랙박스를 넘어서, 이해 가능한 계산으로

기존의 수치해석 도서가 수학적 증명에 치우치거나, 반대로 이론 없이 라이브러리 사용법만 나열해

왔다면, 이 책은 이론과 실무 사이의 균형을 제시한다. 왜 시뮬레이션이 수렴하지 않는지, 어떤 알고

리즘이 문제에 적합한지, 왜 메쉬 왜곡이 치명적인 오류로 이어지는지, 이 책은 이러한 질문에 이론적

근거를 제공한다. 또한 부동소수점 오차와 절단 오차의 본질을 다루며, 계산 결과의 신뢰성과 효율을

판단하는 기준을 제시한다.


설계도 있는 시뮬레이션을 위하여

이 책은 파이썬을 기반으로 하며, 핵심 알고리즘을 독자가 직접 구현하고 검증할 수 있도록 구성

했다. 모든 프로그램과 예제 코드는 공개 저장소를 통해 즉시 실행 가능하다.(https://github.com/

inholeegithub/Numerical_Analysis_Basics/blob/main/numerical_analysis_20260112.ipynb) 코딩

은 도구이고, 수치해석은 설계도다. 설계도 없는 시뮬레이션은 결국 사상누각에 불과하다. 30년 연구

경험과 최신 프로그래밍 환경을 바탕으로 집필한 『파이썬을 활용한 수치해석』은 복잡한 자연 현상을

컴퓨터라는 캔버스 위에 정확하게 그려내기 위한 명확한 지도를 제공할 것이다.

목차

1 계산과 수학

1.1 수치해석 개요

1.2 수치해석의 역사 

1.3 대수학의 기본 정리(fundamental theorem of algebra)

1.4 뉴턴-랩슨(Newton-Raphson) 방법 

1.5 브렌트 방법(Brent’s method) 

1.6 호너 방법(Horner’s method) 

1.7 베어스토우 방법(Bairstow’s method)

1.8 듀란-커너 방법(Durand-Kerner method)

1.9 라게르 방법(Laguerre’s method) 


2 유한 차분 

2.1 보간법

2.2 리처드슨 외삽법(Richardson extrapolation)

2.3 수치미분(numerical differentiation) 

2.4 균일 격자 저차 유한 차분 스텐실 계수

2.5 고차 정밀도 유한 차분 경계 공식(high-order finite difference boundary formulas) 

2.6 메르슈텔렌(Mehrstellen) 방법

2.7 포른베리(Fornberg) 방법 

2.8 수렴 차수

2.9 컴퓨터 자원이 많이 필요한 계산들 


3 고속 푸리에(Fourier) 변환 

3.1 연속 푸리에 변환

3.2 이산 푸리에 변환

3.3 고속 푸리에 변환

3.4 사인 변환

3.5 컨볼루션 정리(convolution theorem)의 활용

3.6 단시간 푸리에 변환(short-time Fourier transform)

3.7 웨이브렛 변환(wavelet transform)

3.8 RSA 알고리즘

3.9 타원 곡선 암호(elliptic curve cryptography) 


4 행렬 연산 

4.1 선형 조건

4.2 다양한 응용 분야

4.3 선형 회귀 

4.4 유니터리 변환(unitary transformation)

4.5 그람-슈미트 절차(Gram-Schmidt procedure)

4.6 가우스 소거법(Gauss elimination method)

4.7 LU 분해 

4.8 LU 분해의 조건

4.9 크라메르의 법칙(Cramer’s rule)

4.10 숄레스키 분해(Cholesky decomposition)

4.11 QR 분해(QR decomposition)

4.12 슈르 분해(Schur decomposition) 

4.13 특이값 분해(singular value decomposition, SVD)

4.14 헤센베르크 형식(Hessenberg theorem)

4.15 고유값 문제 

4.16 레일리 몫 방법(Rayleigh quotient method) 

4.17 역 거듭제곱법(inverse power method, IPM)

4.18 블록 데비드슨 방법(block Davidson method)

4.19 야코비 이완 방법(Jacobi iteration method)

4.20 가우스-자이델 방법(Gauss-Seidel method) 

4.21 연속적 과잉이완 방법(successive over-relaxation method) 

4.22 켤레 경사법(conjugate gradient method) 

4.23 토마스 알고리즘(tridiagonal matrix algorithm) 


5 미분방정식 

5.1 미적분학이 필요한 이유 

5.2 오일러 방법(Euler’s method

5.3 4차 룽게-쿠타 방법(RK4) 

5.4 심플렉틱 인테그레이터(symplectic integrator, SI) 

5.5 불러쉬-슈토어(Bulirsch-Stoer) 알고리즘

5.6 아담스-배쉬포스(Adams-Bashforth) 방법

5.7 예측자-수정자 방법


6 편미분방정식(PDE) 

6.1 분류

6.2 열 방정식(heat equation, 포물형) 

6.3 파동 방정식(wave equation, 쌍곡형) 

6.4 라플라스 방정식(Laplace’s equation, 타원형)

6.5 푸리에 변환을 사용한 편미분방정식 해법 

6.6 푸리에 변환을 이용한 편미분방정식 풀이 예시

6.7 크랭크-니콜슨(Crank-Nicolson) 방법

6.8 유한 차분법(finite difference method, FDM)

6.9 유한 요소법(finite element method, FEM) 

6.10 유한 체적법(finite volume method, FVM) 

6.11 지연 보정(deferred correction) 


7 적분 

7.1 뉴턴-코츠(Newton-Cotes) 공식

7.2 복합 규칙

7.3 적응형 구적법(adaptive quadrature) 

7.4 가우스 구적법(Gaussian quadrature)

7.5 클렌쇼-커티스(Clenshaw-Curtis) 구적법

7.6 롬베르크 적분(Romberg integration)

7.7 오일러-매클로린 합 공식(Euler-Maclaurin summation formula) 

7.8 몬테카를로 적분(Monte Carlo integration) 


8 최적화 

8.1 선형최적화(linear programming) 

8.2 국소탐색 방법(local search methods)

8.3 살리스 통계(Tsallis statistics) 

8.4 유전 알고리즘(genetic algorithms) 

8.5 입자군집 최적화 방법(particle swarm optimization) 

8.6 공분산 행렬-적응-진화전략(CMA-ES) 

8.7 커뮤니티 디텍션(community detection) 

저 자
소 개

지은이 이인호


| 교육 및 경력

1986년 3월∼1990 2월 : 부산대학교 물리학과 (학사)

1990년 3월∼1992 2월 : 한국과학기술원 물리학과 (석사, 응집물질이론)

1992년 3월∼1996 2월 : 한국과학기술원 물리학과 (박사, 응집물질이론)

1996년 3월∼1997 12월 : Beckman Inst., Univ. of Illinois at Urbana-Champaign (박사후)

1998년 1월∼1998 6월 : 포항공대 (연구 과학자)

1998년 7월∼2001 8월 : 고등과학원 (연구 펠로우)

2001년 11월∼2005 2월 : 한국표준과학연구원 (선임 연구원)

2005년 3월∼현재 : 한국표준과학연구원 (책임 연구원)

2009년 1월∼2012년 : 고등과학원 인실리코 단백질과학연구단 (서브그룹 리더)


| 주요 연구 관심 사항

제일원리 분자동역학/전자구조 계산 방법 개발 및 응용 (실리콘 클러스터 구조, 비정질 실리콘 원자/전자구조, 

양자점 전자구조, 실공간 전자구조 병렬 계산 방법 개발, 직접갭 실리콘, 초기능성 결정 구조 탐색, 

위상물질, 초전도, 위상 초전도 물질 탐색, 데이터 기반 결정구조 탐색 방법 개발)

분자동역학이론 개발 및 응용 (작용유도 분자동역학이론 개발, 나노구조체 변형 기작, 단백질

접힘 기작, Onsager-Machlup action 응용)

단백질 3차원 구조 예측

초기능성 물질 설계/탐색 방법 개발 및 응용 [인공지능(최적화, 생성 모델) 기술 적용]

5G 통신, 스텔스 응용 주파수 -선택 필터 설계 [특허등록] [기술 이전]

SCI/E 연구 논문 85편

학술대회 초청강연 138회


| 수상

2005년 슈퍼컴퓨터 경진대회 고성능컴퓨팅 부문 최우수상 수상 (부총리 및 과기부 장관상)

2006년 고등과학원 개원 10주년 기념 자랑스런 동문상

2021년 한국표준과학연구원, 4월, 이달의 KRISS인 상

2021년 한국표준과학연구원, 봉사 대상

2022년 한국표준과학연구원, 올해의 KRISS인 상