> 5 d @ 9 e w Î2 - osaka university ·...

10
'>ĵńğŀĹŅğw Î2 1 *$>ą±&`Iąt Verlett Mathematicaĕýúh 2 òąYkĀĆMathematicaĕýúĢĹľŃņĢĿŅhĕëã Mathematica.nb ĕĨĚŅńņĭã (2) 6f2: ĠĸŅĭą@iĕ$õúêaĆ (1) 6f1: MathematicaĠĸŅĭą@ą`t +4ąxĀ3Ėû³ĕ²UõÿâShift+Return(Enter)ĕ.aVõ÷ēã currentdir = SetDirectory["Z:"]; ĠŃ rlist = ReadList["test.dat", Number, RecordLists -> True] ĠĸŅĭą@iĕ$õúðăêaĆĥĹĠńŅĕþñēã rlist = ReadList["test.dat", Number, RecordLists -> True] ; ĥĹĠńŅ (0) ıĤĕ? (Mathematicaĕ¤&õúđr2ë)ã currentdir = SetDirectory["Z:"]; $Path = Prepend[$Path, currentdir]; â¾<ąĠĸŅĭĕ@õÿðûôê

Upload: others

Post on 31-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: > 5 D @ 9 E w Î2 - Osaka University · 位置データとポテンシャルエネルギーを配列realpointsに代入 realpoints=8

'>ĵńğŀĹŅğw� �Î2

1

*�$>ą±&`�Ią�t�Verlett�

Mathematicaĕ�ýú�h

2

òąYkĀĆMathematicaĕ�ýúĢĹľŃņĢĿŅ����hĕ�ëã

Mathematica��.nb ĕĨĚŅńņĭã

(2)6f2:ĠĸŅĭą@��iĕ�$õúêaĆ

(1)6f1:MathematicaĠĸŅĭą@�ą`t+4ąx�Ā3Ėû³�ĕ²UõÿâShift+Return(Enter)ĕ.aVõ÷ēã

currentdir =SetDirectory["Z:"];

ĠŃ

rlist =ReadList["test.dat",Number,RecordLists ->True]

ĠĸŅĭą@��iĕ�$õúðăêaĆĥĹĠńŅĕþñēã

rlist =ReadList["test.dat",Number,RecordLists ->True];ĥĹĠńŅ

(0)ıĤĕ�? (Mathematicaĕ¤&õúđr2�ë�)ãcurrentdir =SetDirectory["Z:"];$Path=Prepend[$Path,currentdir];

��â¾<ąĠĸŅĭĕ@�õÿðûôê

Page 2: > 5 D @ 9 E w Î2 - Osaka University · 位置データとポテンシャルエネルギーを配列realpointsに代入 realpoints=8

Mathematicaĕ�ýú�h

3

(3)īņħą´�ĉą�ċ©ċã

1.0 2.0 3.04.05.01.1 2.13.1 4.15.11.2 2.23.24.25.2

v�ʼnpą3�5�ąīņħĕ�ĔúĴėęł,test.datĕĻļFĀcêÿ�=õÿðûôêŇ

(4)Transpose[´�/]Ʀ�

{{1.0,2.0,3.0,4.0,5.0},{1.1,2.1,3.1,4.1,5.1},{1.2,2.2,3.2,4.2,5.2}}

{{1.0,1.1,1.2},{2.0,2.1,3.1},{3.0,3.1,3.2},{4.0,4.1,4.2},{5.0,5.1,5.2}}

rlist rlist2=Transpose[rlist]

rlist =ReadList["test.dat",Number,RecordLists ->True]Mathematicaąpą�ċ©ċĠĸŅĭĕ@�õâtest.datąīņħĕ�ċ©Čã

ĠŃĕ²UõÿShift+Return(Enter)ĕ.aVõ

rlist2

Mathematicaĕ�ýú�h

4

(5)´�íđňp�´�(�)ąW�ã

(6)1p�´�íđ2p�´�ą�Sã

