แนะนำการใช้ Mathematica เบื้องต้นสำหรับนักศึกษาด้านวิทยาศาสตร์

รวบรวมโดย พงศกร สายเพ็ชร์

กลับไปหน้าแรก

ปัญหาจากนักศึกษา (คุณ ~AwaTarn~): อยากทราบวิธีการ plot graph ในกรณีที่เรามี path ของอนุภาค(คล้ายๆ กับ path แสดงการ random walk ของอนุภาค) แล้วเราต้องการให้แสดงผลในลักษณะที่แสดง path แบบไล่สีไปตาม path นั้น ประมาณว่าเมื่อเราดูกราฟก็รู้ทันทีว่า ตรงไหนเป็นจุดเริ่มต้น จากนั้นเคลื่อนที่ไปทางไหน และตรงไหนเป็นจุดสุดท้ายที่อนุภาคเคลื่อนที่ไป

สมมุติว่าเรามีตำแหน่งการเคลื่อนที่ของอนุภาคแบบนี้คือ {x,y,z} = {cos(t), sin(t), 0.5 t} โดย t มีค่าตั้งแต่0 ถึง 20

In[1]:=

RowBox[{data,  , =,  , RowBox[{Table, [, RowBox[{RowBox[{{, RowBox[{Cos[t], ,, Sin[t], ,, RowBox[{0.5, t}]}], }}], ,, RowBox[{{, RowBox[{t, ,, 0, ,, 20, ,, 0.1}], }}]}], ]}]}]

Out[1]=

RowBox[{{, RowBox[{{1, 0, 0}, ,, RowBox[{{, RowBox[{0.995004, ,, 0.0998334, ,, 0.05}], }}], ,, ... 86, ,, 0.867644, ,, 9.95}], }}], ,, RowBox[{{, RowBox[{0.408082, ,, 0.912945, ,, 10.}], }}]}], }}]

เราทำให้ตำแหน่งเหล่านั้นกลายเป็นวัตถุประเภทจุดด้วยคำสั่ง Map[Point, ...]

In[2]:=

Map[Point, data]

Out[2]=

RowBox[{{, RowBox[{Point[{1, 0, 0}], ,, RowBox[{Point, [, RowBox[{{, RowBox[{0.995004, ,, 0.09 ... }}], ]}], ,, RowBox[{Point, [, RowBox[{{, RowBox[{0.408082, ,, 0.912945, ,, 10.}], }}], ]}]}], }}]

คำสั่ง Show[Graphics3D[...]] จะแสดงรูปเราในแบบ 3 มิติ

In[3]:=

Show[Graphics3D[Map[Point, data]]]

[Graphics:HTMLFiles/colortrajectory_6.gif]

Out[3]=

⁃Graphics3D⁃

เราสามารถกำหนดขนาดจุดได้ด้วยคำสั่ง PointSize[...]

In[4]:=

RowBox[{Show, [, RowBox[{Graphics3D, [, RowBox[{{, RowBox[{RowBox[{PointSize, [, 0.02, ]}], ,, Map[Point, data]}], }}], ]}], ]}]

[Graphics:HTMLFiles/colortrajectory_9.gif]

Out[4]=

⁃Graphics3D⁃

เราสามารถกำหนดสีของแต่ละจุดได้ด้วยคำสั่ง RGBColor, GrayLevel, หรือ Hue

In[5]:=

RowBox[{Show, [, RowBox[{Graphics3D, [, RowBox[{{, RowBox[{RowBox[{{, RowBox[{RowBox[{PointSiz ... {PointSize, [, 0.02, ]}], ,, RowBox[{Hue, [, 0.5, ]}], ,, Point[{1, 0, 1}]}], }}]}], }}], ]}], ]}]

[Graphics:HTMLFiles/colortrajectory_12.gif]

Out[5]=

⁃Graphics3D⁃

เราสร้างจุดสีต่างๆจากข้อมูลของเราด้วยการกำหนดสีของแต่ละจุด
ในที่นี้ จุดแรกๆจะมีสีอ่อนโดย GrayLevel จะใกล้ๆ 1
และจุดท้ายๆจะมีสีเข้มโดย GrayLevel จะใกล้ๆ 0

In[6]:=

RowBox[{coloredData,  , =,  , RowBox[{Table, [, RowBox[{RowBox[{{, RowBox[{RowBox[{PointSize,  ... ox[{0.9, (1 - k/Length[data])}], ]}], ,, Point[data[[k]]]}], }}], ,, {k, 1, Length[data]}}], ]}]}]

Out[6]=

RowBox[{{, RowBox[{RowBox[{{, RowBox[{RowBox[{PointSize, [, 0.02, ]}], ,, RowBox[{GrayLevel, [ ... ], ,, RowBox[{Point, [, RowBox[{{, RowBox[{0.408082, ,, 0.912945, ,, 10.}], }}], ]}]}], }}]}], }}]

เราใช้ Show[Graphics3D[...]] แสดงผลเช่นเดิม

In[7]:=

Show[Graphics3D[coloredData]]

[Graphics:HTMLFiles/colortrajectory_17.gif]

Out[7]=

⁃Graphics3D⁃

เราสามารถเปลี่ยนมุมมองได้ด้วยตัวเลือก ViewPoint
(ดูเมนู Input/3D ViewPoint Selector)

In[8]:=

RowBox[{Show, [, RowBox[{Graphics3D[coloredData], ,, RowBox[{ViewPoint, ->, RowBox[{{, RowBox[{0., ,,  , 0., ,,  , 2.44}], }}]}]}], ]}]

[Graphics:HTMLFiles/colortrajectory_20.gif]

Out[8]=

⁃Graphics3D⁃


วันนี้ขอจบแค่นี้ก่อน  หวังว่าคุณจะพบว่า Mathematica นั้นมีประโยชน์ในการศึกษาทางด้านวิทยาศาสตร์นะครับ ตอนผมเป็นนักเรียนอยู่ Mathematica 1.0 พึ่งออกมา และผมก็ใช้ช่วยในการเรียนและทำความเข้าใจในเรื่องต่างๆได้เป็นอย่างดี
ในตอนด่อๆไป ผมจะเน้นรายละเอียดในเรื่องต่างๆมากขึ้น ถ้าใครมีอะไรสนใจเป็นพิเศษ ก็ช่วยบอกไว้ใน http://mpec.sc.mahidol.ac.th/ หรือเมล์ผม ที่ [email protected] นะครับ


Created by Mathematica  (November 5, 2005)