SakNgoi

แสดงผลลัพธ์จาก wolfram script แบบกราฟฟิค

ตั้งแต่ Wolfram Engine สามารถใช้ได้ฟรีนี่ทำให้ผมมีอะไรได้ลองเล่นเยอะเลย ถึงแม้จะมี Wolfram Mathematica อยู่แล้วนะเนี้ย ตัว Wolfram Engine ที่เราสามารถโหลดมาใช้ได้ฟรี(http://www.wolfram.com/engine/) นี้จะเป็นแบบ text mode ไม่มี UI มาให้ ก็อาจจะทำให้ลำบากหน่อยถ้าอยากจะดูผลลัพธ์ที่เป็นกราฟฟิค เพราะอาจต้อง Export เป็นไฟล์ไปก่อนแล้วค่อยเปิดดู แต่ถ้าอยากจะให้ตัว Wolfram Engine มันแสดงผลกราฟฟิคให้ดูเราก็สามารถที่จะใช้ตัวแพ็กเกจ JavaGraphics ช่วยได้ครับวิธีก็เพียงโหลด <<JavaGraphics` ก่อนที่จะให้มันแสดงผลลัพธ์กราฟฟิคของคำสั่งที่ต้องการ ตัวอย่างครับ หรือถ้าใครสนใจจะใช้ผ่าน UI อย่าง jupyter ก็ลองดูที่ projects ตามนี้ดูนะครับ https://github.com/Ludwiggle/JWLS https://github.com/mmatera/iwolfram https://github.com/WolframResearch/WolframLanguageForJupyter สวนตัวแนะนำ WolframLanguageForJupyter ครับ วิธการติดตั้งที่อยากแนะนำก็คือลง Anaconda พอลงเสร็จก็รัน Anaconda prompt แล้วรัน wolframscript จากนั้นก็ติดตั้ง WolframLanguageForJupyter ตามวิธีที่เขาแนะนำไว้ครับ

Makefile สำหรับใช้กับ แพ็คเกจที่ใช้ RcppArmadillo

พอดีว่าเขียนแพ็คเกจที่มีเรียกใช้งาน armadillo ใน Rcpp แล้วมีปัญหาเวลา compile ในเรื่องของ linking คำแนะนำที่เจอบ่อยๆก็คือให้สร้างไฟล์ Makefile หรือ Makefile.win ไว้ที่เดียวกันกับ src โดยที่ใน Makefile ก็มีการประกาศตัวแปรตามข้างล่างนี้เลยครับ CXX_STD = CXX11 PKG_CXXFLAGS = $(SHLIB_OPENMP_CXXFLAGS) PKG_LIBS = $(SHLIB_OPENMP_CXXFLAGS) $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS) หรือแต่ถ้าไม่อยากให้มีปัญหานี้ตั้งแต่แรกก็ให้ใช้ Rcpp แล้วก็สร้างแพ็คเกจจากตัวอย่างที่เขาทำไว้แล้วจากคำสั่ง RcppArmadillo.package.skeleton ครับ

Kung package แพ็คเกจกุ้ง

แพ็คเกจกุ้งเป็นแพ็คเกจภาษา R ที่ผมเขียนขึ้นมาสำหรับใช้สร้าง Shiny App สำหรับโค้ดของโมเดลที่สร้างจากสมการอนุพันธ์หรือ ODE ที่ใช้ตัว solver จากแพ็คเกจที่ชื่อ deSolve ครับ ไอเดียก็มีเพียงว่าจากสมการ ode ที่สร้างขึ้นมาด้วยถ้าตัวแปรในสมการมีการเปลี่ยนแปลงค่า ผลลัพท์ที่ออกมามันจะเปลี่ยนแปลงไปอย่างไร การเขียนใน R นั้เราก็อาจจะใช้คำสั่ง manipulate มาช่วยได้แต่มันก็ยังมีข้อจำกัดเรื่องจำนวนของตัวแปรที่สามารถเรียกมาใช้ได้ เพราะมันขึ้นอยู่กับขนาดหน้าจอของตัว plot ผมเลยคิดว่าถ้าใช้ shiny มันน่าจะดูดีกว่าและสามารถใส่ตัวแปรได้มากกว่า ขึ้นกับการออกแบบ ui แต่การเขียน shiny ก็ไม่ใช่ว่าจะง่ายสำหรับคนเริ่มเรียนรู้ R ผมเลยคิดว่าน่าจะเขียนแพ็คเกจที่สามารถช่วยเรื่องนี้ได้ แพ็คเกจที่เขียนก็พยายามทำให้มันใช้ง่ายมากที่สุดจาก code ที่มีอยู่แล้ว โดยผู้ใช้เพิ่มคำสั่งไม่มากก็สามารถที่จะสร้าง shiny application ได้แล้ว ตัวอย่างเช่น ถ้าผู้ใช้มี code อยู่แล้วตามนี้ ซึ่งมันจะคำนวณและ plot กราฟให้ตามค่าของตัวแปรพารามิเตอร์ที่กำหนดไว้ เช่น gamma = 0.14286 และ beta = 0.6 […]

เรื่อง plane geometry ใน Mathematica 12

