²Ä¤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¥ipºâªºµ{¦¡
¦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«ß©Ò´yzªº©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¡Gy¸ñÀ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¤@¦¸¡AYn«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¥Dn¬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¬¶¼uy¸ñÅܱo¦p¦ó¡H
ª«²z¶q¡G¤@¼Ë¬Oy¸ñÀ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