Archive

Posts Tagged ‘Wolfram Language’

เขียนcodeแก้ปัญหาจากpantipเล่น

November 1st, 2018 Comments off

https://pantip.com/topic/38221485/

code สำหรับปัญหานี้

https://www.wolframcloud.com/objects/sompob/test/pantip_01Nov18.nb

Manipulate[
Show[
  Graphics[{EdgeForm[Pink], FaceForm[Blue], 
    Rectangle[{1 - Cos[-15 Degree], 0}, {x, 
      x - (1 - Cos[-15 Degree])}]}],
  Graphics[{EdgeForm[LightBlue], FaceForm[Black], 
    Rotate[Rectangle[{0, 0}], -15 Degree, {1, 0}],
    PlotRange -> {{-2, 2}, {-2, 2}} }],
  Graphics[
   Text["Area of the Big Square:" <> 
     ToString[(x - (1. - Cos[15 Degree]))^2/(0.5*Sin[15 Degree]*
         Cos[15 Degree])], {0.25, 1.5}]]
   ],
 {{x, 1.259, "side"}, 0.1, 2, 0.001}
 ]

 

 

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

July 3rd, 2017 No comments

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

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

 

Categories: Mathematica Tags:

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

June 2nd, 2017 No comments

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

โปรแกรมที่เขียนนี้จะวาดเส้นแนวนอนที่มีระยะห่างตามที่กำหนดและก็สุ่มวางเข็มตามขนาดและจำนวนที่ต้องการลงไปแล้วนับดูว่าที่กี่เล่มที่ทับเส้น จากนั้นก็คำนวณประมาณค่า pi จากสูตรที่เขียนไว้ที่ https://en.wikipedia.org/wiki/Buffon%27s_needle ซึ่งก็คือ

โดย l คือความยาวเข็ม, n  คือจำนวนเข็ม, t คือระยะห่างระหว่างเส้นบรรทัด และ h คือจำนวนเข็มที่ทับเส้นบรรทัด

สำหรับวาดเส้นของเข็มและเส้นบรรทัด


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

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

สำหรับประมาณค่า pi


estimatedPi[needlelength_, nneedles_, linespace_, ncross_] :=
2.*needlelength*nneedles /(linespace*ncross)

สำหรับ simulation