Wolfram Mathematica 12 ที่เพิ่งจะเปิดตัวไปมีความสามารถเพิ่มขึ้นมาเยอะพอสมควรเลย และหนึ่งจากหลายความสามารถที่เพิ่มเข้ามานี้ที่ผมชอบมากก็คือความสามารถในเรื่องเรขาคณิตที่เรียกว่า Synthetic Geometry เจ้า Synthetic Geometry ก็เป็นสาขาที่ศึกษาเรขาคณิตที่หาข้อสรุปจากการใช้เรื่องสัจพจน์หรือข้อความคาดการณ์ต่างๆเป็นเครื่องมือหลักในการแก้ปัญหา ลองดูความหมายเพิ่มเติมที่ https://en.wikipedia.org/wiki/Synthetic_geometry  นะครับ ใน Mathematica 12 นี้เราสามารถที่จะสร้างไดอะแกรมของปัญหาได้จากคำสั่ง GeometricScene เช่น ถ้ามีสามเหลี่ยมที่มีมุมทั้งสามมุมอยู่ที่ จุด (0,0),(1,0),(0,1) หรือสามเหลี่ยมมุมฉากที่มีฐานและความสูงคือ 1 หน่วย เราก็สามารถสร้างได้แบบนี้ครับ จากคำสั่งด้านบน GeometricScene เราเพียงแต่บอกว่าเรามีจุดอะไรบ้าง ซึ่งในที่นี้ก็คือจุด a,b,c ที่อยู่ที่ {0,0},{1,0},{0,1} ตามลำดับ และก็บอกว่าให้สร้าง สามเหลี่ยมโดยใช้จุดที่กำหนดไว้ จากนั้นผมทดลองหาพื้นที่ของสามเหลี่ยมนี้ ซึ่งก็ผลลัพธ์ที่ได้ก็คือ 1/2 มาลองทำอะไรที่มันดูซับซ้อนขึ้นมาอีกหน่อยครับ  สมมุติว่าผมต้องการหาพื้นที่ของสามเหลี่ยมที่มีเหลี่ยมทั้งสามที่จุด k,l,n และมีวงกลมที่ผ่านจุดทั้งสามนี้ โดยผมกำหนดให้ว่าระยะระหว่างจุด k และ n  คือ 3 หน่วย และมีจุด m อีก หนึ่งจุดที่อยู่ด้านนอกวงกลม […]

ซูมกราฟใน Mathematica

กราฟที่ได้จากคำสั่ง Plot ใน Mathematica นี่จะ click ซูมเข้าไปดูในบริเวณที่สนใจไม่ได้ ต้องคอยมากำหนด Range ที่จะ plot เอาเองเพื่อดูบริเวณที่สนใจ แต่ล่าสุดก็มีคนเขียนเป็น Function สำหรับทำให้เราสามารถที่จะเลือกซูมดูบริเวณที่สนใจในกราฟได้ครับ ลองไปดูได้ที่ https://resources.wolframcloud.com/FunctionRepository/resources/DragZoomPlot ผมลองโหลดมาเล่นแล้วนี่สะดวกมากๆครับ

ตัวอย่างใช้งาน notebook ของ Mathematica

ผมเขียน code เพื่อสร้างกราฟเพื่อดูว่าผลลัพธ์จากโมเดลที่ผมสร้างขึ้นมานั้นมันเหมือนหรือต่างข้อมูลจริงจากคนไข้อย่างไร โดยเขียนให้มันสร้าง notebook ขึ้นมาพร้อมกับรัน code สำหรับสร้างกราฟเลย โดยที่ในแต่ล่ะ notebook จะมีข้อมูลของคนไข้ประมาณ 300 คน ตามตัวอย่างนี้ครับ ทีนี่ผมอยากจะ save กราฟที่สร้างขึ้นในแต่ล่ะ cell เป็น pdf จากไฟล์ notebook แต่ล่ะไฟล์ ซึ่งในแต่ล่ะ notebook จะมีประมาณ 5-10 cells ได้ ถ้าไปมัวเลือก save ในแต่ล่ะ cells คงต้องเสียเวลามาก เพราะมันมีหลายไฟล์ และผมก็มีหลายโมเดล วิธีที่ผมทำก็คือเขียน code มาเปิด notebook แต่ล่ะไฟล์แล้วก็ให้มันเลือกเซฟเฉพาะ กราฟของแต่ล่ะ cell ที่ต้องการโดย code ที่เขียนก็จะประมาณนี้ครับ โดยคำสั่งหลักที่ใช้ก็คือ NotebookOpen, SelectionMove และ NotebookRead ครับ NotebookOpen ก็เปิดไฟล์ notebook […]

คำแนะนำการใช้งาน Mathematica notebook

Notebooks จาก Mathematica นี่ปฏิวัติเรื่อง workflow ของงานด้านการคำนวณเลยที่เดียวครับ ไอเดียที่แสดงผลลัพธ์ต่อท้ายคำสั่ง สามารถที่เซฟและส่งต่อผลลัพธ์ในลักษณะเหมือนสมุดรายงานมีทั้งภาพ เสียง การเคลื่อนไหว แถมมีความสามารถเหมือน ms word กับ ms power point รวมกัน บวกกับสามารถที่จะ export เป็นได้หลายformat มาก และความสามารถอื่นๆอีกมากมาย ไม่แปลกใจที่ไอเดียจะถูกลอกไปในภาษาอื่นๆ โดยเฉพาะ R กับ Python แต่ความสามารถของ notebooks จากทั้งสองภาษายังห่างไกลจากของ Mathematica มาก Video ที่ผมแชร์มานี้ก็เป็นเพียงตัวอย่างการใช้งาน notebook ของ Mathematica ให้เกิดประสิทธิภาพสูงสุด แต่ก็ยังมีอีกหลายความสามารถที่ไม่ได้พูดถึงครับ

Back to top
%d bloggers like this: