²Ä¤T¶g¤W½Òºõ­n

 

 

¦b¥»¶g¤T¤p®É¥bªº½Òµ{¤¤¡A§Ú­Ì±N³°Äò§¹¦¨¤U¦C´X­Ó³æ¤¸¡A¨C³æ¤¸¬ù¥b¤p®É¦Ü¤@¤p®É¡C

 

¤@¡BFortran µ{¦¡¼g§@»P½sĶ½Æ²ß¡]30 ¤ÀÄÁ¡^

½Æ²ß¼g¥i­pºâªºµ{¦¡

¦p¡G±q 1 ¥[¨ì N ªºµ{¦¡

½Æ²ß¦p¦ó¥Î½sĶ¾¹°µ¥X¥i°õ¦æÀÉ

¦p¡Ggfortran my_prog.f ©Î gfortran -o my_prog.x my_prog.f

 

¤G¡BPGPLOT ø¹Ï°Æµ{¦¡®wªº¸Ô²Ó¤¶²Ð

PGPLOT ²¤¶¡]¤@¤p®É¡^

¥Ü½d pg_test1.f

( gfortran -o pg_test1.x pg_test1.f -L /usr/X11R6/lib -lX11 -L /usr/local/pgplot -lpgplot )

¸É¥R¸ê®Æ¡GXmgr ¤¬°Ê¦¡Ã¸¹Ï³nÅé ¡]30 ¤ÀÄÁ¡^

 

¤T¡BPGPLOT ø¹Ï¤§¹ê²ß¡]¤@¤p®É¦Ü¤@¤p®É¥b¡^

¥Î¥´ÂIªº¤è¦¡¡Aµe¥X¤T¨¤¨ç¼Æ y = sin(x) ªº¹Ï§Î¡]´£¥Ü¡Gcall PGPT ¡^

¥Î³s½uªº¤è¦¡¡Aµe¥X y = x2 sin(x) ªº¹Ï§Î¡]´£¥Ü¡Gcall PGLINE ¡^

 

 

¡]²Ä¤T¶g¹ê»Ú¥u°µ¨ì³oùØ¡^

 

¥|¡B ¥H PGPLOT ¿é¥X°Êµeªº§Þ¥©¤¶²Ð»P¹ê²ß

´«ÃC¦âªº«ü¥O

½d¨Òµ{¦¡¾\Ū planet.f

½d¨Òµ{¦¡¾\Ū md_pgplot.f

 

 

¤­¡B¹q¸£¼ÒÀÀ¹êÅç¡G©@°Ø§N«o°ÝÃD

°ÝÃD¡G¥ý¥[¥¤ºë©Î¬O«á¥[¥¤ºë©@°Ø§N±o§Ö¡H

ª«Åé¶q¡G·Å«×ÀH®É¶¡ªºÅܤÆ

ª«²z©w«ß¡]¼Æ¾Ç¼Ò«¬¡^¡G¤û¹y§N«o©w«ß¡]·Å«×ÅܤƲv»P·Å®t§e¥¿¤ñ¡^

dT / dt = - r (T - Ts)

¨ä¤¤·Å«× T ¬O®É¶¡ t ªº¨ç¼Æ¡A§Y T(t) ¡ATs ¬O¥~¦bÀô¹Òªº·Å«×¡]«Ç·Å¡^¡A

§N«o«Y¼Æ r ¦p¦ó©w¥X¡H

¥H¤U¬°¹ê´ú­È¡A·í®É«Ç·Å 17 «× C¡G

®É¨è¡]¤ÀÄÁ¡^ ¶Â©@°Ø·Å«×(«×C) ¥Õ©@°Ø·Å«×(«×C)
0 82.3 68.8
2 78.5 64.8
4 74.3 62.1
6 70.7 59.9
8 67.6 57.7
10 65.0 55.9
12 62.5 53.9
14 60.1 52.3
16 58.1 50.8
18 56.1 49.5
20 53.3 48.1
22 52.8 46.8
24 51.2 45.9
26 49.9 44.8
28 48.6 43.7
30 47.2 42.6
32 46.1 41.7
34 45.0 40.8
36 43.9 39.9
38 43.0 39.3
40 41.9 38.6
42 41.0 37.7
44 40.1 37.0
46 39.5 36.4

