Categories
Uncategorized

ไม่สนใจการเมือง??

Categories
Uncategorized

เขาค้อทะเลหมอก

เขาค้อ ทะเลหมอก

ระลอกคลื่น ทะเลเขา

สงบเย็น เป็นเพื่อนเรา

ทั้งแผ่นฟ้า และแผ่นดิน

          …..เนาวรัตน์ พงษ์ไพบูลย์

Categories
Mathematica Uncategorized

Happy Valentine’s Day!

^_^

Categories
Mathematica Uncategorized

ดูหน้าตาปลั๊กไฟของประเทศต่างๆด้วย Mathematica

เราสามารถดูหน้าตาของปลั๊กไฟประเทศต่างได้ด้วยคำสั่ง CountryData ครับ

คำสั่ง CountryData นี้ยังมีข้อมูลอีกมากมายหลายประเภทให้ลองเล่นกันครับ เช่น


ดูรายละเอียดเพิ่มเติมได้จาก Mathematica Document Center หรือ http://reference.wolfram.com/mathematica/ref/CountryData.html

Categories
Uncategorized

โลกนี้มีสิ่งเกินฝัน

โลกนี้มีสิ่งเกินฝัน
อนันต์เหลือตรึกรำลึกได้
หากความฝันบรรเจิดเพริศพิไล
ตื่นไย..สนิทฝันชั่วกัลปา

                               ทวิภพ

Categories
Mathematica Uncategorized

มาใช้ Mathematica ในการเรียนการสอนกัน ด้วยคำสั่ง Manipulate 2

