[수치해석] Numerical integration (1) - Mid point rule, Trapezoidal rule
·
수치해석 Numerical Analysis
interpolation, differentiation에 이어서 integration을 수치해석적으로 수행해보겠습니다. 1. Introduction $x_{0}(=a)$부터 $x_{n}(=b)$까지 적분을 하려고 합니다. 우리는 discrete하게밖에 계산할 수 없으므로, $I=\int_{a}^{b}f(x)dx=\sum_{j=0}^{n}f_{j}\cdot \omega_{j}$ 적분을 오른쪽 식처럼 계산해야합니다. 이 때 $\omega_{j}$는 weighting factor라고 부릅니다. 이 전에 Lagrange polynomial을 배웠고, 그 polynomial 식은 $p(x)=\sum_{j=0}^{n}f_{j}L_{j}(x)$입니다. 이 방법을 통해 내가 알고 있는 데이터 점들을 충족하는 함수 식을..
[수치해석] Error characteristics/Modified wave number
·
수치해석 Numerical Analysis
1. Order of accuracy / Leading order of error 지금까지 numerical method를 이용해 interpolation하거나 미분을 할 때 어떻게 구하는지, 또 그렇게 했을 때 error가 어떻게 되는지 알아봤습니다. Order of accuracy, Leading order of error는 수치해석에서 가장 신경쓰는 요소 중 하나입니다. error의 order는 클수록 '대체로' 좋습니다. $\theta (h^{p}) \rightarrow p \log \theta(h)$ p는 곧 $\log E$와 $\log (h)$의 기울기이기 때문에 p가 클수록 에러가 작아지면 더 급격하게 에러가 작아집니다. 만약 numerical method를 이용해 derivative를 구하..
[수치해석] Numerical differentiation (2)
·
수치해석 Numerical Analysis
1. General procedure to obtain first difference derivatives 이전에 한 논의에 이어서, taylor table을 만드는 과정에 대해서 알아보고자 합니다. 일단 한 예시를 보고 그것을 확장할 수 있습니다. ex) $f_{j}^{'}$를 $f_{j},f_{j+1},f_{j+2}$를 이용해 구하고자 합니다. 최종적으로 $f_{j}^{'}+a_{0}f_{j}+a_{1}f_{j+1}+a_{2}f_{j+2}=\theta(h^{p})\text{, where }h=\Delta x=x_{j+1}-x_{j}=x_{j+2}-x_{j+1}$ 의 형태로 나타냄으로써 $f_{j}^{'}$를 $f_{j},f_{j+1},f_{j+2}$에 대해서 표현하고, 그 때 발생하는 오차의 maxi..
[Python] Numpy 라이브러리(2)
·
프로그래밍 Programming/파이썬 Python
File Input and Output with Arrays Numpy array가 매우 클 경우에는 저장하고 다시 불러올 수 있다. np.save는 저장 np.load는 저정한 array 불러오기 np.save('some_array', arr) np.load('some_array.npy') 텍스트를 불러들이는 것 np.loadtxt np.savetxt Random Number Generation np.random.normal np.random.binormal np.random.randint(0,10,100) : 0에서 10 사이의 100개 np.random.seed로 seed를 설정할 수 있다. np.random에 속해있는 함수들
[Python] Numpy 라이브러리 (1)
·
프로그래밍 Programming/파이썬 Python
List가 기본적으로 파이썬에서 제공하는 collection이지만 데이터 분석에 사용하기에는 불편한 점이 있다. - element 단위로 계산하는 것이 불편하다. Numpy가 데이터 분석에 적절한 라이브러리가 될 수 있다. 사용하기 쉽고 빠르며, 계산이 전체 array에 적용될 수 있다. Numpy의 특징 homogeneous collection of "iterms" of the same "data-type" (dtype) linear algebra 등의 수학적 내용을 적용하기 편리하다. C, C++, FORTRAN과 잘 호환된다. ndarray : a fast and space-efficient multidimensional array providing vectorized arithmetic opera..
[Python] 파이썬 Functions 만들기
·
프로그래밍 Programming/파이썬 Python
Function 기본 문법 def function_name(arguments): statement return () # function에 대한 이해 def foo(alist): alist.append(1) alist = [2,3] print(alist) newlist = [0] foo(newlist) # 출력 [2,3] print(newlist) # 출력 [0,1] return이 없는 함수는 none을 return한다. none은 NULL과 비슷한 의미이며 논리적으로 false와 같다. Lambda Notation lambda는 anonymous function을 만든다. anonymous는 익명이라는 뜻이다. f = lambda x,y : 2*x+y f(3,4) # 출력 10 # 다른 표현으로는 (la..
[Python] 파이썬 control flow
·
프로그래밍 Programming/파이썬 Python
if 문 if (condition): (statement) elif (condition): (statement) else: (statement) 여기서 들어가는 condition은 boolean expression # conditional expression x = true_value if condtion else false_value example) x = 10 if True else 5 x # 10이 출력 x = 10 if False else 5 x # 5가 출력 while문 while (condition) : 조건이 맞지 않을 때까지 계속 반복 break while 문 중간에 나갈 수 있음 continue 반복문 중간에 나와서 다시 반복문 시행 assert(condition) 중간에 이 조건이 맞지..
[Python] 파이썬 datatype
·
프로그래밍 Programming/파이썬 Python
Datatype Datatype : int, float, string, collections Collections list [] : 순서가 있고, 바꿀 수 있다. 중복된 값이 있어도 된다. tuple () : 순서가 있지만 값을 바꿀 수 없다. (바꾸고 싶다면 새로운 튜플 생성) 중복된 값 허용 set {} : 순서가 없고(인덱스 값이 없다) 값을 바꿀 수 있다. 원소를 중복해서 들어갈 수 없다. (수학에서 중복된 값이 가능한 set : multiple set) dictionary {} : 순서 없고, 값을 바꿀 수 있다. 인덱스가 되어있다. 중복된 값을 허용하지 않는다. 각 collection 문법 1. list [] : 0부터 인덱스 시작, 콜론(:)은 전체 인덱스. -1은 맨 뒤에서부터 시작했을 때..
[기타] Reference citation 방법
·
기타
글을 쓰다보면 논문이나 책, 인터넷 자료들을 citation해야할 때가 있다. 그러나 처음 접하는 (나 같은) 사람은 레퍼런스를 어떻게 적어야할 지 몰라서 공부가 필요하다. 체계적으로 레퍼런스 쓰는 법을 알려주는 곳이 있는지는 모르겠지만, 나는 현재 수업을 들으면서 배우고 있기 때문에 이 자료들을 정리하려고 한다. 물론 네이버에 인용하는 법을 검색하면 많이 나오기는 하는데, 그것 말고 논문에 적용할 만한 reference 방법을 찾고자 한다. 1. Reference 형식에 대한 공부 내가 제출하려고 하는 저널이나, 혹은 내가 제출하려는 수업의 교수님 스타일에 따라 reference 형식이 달라질 수 있다. 내가 현재 듣는 수업에서는 APA 형식을 채택했다. 그 외에도 MLA이나 Chicago 등이 있는데..
[기타] FORTRAN 사용법
·
기타
FORTRAN은 FORmula TRANslation를 줄여서 만들어진 단어이다. IBM에서 과학에 필요한 계산을 위해 만든 프로그래밍 언어라고 한다. 수치해석이나 각종 계산 분석을 통한 분야에서 많이 사용하는데 그나마 최신이라는 Fortran 90마저도 1990년대에 나왔으니 상당히 오래된 언어이다. 다행히 다른 분들이 인터넷에 글을 많이 써줬지만 블로그 글 외에도, 책이나 강의 자료도 인터넷에 공유하면 좋을 것 같아서 이렇게 글을 조금씩 업로드하고자 한다. 일단 나의 경우에는 fortran 컴파일러로는 tdm-gcc를 사용하고 (jmeubank.github.io/tdm-gcc/) 코드 작성 프로그램(editor)으로는 Notepad++를 사용하기로 했다. fortran 컴파일러도 종류가 많아서 여러 추..