편미분방정식의 해를 일정한 시간 간격별로 얻은 데이터로 만든 그래프는 animating gif를 이용하면 시간적으로 변하는 해를 보다 쉽게 표현할 수 있다. 각각의 시간 간격(여기서는 10 * time-step)에서 얻은 데이터 파일의 이름이 gp_0000.data, gp_0010.dat,..., go_2000.dat처럼 되도록 만든다. 각 데이터 파일은 공간 그리드 위치와 그 지점에서 해의 값 (999개 행 x 2 열이고, xrange 가 0:1000이고, yrange는 -1:1이다).
그래픽 파일에서 gif를 만드는 프로그램을 이용하려면 각 데이터 파일을 이용해서 일단 그래픽 파일을 만들고, 만들어진 그래픽 파일을 모아서 gif를 만든다. gnuplot에서는 이 작업이 일괄 작업으로 가능한데, 이를 위해서는 다음과 같이 두 개의 txt 파일을 editor로 만들면 된다.
gp_out.plt--파일;
#We will plot gif animation
reset
set term gif animate
set output "gpacket.gif" #생성될 gif 파일.
n = 2000 #n frames #마지막 파일번호
set xrange [0:1000]
set yrange [-1:1]
i = 0 #시작 파일 번호
load "gp_ann.plt" #각 데이터 파일을 그리는 명령을 담고 있음
set output
gp_ann.plt--파일
plot sprintf("gp_%04d.dat", i) u 1:2 w l #데이터 파일의 이름이 gp_####. dat
i = i + 10 #파일의 번호가 10씩 증가함.
if (i < n) reread
gnuplot에서 load gp_out.plt
또는, 하나의 파일로 만들면,
reset
set term gif animate
set output "gpacket.gif"
n = 2000 #n frames
set xrange [0:1000]
set yrange [-1:1]
do for [i = 0: n: 10] {
plot sprintf("gp_%04d.dat", i) u 1:2 w l
}
set output
결과: potential well 내부에 갇힌 gaussian wavepacket의 time evolution (real part만)을 보여준다.
'Physics' 카테고리의 다른 글
비상대론적 산란: Born Approximation (0) | 2022.12.02 |
---|---|
물체의 회전은? (0) | 2022.02.05 |
What is at the end of a rainbow? (2) | 2022.01.26 |
Mad About Physics: Braintwisters, Paradoxes, and Curiosities (0) | 2022.01.25 |
QED: The Strange Theory of Light and Matter (0) | 2022.01.25 |