¥Õ©@°Ø»P¶Â©@°Ø¬O§_³£º¡¨¬¤û¹y§N«o©w«ß©Ò´y­zªº©O¡H¦p¦ó½T»{¡H¦p¦ó°µ¤U¤@¨B¡H

 

ºtºâªk¡G

Euler ºtºâªk

¹ï©ó¤@­Ó²³æªº·L¤À¤èµ{ dy / dx = f(x,y)¡A¦b Dx «Ü¤p®É¥i·í§@ Dy / Dx = f(x,y)¡A¬G Dy = f(x,y) Dx

¤S·í Dx ¬Oµ¥¶¡¹j xn - xn-1 = ... = x3 -x2 = x2 -x1 = Dx ®É

Dy = yn+1 - yn = f(xn,yn) Dx

³oùتº

yn+1 = yn - f(xn,yn) Dx

´N¬O¦³¦Wªº Euler¡]¶ø¨Ì°Ç¡^ºtºâªk

 

µ{¦¡¬yµ{¡Gµ¹©w§N«o«Y¼Æ¡B©@°Øªì©l·Å«×¡B«Ç·Å¡Aµe¥X T(t) ªº¹Ï

(0) ¶}©l

(1) Ū¤J§N«o«Y¼Æ¡B©@°Øªì©l·Å«×¡B«Ç·Å¡B¤p¶¡¹j®É¶¡³]©w¡B§Æ±æ¼ÒÀÀ¤§®É¶¡

(2) ¦b°j°é¤¤¡A¥H Euler ªk¹w´ú¤U¤@¤p¬q®É¶¡«áªº·Å«×¡A¨Ãµe¹Ï¡Aª½¨ì°j°é¶]§¹

(3) µ²§ô

