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

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,

My Green Apple

ทดลองเล่น WolframCloud เจ๋งมากกกกกก เขียนสั้น deploy ก็ง่าย (เชียร์ให้คนมาใช้กันเยอะๆ 555)   

NetChain กับ NetGraph

เวลาสร้าง neural network ใน Mathematica นั้นมันจะมีสองคำสั่งที่ใช้กันหลักๆก็คือ NetChain กับ NetGraph แต่สองคำสั่งนี้จะต่างกันตรงที่ NetChain มันจะเรียงแต่ล่ะ layer ต่อๆกันเป็น linear เลยในขณะที่ NetGraph เนี้ยมันจะยืดหยุ่นมากกว่าโดยที่เราสามารถที่จะบอกได้ว่าแต่ล่ะ layer เนี้ยต่อกันยังไง เช่น    

แสดง output จาก ggplot ใน Mathematica

ลองดูตัวอย่างที่ผมเขียนนี้ครับ  ไอเดียก็คือว่าให้มันเขียนภาพเป็นไฟล์ pdf ด้วยคำสั่ง ggsave แล้วเรียกกลับมาใน Mathematica ด้วย Import  โค้ดที่เขียนนี้ดัดแปลงมาจาก https://mathematica.stackexchange.com/questions/16726/how-to-get-a-plot-generated-by-r-returned-in-an-output-cell      

RDotNet 1.7 ใช้งานได้กับ R.3.3-4 เท่านั้น

ผมเขียนโปรแกรมเล็กๆที่เรียกใช้งาน RDotNet ไว้หลายตัว ซึ่งมันก็ทำให้สะดวกมากๆในการที่จะเรียก R มาใช้งานใน C# ซึ่งก่อนหน้านี้จะใช้งานกับ R ที่ค่อนข้างเก่าหน่อยพวก R 3.3-4 แต่พอมี library บางตัวที่บังคับให้ต้อง upgrade ตัว R ไป version ที่สูงขึ้นอย่าง 3.5 นี้ทำให้โปรแกรมที่เขียนหลายตัวมันมีปัญหาทันที เหตุผลก็เพราะมัน GetInstance() ไม่ได้ มีการพูดถึงปัญหานี้ที่ https://github.com/jmp75/rdotnet/issues/70 ตอนนี้ที่ทำได้ก็คือถ้า library ที่อยากใช้นั้นถ้าไม่ได้ใช้ features ที่มันมีมาใหม่นั้นจริงๆก็ต้องใช้ R ตัวเก่าไปก่อน  

วาดกราฟ exponential sums

พอดีว่าไปเห็นกราฟที่วาดจาก Exponential sums จากเวบ https://www.maths.unsw.edu.au/about/exponential-sums แล้วดูว่าสวยดีเลยอยากลองทำดูบ้างด้วย Mathematica การวาดกราฟจาก exponential sums หรือที่เขียนอยู่ในรูปแบบ ที่ทำนี้ก็คือถ้าเราค่อยๆบวกเข้าไปทีละเทอมและเอาค่าที่ได้มาพล็อตกราฟใน complex plane โดยที่แกนนอนคือจำนวนจริงและแกนตั้งคือจำนวนจินตภาพ ลองดูที่โค้ดน่าจะเข้าใจมากขึ้นครับ fn[n_] := Log[n]^4 NP = 5000; ls = Accumulate[Table[Exp[2 \[Pi] I fn[n]] // N, {n, 1, NP}]]; Manipulate[ ListPlot[{Re@#, Im@#}\[Transpose] &@(ls[[1 ;; np]]), Joined -> True, AspectRatio -> Full, PlotStyle -> Black, PlotRange -> {{-5, 70}, {-60, 20}}] , {np,

มาลองทำให้โค้ดMathematicaรันเร็วขึ้น

โค้ดที่เขียนด้วยMathematicaหรือภาษา Wolfram นั้นมันจะมีวิธีที่ช่วยให้มันรันได้เร็วขึ้นอยู่หลายวิธีครับ ขึ้นกับปัญหาและวิธีการเขียน ที่จะโชว์ให้ดูนี้ผมก็ใช้เทคนิคง่ายๆด้วยการทำ parallel ด้วยคำสั่ง ParallelTable และ compile ด้วยคำสั่ง Compile ครับ  โค้ดตัวอย่างที่จะเอามาลองนี้เป็นโค้ดที่ใช้วาดรูป Mandelbrot set ครับ แบบที่ 1 เป็นโค้ดเริ่มต้นที่ยังไม่มีการทำให้มันเร็วครับเขียนโดยใช้ loop จากคำสั่ง Table AbsoluteTiming[ test1 = Block[{i, x, p}, Table[i = 0; x = 0. I; p = r + I c; While[Abs@x <= Sqrt[2] && i < 9^3, x = x^2 + p; ++i];

mingw64 libdatrie-libthai-thpronun

ผมเอา code ของ libdatrie 0.2.9 , libthai 0.1.28 และ thpronun 0.2.0 มาคอมไพล์โดยใช้ msys2, mingw64 ครับ เผื่อมีประโยชน์ประหยัดเวลากันบ้างครับ libdatrie 0.2.9 libthai 0.1.28 thpronun 0.2.0 การเอาไปใช้งานก็จะต้องติดตั้ง msys2 ก่อนนะครับ จากนั้นก็เพิ่ม PATH ของ mingw เข้าไป เช่น c:\msys64\ming64\bin