rlist2[[1]](���)ĄĆ{1.0,1.1,1.2}î�ýÿêērlist2[[3]](���)ĄĆ{3.0,3.1,3.2}î�ýÿêē

time={1.0,1.1,1.2}

position={3.0,3.1,3.2}trajectory={}

AppendTo[trajectory,time](timeĕ«%)ĕ@�

trajectoryĆ {{1.0,1.1,1.2}}āăē

AppendTo[trajectory,position](positionĕ«%)ĕ@�

trajectoryĆd��Ą {{1.0,3.0},{1.1,3.1},{1.2,3.2}}āăē

trajectoryĆ {{1.0,1.1,1.2},{3.0,3.1,3.2}}āăētrajectory=Transpose[trajectory](¦�)

time=rlist2[[1]]

position=rlist2[[3]]òĔĀtime,positionĄĆ,äpą´�î��ôĔēʼn

Page 3: > 5 D @ 9 E w Î2 - Osaka University · 位置データとポテンシャルエネルギーを配列realpointsに代入 realpoints=8

Mathematicaĕ�ýú�h

5

(7){{x1,y1},{x2,y2},{x3,y3},…}āêë´�ą\�īņħĕĵńĩĬ÷ēaĆListPlot

(8)º\ĕPlot÷ēaĆPlot[]

ListPlot[trajectory]

trajectory={{1.,3.},{1.1,3.1},{1.2,3.2}}

Plot[0.5*x^2,{x,-2.5,2.5}]

!2 !1 1 2

0.5

1.0

1.5

2.0

2.5

3.0

1.05 1.10 1.15 1.20

3.05

3.10

3.15

3.20

(9)º\ąPlotā4KăĂĕ.aĵńĩĬ÷ēaĆ

Show[Plot[….],Graphics[…]]

!2 !1 1 2

0.5

1.0

1.5

2.0

2.5

3.0

Newton`�Iĕ\��Ą�ð

�;ąĢĹľŃņĢĿŅąňþĄâ�;ą&ïĕ*��ĄĢĹľŃņĬ÷ē

å�;&$>(MolecularDynamics)æāêë`tîéēã

òą`tĆâ*�$>ąNewton`�Ilą`�Iĕ�ê�;ąa¹8'ĕ«êâěłġņĭOĕ ?õÿa¹Ąº÷ē��ĕ)ē�Āâläă

z$>·ĕsčē`tĀéēã

òąĐëĄ�ąa¹8'ĕ«ëaâ��oĆ¯�ąM�ĕTë�îĀïăê

yâ�ìć

dx(t)dt

= f (x(t)) x(ti+1)− x(ti )Δt

= f (x(ti ))x(ti+1) = x(ti )+ f (x(ti ))Δt