½d¨Òµ{¦¡°Ñ¦Ò

 

¤ÀªR»P°Q½×

§Ú­Ì«ç»òª¾¹Dµ{¦¡¼g±o¹ï©Î¿ù¡H

¨ú Dt ¤j¤@ÂI©Î¤p¤@ÂI¦³¤°»ò¤£¦P¡H

°²³]¥[¥¤ºëÁ`¬O§â·Å¼ö©@°Øªº·Å«×¦A­°¤­«×¡A¥ý¥[¥¤ºë¹L¬O«á¥[·|¤ñ¸û§Ö³Ü¨ì©@°Ø¡H

ÅܤƲv»P·í®É¤§¶q¦³Ãöªº²{¶H¡AÁÙ¦³¤°»ò¨Ò¤l¡H

 

¤»¡B¹q¸£¼ÒÀÀ¹êÅç¡G¦Û¥Ñ¸¨Åé°ÝÃD

°ÝÃD¡G·Qª¾¹D¬¶¼u¥´¨ì¨ºùØ

ª«²z¶q¡G­y¸ñÀH®É¶¡ªºÅÜ¤Æ x(t), y(t)

ª«²z©w«ß¡]¼Æ¾Ç¼Ò«¬¡^¡Gf = m a ¡A¦b¦¹ f ¯Âºé¨Ó¦Û©ó­«¤O ¡]²ÊÅé¦r¥Nªí¬O¦V¶q¡^

²É¤l¦b¦aªíªþªñ©Ò¨üªº­«¤O¬O g ¡]g = GmM/R¡^¡Ag = 9.8 ¤û¹y/¦Ì

f = ma = m ( ax ex + ay ey ) ¡A¨ä¤¤ ax = dvx/dt ¡B ay = dvy/dt

¥u¦³­«¤O®É¡Af = fy ey = g m ey ¡A¤]´N¬O»¡ fy = g m

ºtºâªk¡G

§Q¥Î Euler ºtºâªk¡G

¦ì¸m xn+1 = xn + vx,n Dt ¡F yn+1 = yn + vy,n Dt

³t«× vx,n+1 = vx,n + ax,n Dt ¡F vy,n+1 = vy,n + ay,n Dt

 

¶i¶¥¸É¥R¡G¹ï­pºâí©w©Ê¤Îºë½T«×¡A¦³§ó¦nªº¿ï¾Ü

Euler-Richarson ºtºâªk¡A ¥ý¨D¥X

ax,n = fx(rn,vn,t)/m

vx,mid = vx,n + (1/2) ax,n Dt

xmid = xn + (1/2) vx,n Dt

ax,mid = fx( xmid, vx,mid, t+(1/2)Dt ) / m

µM«á¤~°µ

vx,n+1 = vx,n + ax,mid Dt

xn+1 = xn + vx,mid Dt

µù¡G¬°¤°»ò Euler-Richarson ºtºâªk ¤ñ Euler ªº¦n¡A¥i°Ñ¦Ò Gould ½Ò¥»¤Wªº±À¾É¡G p1¡Bp2

 

µ{¦¡¬yµ{¡G

(0) ¶}©l¡A«Å§iÅܼÆ

(1) °Ý½è¶q¡Bªì³t«×¡]§tªì³t²v»P¨¤«×¡^

(2) «Ø¥ß¦ì¸m x »P y¡B³t«× vx »P vy ªºªì©l­È

(3) ¥Îºtºâªk¨D¤U¤@­Ó¤p®É¬q Dt «áªº¦ì¸m»P³t«×

(4) µe¥X²É¤l¦ì¸m¨ÃÀˬd°ª«×¬O§_¤v¹F¦a­±¡A¥¼¹F¦a­±«h¦^¨ì (3)

(5) °Ý­n¤£­n¦A®g¤@¦¸¡A­Y­n«h¦^¨ì (1)

(6) µ²§ô

°µ¤£¥X¨Ó¶Ü¡H°Ñ¦Ò½d¨Òµ{¦¡

°Ê°Ê¸£¡B°Ê°Ê¤â¡A¦Û¤v¦A§ï³y¡]©Î¦^®a°µ¡^¡G

1. µe­Ó¤j¯¥§â¬¶ºÞªº¨¤«×ªí²{¥X¨Ó

2. ¥H¤õÃÄ¥]¸Ë¶ñ¼Æªí²{¬¶¼u°Ê¯à¡AÂà´«¦¨ªì³t²v

3. ª«Åé³Q¬µ¯}¤ùªº¼u¥X¡]°t¦X¶Ã¼Æ²£¥Í¾¹ ran3.f¡^

¤ÀªR»P°Q½×¡G

·Q¹w´ú¬¶¼u¥´¨ì¨ºùØ¡A¥D­n¬O°ò©ó¨º¤@±øª«²z©w«ß¡H

¤°»ò¼Ëªº¥ý¨M¡]ªì©l¡^±ø¥ó¨M©w¤F¬¶¼uªº­y¸ñ¡]©M¸¨ÂI¡^¡H

¦P¼Ëªº¤õÃÄ¥]¥R¶ñ¼Æ¡A«ç»ò¥´¬¶¼u¤~­¸±o³Ì»·¡H

 

¤C¡B¹q¸£¼ÒÀÀ¹êÅç¡G¨üªÅ®ðªý¤Oªº¸¨Åé

°ÝÃD¡G¦b¦³ªÅ®ðªý¤Oªº±¡ªp¤U¡A¬¶¼u­y¸ñÅܱo¦p¦ó¡H

ª«²z¶q¡G¤@¼Ë¬O­y¸ñÀH®É¶¡ªºÅÜ¤Æ x(t), y(t)

ª«²z©w«ß¡]¼Æ¾Ç¼Ò«¬¡^¡Gf = m a¡A¨ü¤O f ¦P®É¥]§t¤F­«¤O¤ÎªÅ®ðªý¤O

ªÅ®ðªý¤O«D±`½ÆÂø¡]¦]¦¹­¸¾÷©Î°ª³t¤õ¨®ªºªý¤O³]­p»Ý­n¾a­·¬}¹êÅç©Î¹q¸£¼ÒÀÀ¨Ó¶i¦æ¡^¡A°ò¥»¤W¥¦¬O»P³t²v¦³Ãö¡A³t²v¶V°ªªý¤O¶V¤j¡AÀR¤îªºª«Åé«h¨S¦³ªÅ®ðªý¤O¡C¥i¨£¥¦¬O¤@­Ó»P³t²v¦³Ãöªº¶q¡A±`¨£ªºÂ²¤Æ¤½¦¡¡A¦³ÀH³t²v¤@¦¸¤è§e¥¿¤ñªº¡A¤]¦³ÀH¨â¦¸¤è§e¥¿¤ñªº¡A¤è¦V¬O³t«×¤Ï¦V¡]­t¸¹¡^ªº

Fd = - k1 v

Fd' = - k2 v2

¥Ñ©ó¦³ x »P y ¨â­Ó¤À¶q¡A°²³]³t«×»P¤ô¥­½uªº§¨¨¤¬° i

Fd,x = Fd cos i

Fd,y = Fd sin i

¦]¦¹¡A¦b¦³Ãö¤O¤§³¡¤Àªº¤½¦¡¡A

fx = Fd cos i

fy = - m g + Fd sin i

¨ä¥Lªº³¡¤À¡A»P¤W¤@­ÓijÃD¬Û¦P

·sijÃD¡G¦p¦ó¨D±o«Ç®ðªý¤O«Y¼Æ k¡H

§Q¥Î²×ºÝ³t«×¡A§Y««ª½¸¨¤U¹Lµ{¤¤­«¤O»Pªý¤O¹F¥­¿Å¡A¨Ï¦X¤O¬°¹s¤£¦A¥[³t¡A¦Ó§eµ¥³t¹B°Ê®Éªº³t«×¡C

¦X¤O = 0 = - m g + Fd = - m g + k1 vy2

§Y k1 = vy2 / (m g)¡A¦¹²×ºÝ³t«×¥iÂǥѹêÅç¶q±o

¤@­Ó¯»µ§ÀY¤j¤pªº¥Û¤l¨ä²×ºÝ³t«×¤j¬ù¬O¨C¬í¤T¤Q¤½¤Ø¡A¥t¥~¡A¤@­Ó­« 0.254 §J ¡B¥b®| 0.254 ¤½¤Àªº«O§QÀs²y¦³¥H¤Uªº¹ê´ú¼Æ¾Ú¡]¤Þ¥Î Physics Teacher 24, 153 (1986) )

®É¨è¡]¬í¡^ ¦ì¸m¡]¤½¤Ø¡^
-0.132 0.0
0.0 0.075
0.1 0.260
0.2 0.525
0.3 0.870
0.4 1.27
0.5 1.73
0.6 2.23
0.7 2.77
0.8 3.35

·Q·Q¬Ý¡A§Ú­Ì­n«ç»ò±q¤W¦Cªº¼Æ¾Ú¨D±oªÅ®ðªý¤O«Y¼Æ k¡H

 

ºtºâªk¡G

¦P¼Ë±Ä¥Î Euler ©Î Euler-Richardson ºtºâªk

 

µ{¦¡³]­p¡G

»P¤W¤@­ÓijÃD¬Û¦P

°Ñ¦Ò½d¨Òµ{¦¡

 

¤ÀªR»P°Q½×¡G

¥H¦P¼Ëªº¤O¹D¦V¤W©ß¤@­Ó¤p¥Û¤l¡A¦b¦³ªÅ®ðªý¤O»PµL«ÇªÅ®ðªý¤Oªº¨âºØ±¡ªp¤ñ¸û¤U¡A¨º¤@ºØ·|¦bªÅ¤¤°±¯d¸û¤[¡H

¦b¦³ªÅ®ðªý¤Oªº±¡ªp¤U¡A©ß®gª«ªº¨¤«×­n¦p¦ó³]©w¨ä¶ZÂ÷¤~·|³Ì»·¡H

 

 

 

 

¶i¶¥¾\Ū¡G

Gould and Tobochnik, An Introduction to Computer Simulation Methods -- Applications to Physical Systems, Addison Wesley (1996) Chapter 2, Chapter 3