Mathematica package รวบรวมคำสั่งเมีย

ศรีภรรยาผมขอบมีคำถามเกี่ยวกับคอมพิวเตอร์แปลกๆมาถามเสมอ เช่นไอ้โน้น ไอ้นี่ทำไง สุดท้ายผมก็ต้องทำอยู่ดีขัดคำสั่งไม่ได้ โดยแต่ล่ะคำถามก็จะไปจบที่ผมต้องเขียนโปรแกรมเพื่อแก้ปัญหาให้ ซึ่งส่วนใหญ่ผมจะเขียนโดยใช้ภาษา Wolfram ครับ โดยทุกวันนี้เริ่มมีจำนวนคำสั่งมากขึ้นเรื่อย ตอนนี้ก็น่าจะประมาณ 20 คำสั่งได้ ผมก็เลยคิดว่าถ้าเช่นนั้นผมก็เอามารวมเป็น package เลยแล้วกันเผื่อว่าใครอยากจะใช้ด้วย โดยคำสั่งส่วนมากจะเกี่ยวกับปัญหาทางด้าน bioinformatics ครับ ซึ่งมันอาจจะมี package หรือโปรแกรมภาษาอื่นทำในสิ่งที่ผมเขียนไว้นี้ไว้หมดแล้วก็ได้ แต่ผมไม่ได้เช็คนะครับเพราะไม่มีเวลาค้นดูและเวลามันจำกัดครับ ช้าไม่ได้เพราะผมอาจถึงแก่ชีวิตได้

ใครสนใจลองดูที่ https://github.com/slphyx/Nao ผมจะทยอยเพิ่มจำนวนคำสั่งเรื่อยๆครับ

 

ปัญหาเข็มของบึฟฟองBuffon’s Needle

เห็นมีคนพูดถึงปัญหานี้ในกลุ่มผู้ใช้ R ของไทยเราเลยอยากทำบ้างแต่ใช้ภาษา Wolfram แทน เพราะจะเขียนได้สั้นมาก

โปรแกรมที่เขียนนี้จะวาดเส้นแนวนอนที่มีระยะห่างตามที่กำหนดและก็สุ่มวางเข็มตามขนาดและจำนวนที่ต้องการลงไปแล้วนับดูว่าที่กี่เล่มที่ทับเส้น

สำหรับวาดเส้น


genLine[{x_, y_}, θ_, len_] :=
Line[{{x + 0.5 len Cos[θ],
y + 0.5 Sin[θ]}, {x – 0.5 len Cos[θ],
y – 0.5 len Sin[θ]}}]

fixLine[diff_, len_, {x0_, y0_}, n_] :=
Table[Line[{{x0, y0 + (i diff)}, {len, y0 + (i diff)}}], {i, n}]

สำหรับ simulation


run[nl_, nfl_, ll_, diff_] := Module[{fls, ls, outls, pnts},
fls = fixLine[diff, 10, {0, 0}, nfl];
ls = Table[
genLine[{RandomReal[{0, 10}], RandomReal[{0, nfl*diff}]},
RandomReal[π], ll], {nl}];
outls =
Table[Solve[{x, y} ∈ RegionIntersection[fls[[i]], #], {x,
y}] & /@ ls, {i, Length@fls}];
pnts = Point[{x, y}] /. Flatten[outls, 2];
Graphics[{fls, ls, Red, PointSize[Medium],
If[Length@Flatten[outls, 2] > 0, pnts]},
PlotLabel ->
Style["จำนวนที่ทับเส้น:" <> ToString@Length@Flatten[outls, 2],
FontFamily -> "TH Krub", FontSize -> 20, Bold]
]
];

ทดลองเล่นดู

 

ตัวอย่างการใช้ InputField ใน Manipulate

ตัวอย่างการใช้ InputField ใน Manipulate ของ Mathematica ครับ

ใน Manipulate นอกเหนือจาก พวก Slider และ Menu ต่าง ๆแล้ว เราสามารถที่จะใช้ InputField เพื่อรับค่าจาก users ได้โดยตรงครับ รายละเอียดการใช้งานต่างๆ สามารถดูเพิ่มเติมได้ที่ http://reference.wolfram.com/language/ref/InputField.html ครับ

 

 

คำแนะนำสำหรับการทำ GUI ใน Mathematica

พอดีไปเจอ slides http://library.wolfram.com/infocenter/Conferences/7977/ แนะนำการทำ GUI ใน Mathematica โดย Faisal Whelpley and Lou D`Andria ที่presentในงาน wolfram technology conference 2011 มีการรวบรวม tips & tricks ที่น่าสนใจเยอะ โดยเฉพาะการใช้พวก Dynamics, DynamicsModule

เดี่ยวถ้าว่างๆจะมาสรุปให้ฟัง 🙂