run[nl_, nfl_, ll_, diff_] :=
Module[{fls, ls, outls, pnts, ncross},
fls = horizontalLine[diff, 10, {0, 0}, nfl];
ls = Table[
genNeedle[{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];
ncross = Length@Flatten[outls, 2];
Graphics[{fls, ls, Red, PointSize[Medium],
If[Length@Flatten[outls, 2] > 0, pnts]},
PlotLabel ->
Style["จำนวนเข็มที่ทับเส้น:" <> ToString@ncross <>
" π≈" <>
ToString@estimatedPi[ll, nl, diff, ncross], FontSize -> 20,
Bold]]];

ทดลองเล่นดู โดยใช้เข็ม 100 เล่ม และกำหนดให้มีเส้นบรรทัด 10 เส้น โดยระยะห่างระหว่างบรรทัดกับความยาวเข็มเท่ากัน


nlines = 10;
nneedles = 100;
linelength = 1;
linespace = 1;
run[nneedles, nlines, linelength, linespace]

สำหรับmathematica notebook สามารถdownloadได้จากhttps://github.com/slphyx/Buffon-s-Needle

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

February 23rd, 2017 Comments off

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

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

 

 

three lectures of wolfram language by prof Richard Gaylord

May 13th, 2016 Comments off

part 1

part 2

part 3

 

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

May 11th, 2016 Comments off

พอดีไปเจอ 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

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

 

Categories: Mathematica Tags: ,

เปรียบเทียบรูปแบบคำสั่ง C# กับ Wolfram

December 16th, 2015 Comments off

c#wolfram

Categories: Mathematica Tags: ,

Mathematica : equivalent point

September 29th, 2015 Comments off

มีคนโพสท์ถามที่พันทิป http://pantip.com/topic/34236148

pt1

pt1

pt1

pt1

ผมได้ลองใช้ Mathematica เขียนแบบง่ายๆได้ตามนี้ครับ

pantipPlot

โดย code ที่เขียนก็ประมาณนี้ครับ



data={{0.,4.04},{1.,4.6},{2.,5.01},{3.,5.38},{4.,5.84},{4.5,6.31},{5.,9.99},{5.5,10.7},{6.,10.97},{6.5,11.12},{7.,11.22},{8.,11.35},{9.,11.44},{10.,11.51},{11.,11.57},{12.,11.62}};

SplitDat[np1_List,np2_List]:=Module[{dat1,dat2},
dat1=data[[np1[[1]];;np1[[2]]]];
dat2=data[[np2[[1]];;np2[[2]]]];
{dat1,dat2}
];

genLineEq[datsplitted_,x_]:=Module[{dat1,dat2,lm1,lm2},
dat1=datsplitted[[1]];
dat2=datsplitted[[2]];
lm1=LinearModelFit[dat1,x,x];
lm2=LinearModelFit[dat2,x,x];
{lm1,lm2}
];

pantipPlot1[pospnts1_List,pospnts2_List,verpos1_,verpos2_,wantx_]:=Module[{x,eq1,eq2,eq3,xx,wanty},
{eq1,eq2}=genLineEq[SplitDat[pospnts1,pospnts2],x];
eq3=Fit[{{verpos1,((eq2[verpos1]-eq1[verpos1])0.5)+eq1[verpos1]},{verpos2,((eq2[verpos2]-eq1[verpos2])0.5)+eq1[verpos2]}},{1,xx},xx];
wanty=eq3/.{xx->wantx};

Show[Plot[{eq1[x],eq2[x]},{x,0,14},PlotRange->{0,13},PlotLabel->Style["Standardization NaOH with KHP",Bold,Medium],Frame->True,FrameLabel->{"V of NaOH (ml)","pH of KHP"},GridLines->Automatic,GridLinesStyle->Directive[Dotted, Gray],PlotStyle->{{Dashed,Gray},{Dashed,Gray}}],ListPlot[data,Joined->True,PlotStyle->Blue,PlotMarkers->Automatic],
Graphics[{Dashed,Line[{{verpos1,eq1[verpos1]},{verpos1,eq2[verpos1]}}]}],
Graphics[{Dashed,Line[{{verpos2,eq1[verpos2]},{verpos2,eq2[verpos2]}}]}],
Graphics[{Red,Dashed,Line[{{verpos1,((eq2[verpos1]-eq1[verpos1])0.5)+eq1[verpos1]},{verpos2,((eq2[verpos2]-eq1[verpos2])0.5)+eq1[verpos2]}}]}],
Graphics[{{Red,Line[{{wantx,0},{wantx,wanty}}]},Text[wanty,{wantx,wanty},{-1,0}]}]
]
];

Manipulate[pantipPlot1[{1,endLine1},{begLine2,16},begVerLeft,begVerRight,xwant],
{{endLine1,6},2,8,1,Appearance->"Labeled"},{{begLine2,8},8,16,1,Appearance->"Labeled"},
{{begVerLeft,3},1,6,Appearance->"Labeled"},
{{begVerRight,5},4.5,13,Appearance->"Labeled"},
{xwant,0,12,Appearance->"Labeled"}
] 

แสดงตำแหน่งที่เกิดสุริยุปราคาด้วย Mathematica (Wolfram Language)

March 19th, 2015 Comments off

คำสั่งที่ใช้ SolarEclipse
eclipse2015

http://community.wolfram.com/groups/-/m/t/462064?p_p_auth=4stEDbzz

ภาษาวุลแฟรม วอลแฟรม โวลแฟรม

April 28th, 2014 Comments off

ภาษา Wolfram นี้ที่จริงก็คือรูปแบบคำสั่งหรือภาษาที่ใช้งานในโปรแกรม Mathematica ครับ แต่อาจเป็นเรื่องของการตลาดที่ทำให้มีการแยกตัวของภาษาออกมาจากโปรแกรม Mathematica แล้วตั้งชื่อใหม่ให้กับภาษานี้ Stephen Wolfram เจ้าของบริษัทและเป็นผู้ที่คิด/สร้าง Mathematica ถึงกับ โพสท์ถามเลยว่าจะเรียกรูปแบบคำสั่งหรือภาษาที่ใช้ใน Mathematica นี้ว่าอะไรดี http://blog.stephenwolfram.com/2013/02/what-should-we-call-the-language-of-mathematica/  แต่สุดท้ายก็มาจบที่ Wolfram Language ครับ ถ้าสนใจและอยากทดลองใช้งานภาษานี้ให้ลองไปเล่นที่ Wolfram Programming Lab ดูครับ หรืออาจจะหา Raspberry Pi มาใช้งานสักตัวดูครับ http://www.wolfram.com/raspberry-pi  เพราะเค้าให้ใช้ Mathematica ฟรีครับ ส่วนใครที่อยากเรียนรู้การใช้งานพื้นฐานภาษา Wolfram นี้ผมแนะนำให้อ่านหนังสือนี้ครับ An Elementary Introduction to the Wolfram Language เขียนโดย Stephen Wolfram เองเลยครับ ซึ่งอ่านได้ฟรีที่ http://www.wolfram.com/language/elementary-introduction/

ลองเล่นและเรียนรู้ดูครับ ภาษานี้สนุกครับ

 

 

 

 

 

%d bloggers like this:
Locations of visitors to this page