ąĐëĄa¹ĕ½[�÷ēãòąĐëă`�IĕE�`�Iā0Ĉã

òąE�`�Iĕ�ýÿâ�;ąåĠĸ¬Ēæĕ�ēâāêëąî6fĀéēã

Page 4: > 5 D @ 9 E w Î2 - Osaka University · 位置データとポテンシャルエネルギーを配列realpointsに代入 realpoints=8

(ti,xi)

ti ti+1

xi

dxdt ti

×dt

(ti+1,xi+)dxdt ti

×dt

t

x(ti+1) = x(ti )+dxdt ti

dt+ 12d2xdt2 ti

dt+

≅ x(ti )+dxdt ti

dt

xąt�=OĕĪęŀņC¸ą1pĊĀĀª�

ňpĊĀąC¸ăąĀ�GîPê..

�ýq�Ąa¹�Cĕ«ë`t(Eulert)

x

ăąĀf ÁĀĆåVerlettæāêë�;&$>Āmvāăýÿêēňþą`tĕ�ëã

Verlett

x(t +Δt) = x(t)+ v(t)Δt + (Δt)2

2a(t)+

xĕâßΔtĄAõÿ2pĊĀC¸(*1)ʼn

x(t −Δt) = x(t)− v(t)Δt + (Δt)2

2a(t)+

v(t) ≡ ∂x(t)∂t

a(t) ≡ ∂2x(t)∂t2

(*1)(1)

(2)

I(1),(2)ĕ¨ä¥õÿ]}÷ē

x(t +Δt) ≅ 2x(t)− x(t −Δt)+ (Δt)2a(t) (3)

I(1),(2)ĕ¨äJêÿ

v(t) ≅ x(t +Δt)− x(t −Δt)2Δt

òąI(3),(4)ĕ~êÿa¹�Cĕôøē`tĕVerlettā0Ĉ

Ć£·m=1ąaą®Gā%®G

(4)

Page 5: > 5 D @ 9 E w Î2 - Osaka University · 位置データとポテンシャルエネルギーを配列realpointsに代入 realpoints=8

�qVerlett

òąI(3),(4)ĕùąĊĊ~êÿĎ�êîâĵńğŀĺî�¼ĄăēąĀBõ�('÷ēãI(4)ĄI(3)ĕ��÷ēāâ

(5)

v(t) = x(t)− x(t −Δt)Δt

+Δt2a(t)

x(t +Δt) ≅ 2x(t)− x(t −Δt)+ (Δt)2a(t)

òąI(3)āI(5)î2ąĵńğŀĺą6fIāăēã

(5)

(3)

v(t +Δt) = x(t +Δt)− x(t)Δt

+Δt2a(t +Δt)

v(t +Δt) = x(t +Δt)− x(t)Δt

+Δt2a(t +Δt)

10

¡1X&;ķĪŅĢĽł E(x) =ωx2 (ω = 0.5)

ą�Āâ e��ÞÃÈÄÏÊÇÈÅ e®GÜÃÈÄÏÈÇÈ

āõÿâÓÕÝÛØ×`�IĄLë�;ã·Éā÷ēÄą±&ĕĢĹľŃņĬ÷ē

ĵńğŀĺĕ�Ĕã

úûõa¹ĤĪĩĵĆàÛÏÈÇÈÊÅÂĤĪĩĵ\ĆÊÈÈÈ2āõâÊÚÛÕÙĄÉ2â

a"â��â®Gâ��ěİłĝņâąÌþĕĴė곥cï�÷ĐëĄ

÷ē�ã

ç Á7.1è

Page 6: > 5 D @ 9 E w Î2 - Osaka University · 位置データとポテンシャルエネルギーを配列realpointsに代入 realpoints=8

11

IJŅĬ(1)

£·îÉăąĀâ±&·ÙĆ®GÜā�õðăēʼn

p(t) = v(t) ≡ ∂x(t)∂t

įľņĬŅ`�IĀâ%®GĆ$ÃüíđÄā�õðăēÃÒÏÖÔĀÖÏÉăąĀÄʼn

a(t) = F(t) ≡ −∂E(x)∂xE(x) =ωx2= −2ω x

�;Ąííē$ĆķĪŅĢĽłÃòą7-��ěİłĝņÄÑąâ��ÞĄº÷ēM�ĄĸęĮĤĕþñúĎą

(6)

12

IJŅĬ(2)��â®GÃϱ&·Äâ%®GÃÏ$ÄĕâĤĪĩĵóāâIÃËÄāIÃÍÄĄLýÿ

b_õÿêñć�êÃÐØłņĵĕ�ýÿÄãúûõâ e|Rą��â®GĆ

a(0) = F(0) ≡ −∂E(x)∂x t=0

= −2ω x(t)t=0

e%®GĆ

x(0) = 2.0 v(0) = 0.0

ÉĤĪĩĵ�ą��ĆIÃËÄ ÃáÄĕùąĊĊ�ýÿõĊëāâ eÞÃÈÄĐĒ�#ą

��ÞÃÆàÛÄîN�ĄăýÿõĊëʼn

x(Δt) ≅ 2x(0)− x(−Δt)+ (Δt)2a(t)

ùòĀÉĤĪĩĵ�ûñĆIÃÉÄÃáÄĕ�êâÐØłņĵą#Ą!­��÷ēã

x(Δt) = x(0)+ v(0)Δt + (Δt)2

2a(0)+

(7)

(8)

(9)

Page 7: > 5 D @ 9 E w Î2 - Osaka University · 位置データとポテンシャルエネルギーを配列realpointsに代入 realpoints=8

13

eg�ʼnX0î��âVx0î®Gâa0îX0íđ��õú%®G

ňĤĪĩĵ�ąHmûñâI(9)(p.12)ĕ�ýÿ��

�j�ĕ5čĐãIJŅĬʼnVerlettą�q{ąI(3),(5),(6)ĕ�ëã(Xnew→anew→Vxnewāêë��ą¿�ĄuQ)

�iĆĴė곥cï�÷�

�iĆĴė곥cï�÷�

programverletimplicitreal*8(a-h,o-z)

nstep=2000wk=0.5d0dt=0.02d0

CCInitialpositionandvelocityC

X0=2.0d0a0=-2.0d0*wk*X0Vx0=0.0d0E0=wk*X0*X0

open(15,file="oscillation.out",status="unknown")

write(15,'(4F15.8)')0.0d0,X0,Vx0,E0Xold=X0

CCpositionandvelocity@1ststepC

Xnow =X0+dt*Vx0+dt*dt*a0/2.0d0anow =-2.0d0*wk*XnowVxnow=(Xnow-Xold)/dt +dt*anow/2.0d0Enow =wk*Xnow*Xnow

do100i=2,nstepCCposition,velocity,and acceleration@i-th stepC

Xnew =2.0d0*Xnow - Xold +dt*dt*anowanew=-2.0d0*wk*XnewVxnew=(Xnew-Xnow)/dt +dt*anew/2.0d0Enew=wk*Xnew*Xnewt=i*dt

if(MOD(i,2).eq.0)thenwrite(15,'(4F15.8)')t,Xnew,Vxnew,Enewendif

Xold=XnowXnow=Xnewanow=anew

100continueclose(15)

stopend

¶�òòĀĆâI(3),(5),(6)ą8\/ĕ��ąĐëĄõÿêēʼn

x(t +Δt)→ xnew x(t)→ xnow x(t −Δt)→ xolda(t +Δt)→ anew a(t)→ anow v(t +Δt)→Vxnew

a¹ĤĪĩĵî°Č»Ąâ8\/ĕb_

14

調和振動子の解析

ディレクトリパスの設定currentdir = SetDirectory@"Z:"D;$Path = Prepend@$Path, currentdirD;

データの入力rlist = ReadList@"oscillation.out", Number, RecordLists Ø TrueD;rlist2 = Transpose@rlistD

時刻データを配列timeに代入time = rlist2@@1DD

位置データを配列positionに代入position = rlist2@@2DD

運動量(速度)データを配列velocityに代入velocity = rlist2@@3DD

ポテンシャルエネルギーデータを配列potentialEに代入potentialE = rlist2@@4DD

表示するデータ時刻データと位置データを配列trajectoryに代入

trajectory = 8<;AppendTo@trajectory, timeD;AppendTo@trajectory, positionD;trajectory = Transpose@trajectoryD

åīĘŃĞĬŁıĤą�?æď

åa"īņħĕ´�timeĄ��æā

êýú^Ćuµ^Ā÷ã

(@�aĄĆ��Ā÷)

ĠĸŅĭĆâ�íđ�Ą¿Ą

@�õÿ�ð�ã

 Á7.1ą@»ą�h(1)

Page 8: > 5 D @ 9 E w Î2 - Osaka University · 位置データとポテンシャルエネルギーを配列realpointsに代入 realpoints=8

15

表示 : 時刻 vs 位置(時間軸=横軸に沿って振り子が触れる様子)

ListPlot@trajectoryD

10 20 30 40

-2

-1

1

2

位置データと運動量データを配列phasepointsに代入phasepoints = 8<;AppendTo@phasepoints, positionD;AppendTo@phasepoints, velocityD;phasepoints = Transpose@phasepointsD

表示 : 位置 vs 運動量(古典力学の位相空間)

ListPlot@phasepointsD

-2 -1 1 2

-4

-2

2

4

位置データとポテンシャルエネルギーを配列realpointsに代入realpoints = 8<;AppendTo@realpoints, positionD;AppendTo@realpoints, potentialED;realpoints = Transpose@realpointsD

2 Verlet.nb

 Á7.1ą@»ą�h(2)

16

realpoints[[1]]の位置を中心とした円とy=0.5* x2のグラフを同時プロット

Show@[email protected] * x^2, 8x, -2.5, 2.5<D,Graphics@Circle@realpoints@@1DD, 0.1D

DD

-2 -1 1 2

0.5

1.0

1.5

2.0

2.5

3.0

realpoints[[1]]~realpoints[[5]]の位置を中心とした円とy=0.5* x2のグラフを同時プロット

movies = 8<;Do@graph =Show@[email protected] * x^2, 8x, -2.5, 2.5<D,Graphics@Circle@realpoints@@iDD, 0.05D

DD;

AppendTo@movies, graphD,8i, 5<D

realpoints[[1]]~realpoints[[5]]の位置を中心とした円とy=0.5* x2のグラフを同時プロットがちゃんと配列moviesに入っているかを確認。

movies

:

-2 -1 1 2

0.51.01.52.02.53.0

,

-2 -1 1 2

0.51.01.52.02.53.0

,

-2 -1 1 2

0.51.01.52.02.53.0

,

-2 -1 1 2

0.51.01.52.02.53.0

,

-2 -1 1 2

0.51.01.52.02.53.0

>

Verlet.nb 3

 Á7.1ą@»ą�h(3)

Page 9: > 5 D @ 9 E w Î2 - Osaka University · 位置データとポテンシャルエネルギーを配列realpointsに代入 realpoints=8

17

配列moviesにグラフを格納 。movies = 8<;Do@graph =Show@[email protected] * x^2, 8x, -2.5, 2.5<D,Graphics@Circle@realpoints@@iDD, 0.1D

DD;

AppendTo@movies, graphD,8i, 500<D

動画の作成ListAnimate@moviesD

-2 -1 1 2

0.5

1.0

1.5

2.0

2.5

3.0

4 Verlet.nb

moviesą�Sâ

&�ą�SĆ9Ba¹îííĒĊ÷ã

 Á7.1ą@»ą�h(4)

18

表示 : 時刻 vs 位置(時間軸=横軸に沿って振り子が触れる様子)

ListPlot@trajectoryD

10 20 30 40

-2

-1

1

2

位置データと運動量データを配列phasepointsに代入phasepoints = 8<;AppendTo@phasepoints, positionD;AppendTo@phasepoints, velocityD;phasepoints = Transpose@phasepointsD

表示 : 位置 vs 運動量(古典力学の位相空間)

ListPlot@phasepointsD

-2 -1 1 2

-4

-2

2

4

位置データとポテンシャルエネルギーを配列realpointsに代入realpoints = 8<;AppendTo@realpoints, positionD;AppendTo@realpoints, potentialED;realpoints = Transpose@realpointsD

2 Verlet.nb

Mathematicaą4ĕ²U(D4ąĜŃŅģ)→åCtrl+CæĀĠijņ→WordĴėęłĕ¸êÿ→åCtrl+VæĀĶņĤĬ

Mathematicaą4ĕWordĴė곥¢ñēĄĆ..

Page 10: > 5 D @ 9 E w Î2 - Osaka University · 位置データとポテンシャルエネルギーを配列realpointsに代入 realpoints=8

ŃķņĬ

 Á7.1ąĵńğŀĺąĦņĤĠņĭâMathematicaĕ�ýú�h�ią(1)n§a"(t)�§��(x)ąĵńĩĬ(*1).öð�h�iąn§��(x)�§±&·(p)ąĵńĩĬ(*2)

ĕĵŁŅĬõÿâp2ąYk¸:aĄZ�

19

10 20 30 40

!2

!1

1

2

!2 !1 1 2

!4

!2

2

4(*1) (*2)