ต่อจากครั้งที่แล้วครับ(http://www.sakngoi.com/?p=143)

คำสั่ง Manipulate นี้ Mathematica เพิ่มเข้ามาตั้งแต่ version 6 เป็นคำสั่งที่สามารถทำให้เราสามารถดูได้ครับว่ารูปแบบของกราฟหรือค่าจากการคำนวณอะไรบางอย่างที่เราสนใจจะเปลี่ยนไปอย่างไรถ้าหากเราเพิ่มหรือลดค่าที่เราสนใจที่เป็นส่วนหนึ่งในการคำนวณนั้น

เช่น อยากรู้ว่ากราฟของ sin\left(\omega\theta\right) ที่plot ตั้งแต่ \theta เท่ากับ 0-2\pi จะเปลี่ยนไปอย่างไรถ้าค่า \omega ค่อยเพิ่มขึ้นจาก 1-10 หรือ อย่างปัญหาในฟิสิกส์อยากรู้ว่าจะต้องยิงวัตถุจากจุดยอดของทรงกลมรัศมีขนาดหนึ่งด้วยมุมและอัตราเร็วเท่าใดวัตถุนั้นจึงจะเฉียดผิวของทรงกลมนี้พอดี และปัญหาอื่นๆอีกมากมาย สามารถดูตัวอย่างได้ที่ http://demonstrations.wolfram.com/

รูปแบบของคำสั่ง Manipulate ก็ตามที่แสดงด้านล่างนี้ครับ

รูปแบบคำสั่งนี้เป็นแบบ “จัดเต็ม”ครับ 🙂  แต่เราก็สามารถใส่แบบสั้นๆได้ครับ เช่นในการกำหนดตัวแปร อยากจะใส่เพียง {ตัวแปร,ค่าน้อยสุด,ค่ามากสุด} ก็ได้ครับ step ก็เป็นค่าอย่างเช่นจาก 1 ถึง 10 เราจะให้ค่าค่อยเพิ่มขึ้นครั้งล่ะเท่าไหร่จาก 1 ไปจนถึง 10  ส่วน options ก็จะเกี่ยวข้องกับการแสดงผลที่เกี่ยวข้องกับ slider หรือตัวควบคุมอื่นๆ เช่น Animator, Checkbox, ColorSetter, ColorSlider, InputField, Manipulator, PopupMenu, RadioButton หรือ RadioButtonBar, Setter หรือ SetterBar, Slider2D, Trigger and VerticalSlider ซึ่งเดี๋ยวจะพูดถึงทีหลังครับ

อันนี้เป็นตัวอย่างของกราฟ sin\left(\omega\theta\right)  โดย Manipulate จะสร้าง slider สำหรับการเปลี่ยนค่า \omega มาให้

Manipulate[

Plot[Sin[\omega \theta],{\theta,0,2\pi}]

,{\omega,1,10}

]

 

ส่วนอันนี้ก็เป็นการใช้ PolarPlot กับ cos(9 \theta) โดย \theta ค่อยๆเพิ่มจาก 0.01 ถึง \pi

Manipulate[
PolarPlot[Cos[9 \theta], {\theta, 0, T},
PlotRange -> {{-1, 1}, {-1, 1}}],
{{T, 0.01, “\theta (radian)”}, 0.01, \pi, Appearance -> “Labeled”}]

หรือจะลอง plot กราฟของฟังชั่นทางตรีโกนมิติ เช่น

Manipulate[
Plot[amp fun[freq x], {x, 0, 10}, PlotRange -> {-3, 3},
PlotStyle -> color, PlotLabel -> fun], {freq, 1, 5}, {amp, 1,
5}, {fun, {Sin, Cos, Tan, Csc, Sec, Cot}}, {{color,
Red}, {Purple -> “Purple”, Green -> “Green”, Blue -> “Blue”, Yellow -> “Yellow”}}]

ส่วนอันนี้ก็เป็นการเอาไปประยุกต์กับปัญหาฟิสิกส์ที่ว่าจะต้องยิงวัตถุจากจุดยอดของทรงกลมรัศมีขนาดหนึ่งด้วยมุมและอัตราเร็วเท่าใดวัตถุนั้นจึงจะเฉียดผิวของทรงกลมนี้พอดี(http://mpec.sc.mahidol.ac.th/forums/index.php/topic,345.0.html)

Manipulate[
Show[{Graphics[Circle[{0, 0}, r, {0, Pi}], Axes -> True],
Plot[Tan[theta] x – (9.8/(2 u^2 Cos[theta]^2)) x^2 + r, {x, 0,
r + 10}, PlotStyle -> Red,
PlotRange -> {{-r – 10, r + 10}, {0, r + 10}}]}],
{{u, 4.95, “initial speed(m/s)”}, 0.01, 50, 0.0001, Appearance -> “Labeled”},
{{theta, 0.5236, “launch angle(radian)”}, 0, Pi/2, 0.0001, Appearance -> “Labeled”},
{{r, 5, “circle radius(m)”}, 1, 10, Appearance -> “Labeled”}]

ส่วนอันนี้เป็น demonstration project ที่ผมลองทำส่งไปที่เวบ Wolfram ครับ

http://demonstrations.wolfram.com/AModelOfPlasmodiumFalciparumPopulationDynamicsInAPatientDuri/

ต่อ..สร้างโปรแกรมด้วย ManipulateMaker

Categories
Uncategorized

ทดสอบ latex

ทดสอบ LaTex

\frac{1}{\frac{1}{\frac{1}{\frac{1}{\frac{1}{x}+1}+1}+1}+1}+1

E=mc^2

i\hbar\frac{\partial}{\partial t}\left|\Psi(t)\right>=H\left|\Psi(t)\right>

Categories
Uncategorized

อ ะ ไ ร สั ก อ ย่ า ง

อ ะ ไ ร สั ก อ ย่ า ง

มันต้องมีอะไรสักอย่างในจักรวาลนี้

ที่พลัดหลงไปจากมิติกาลเวลา

อะไรสักอย่างที่โคลัมบัสและยูลิซีสตกสำรวจ

อะไรสักอย่างที่นักดาราศาสตร์กรีกและอาหรับมิได้ค้นพบ

อะไรสักอย่างที่ศาสดาของโลกลืมเทศนาสั่งสอน

อะไรสักอย่างที่ขาดหายไประหว่างหลุมดำ

 

มันต้องมีความผิดพลาดบางอย่างเกิดขึ้น

ระหว่างรอยต่อของเผ่าพันธุ์มนุษยชาติ

ที่พลัดหลงครั้งน้ำท่วมโลก

อะไรสักอย่างที่ไม่ได้ไปพร้อมกับเรือโนอาห์

อะไรสักอย่างที่พระคัมภีร์โบราณมิได้จารึก

อะไรสักอย่างที่นอสตราดรามุสคาดไม่ถึง

 

มันต้องมีความเข้าใจผิดบางอย่างบนโลกใบนี้

ที่สูญหายไปจากฐานข้อมูลของพลโลก

อะไรสักอย่างที่เพลโตไม่คาดคิด

อะไรสักอย่างที่นิทเช่ไม่ได้กล่าวถึง

อะไรสักอย่างที่ไอสไตน์มิได้คำนวณ

อะไรสักอย่างที่ขาดหายไป…

จากชิ้นส่วนของความทรงจำของมนุษยชาติ

….ซะการีย์ยา อมตยา….

Categories
Uncategorized

เพลงเถื่อนแห่งสถาบัน

เพลงเถื่อนแห่งสถาบัน

ดอกหาง นกยูง สีแดงฉาน บานอยู่เต็มฟากสวรรค์
คนเดินผ่าน ไปมากัน เขาด้นดั้น หาสิ่งใด
ปัญญา มีขาย ที่นี่หรือ จะแย่งซื้อ ได้ที่ไหน
อย่างที่โก้ หรูหรา ราคาเท่าใด จะให้พ่อ ขายนา มาแลกเอา
ฉันมา ฉันเห็น ฉันแพ้ ยินแต่ เสียงด่า ว่าโง่เง่า
เพลงที่นี่ ไม่หวาน เหมือนบ้านเรา ใครไม่เข้า ถึงพอ เขาเยาะเย้ย
นี่จะให้ อะไร กันบ้างไหม มหาวิทยาลัย ใหญ่โตเหวย
แม้นท่าน มิอาจให้ อะไรเลย วานนิ่งเฉย อย่าบ่นอย่าโวยวาย
ฉันเยาว์ ฉันเขลา ฉันทึ่ง ฉันจึง มาหา ความหมาย
ฉันหวัง เก็บอะไร ไปมากมาย สุดท้ายให้กระดาษฉันแผ่นเดียว
มืดจริงหนอ สถาบัน อันกว้างขวาง ปล่อยฉัน อ้างว้าง ขับเคี่ยว
เดินหา ซื้อปัญญา จนหน้าเซียว เทียวมา เทียวไป ไม่รู้วัน
ดอกหางนกยูง สีแดงฉาน บานอยู่เต็ม ฟากสวรรค์
เกินพอ ให้เจ้าแบ่งปัน จงเก็บกัน อย่าเดิน ผ่านเลยไป
Categories
Mathematica Uncategorized

วงกลมแห่งความตาย

จากที่มีคนถามปัญหาที่ http://www.pantip.com/cafe/wahkor/topic/X10570620/X10570620.html

มีชายหนึ่งล้านคนยืนกันเป็นวงกลม

ชายเหล่านี้ตั้งใจ จะฆ่าตัวตายหมู่ แต่เนื่องจากไม่มีใคร
กล้าฆ่าตัวตายจึงตกลงทำดังนี้ ให้ทุกคนล้อมเป็นวงกลม
จากนั้นให้เริ่มต้นที่คนแรก นำดาบฆ่าคนที่ 2
แล้วส่งดาบไปให้คนที่ 3 แล้วคนที่ 3 นำดาบนั้นฆ่าคนที่ 4
แล้วส่งดาบไปให้คนถัดไป ทำเช่นนี้ จนเหลือผู้รอดชีวิตอยู่คนเดียว
จึงค่อยฆ่าตัวตาย
ถ้าคุณบังเอิญอยู่ในกลุ่มคนพวกนี้ และเกิดไม่อยากถูกใครฆ่าขึ้นมา
คุณจึงพยายามไปยืนตำแหน่งที่จะเหลือรอดเป็นคนสุดท้าย
ถามว่าคุณจะไปยืนเป็นคนที่เท่าไหร่

 

เพื่อที่จะแก้ปัญหานี้แบบคนขี้เกียจผมก็ลองเขียนโปรแกรมโดยใช้ Mathematica ดูปรากฏว่าคำตอบที่ได้คือ

ต้องยืนที่ตำแหน่ง 951425

อันนี้โปรแกรมที่เขียนครับ

drp = Compile[{{ls, _Integer, 1}},
Select[ls, MemberQ[Drop[ls, {1, Length@ls, 2}], #] == False &]]

fn[ls_] :=
Module[{tmp}, tmp = drp[ls];(*Select[ls,MemberQ[Drop[ls,{1,Length@ls,
2}],#]==False&];*)
If[EvenQ[Length@ls], Developer`ToPackedArray@tmp,
Developer`ToPackedArray@RotateRight@tmp]
]

ls = Developer`ToPackedArray[Table[i, {i, 1, 10^6}]];

Nest[fn2, ls, 30]

{951425}

 

ซึ่งจริงๆแล้วปัญหานี้ก็คือรูปแบบหนึ่งของปัญหาที่เรียกว่า Josephus problem ครับ เราสามารถเขียนด้วย Mathematica

สั้นๆได้ตามนี้เลยครับ

Needs[“Combinatorica`”]
Last@InversePermutation[Josephus[10^6, 2]]
951425

 

ปล. อาจจะคำนวณนานหน่อยนะครับ 🙂