R 3.5.1 กับ RLink

ดูเหมือนวิธีเรียกใช้งาน RLink (Mathematica < 11.3) กับ R เวอร์ชั่นใหม่ 3.5.1 จะมีปัญหา วิธีที่เริ่มจะมีการแชร์ก็คือให้เปลี่ยนไปใช้ JAVA ตัวที่มากับ rJava แทน แทนที่จะใช้ตัวที่ Mathematica มีมาให้ ดูตัวอย่างข้างล่างนี้ครับ

Needs["RLink`"]

JLink`UninstallJava[]

InstallR["RHomeLocation" -> 
  "C:\\Data-Work\\Programs\\R-3.5.1\\App\\R-Portable",
 "NativeLibLocation" -> 
  "C:\\Data-Work\\Programs\\R-3.5.1\\App\\R-Portable\\library\\rJava\\\
jri\\x64"]

REvaluate["R.Version()"]

ที่มา https://community.wolfram.com/groups/-/m/t/1381936

วาดกราฟ exponential sums

พอดีว่าไปเห็นกราฟที่วาดจาก Exponential sums จากเวบ https://www.maths.unsw.edu.au/about/exponential-sums แล้วดูว่าสวยดีเลยอยากลองทำดูบ้างด้วย Mathematica

การวาดกราฟจาก exponential sums หรือที่เขียนอยู่ในรูปแบบ \sum_{n=1}^N e^{2\pi if(n)} ที่ทำนี้ก็คือถ้าเราค่อยๆบวกเข้าไปทีละเทอมและเอาค่าที่ได้มาพล็อตกราฟใน 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, 1, NP, 1, Appearance -> "Labeled"}]

 

fn[n_] := n/dd + n^2/mm + n^3/yy /. {dd -> 23, mm -> 11, yy -> 78}
NP = 10000;
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]
 ,
 {np, 3, NP, 1}]

 

 

 

 

mingw64 libdatrie-libthai-thpronun

ผมเอา code ของ libdatrie 0.2.9 , libthai 0.1.28 และ thpronun 0.2.0 มาคอมไพล์โดยใช้ msys2, mingw64 ครับ

เผื่อมีประโยชน์ประหยัดเวลากันบ้างครับ

การเอาไปใช้งานก็จะต้องติดตั้ง msys2 ก่อนนะครับ จากนั้นก็เพิ่ม PATH ของ mingw เข้าไป เช่น c:\msys64\ming64\bin

ใช้ OpenMP กับ Rcpp

ที่มา https://github.com/RcppCore/Rcpp/blob/master/inst/examples/OpenMP/OpenMPandInline.r

ตัวอย่าง Rcpp กับ OpenMP

library(inline)

openMPCode <- ‘

// assign to C++ vector

std::vector<double> x = Rcpp::as<std::vector< double > >(xs);

size_t n = x.size();

#pragma omp parallel for shared(x, n)

for (size_t i=0; i<n; i++) {

x[i] = ::log(x[i]);

}

return Rcpp::wrap(x);

settings <- getPlugin("Rcpp")
settings$env$PKG_CXXFLAGS <- paste('-fopenmp', settings$env$PKG_CXXFLAGS)
settings$env$PKG_LIBS <- paste('-fopenmp -lgomp', settings$env$PKG_LIBS)

funOpenMP <- cxxfunction(signature(xs="numeric"), body=openMPCode, plugin="Rcpp", settings=settings)

z <- seq(1, 2e6)

funOpenMP(z)

Microsoft Edge เปิด localhost ไม่ได้

พอดีว่าต้องแก้งานที่ใช้ Shiny บางอย่างในเครื่องของที่ทำงานและทดลองใช้กับ MS Edge เพื่อเปิดงานจาก localhost:127.0.0.1 แล้วปรากฏว่ามันเปิดไม่ได้ บอกว่า “Hmmm…can’t reach this page”  แต่พอทดลองเปิดกับ Chrome แล้วใช้ได้ วิธีที่ผมแก้ปัญหาคือ เปิด command prompt (cmd) มาแล้วพิมพ์คำสั่งนี้ลงไปครับ

CheckNetIsolation LoopbackExempt -a -n=Microsoft.MicrosoftEdge_8wekyb3d8bbwe

เพื่อให้ Edge มัน loopback กลับมาที่ localhost ครับ

หรือไม่ก็พิมพ์ “about:flags”  ในช่อง url ของ MS Edge แล้ว tick ที่ ช่อง Allow localhost loopback ครับ

 

 

การติดตั้ง TeX Live บน Windows 10

มีคนถามมาว่าจะติดตั้ง TeX Live (https://tug.org/texlive/) บน Windows 10 ต้องทำอย่างไร

อย่างแรกเลยก็ต้องไป download ตัวติดตั้งมาก่อน ผมแนะนำว่า load มันมาทั้งหมดเลยแล้วกันโดยไป load ตัว iso จาก http://mirror.ctan.org/systems/texlive/Images/  มันอาจจะมีหลายชื่อที่มีสกุล .iso ก็เลือกมาสักตัวแล้วกันครับ เช่น texlive.iso ซึ่งมันจะมีขนาดใหญ่หน่อยครับ ประมาณ 3-4 GB

พอ download เสร็จแล้วก็เปิด folder ที่โหลดเก็บไว้ จากนั้นclick ขวาที่ชื่อไฟล์ที่โหลดมาครับ แล้วก็เลือก Mount ซึ่งถ้ามัน Mount หรือต่อกับไฟล์นี้ได้สำเร็จ มันจะเปิด explorer ของไดร์ที่มีตัวติดตั้ง TeX Live ครับ ก็ให้ double click ที่ไฟล์ชื่อ install-tl-windows.bat ได้เลยครับ จากนั้นก็ตอบคำถามไปเรื่อยๆ แล้วก็รอจนมันติดตั้งเสร็จครับ

 

ติดตั้ง CmdStan บน Windows 10

ตัวอย่างการติดตั้ง CmdStan (2.17.1) บน Windows 10 ครับ ในที่นี้ ผมใช้กับ Rtools 3.5 ครับ

เริ่มจากการที่เราไป download ตัว zip ของ CmdStan แล้วก็ extract ไว้ที่ไหนสักแห่งตามต้องการครับ

จากนั้นก็เปิด Command Prompt ของ Windows ครับ แล้วใช้คำสั่ง cd เพื่อเปลี่ยนไปยัง path ของ CmdStan ที่ extract ไว้ครับ

แล้วก็ทำการสร้างไฟล์ ชื่อ local (ไม่มีสกุลต่อท้าย) ในโฟลเดอร์ที่ชื่อ make ที่อยู่ path ของ CmdStan โดยในไฟล์ local นี้มีสองรรทัดนี้ครับ

CC=g++

CXX=g++

จากนั้นก็พิมพ์ PATH = c:\rtools\mingw_64\bin;c:\rtools\bin;$PATH เพื่อทำการเซ็ตค่า PATH ให้รู้จักตัว compiler ใน Rtools

แล้วก็ทำการพิมพ์ make build เพื่อทำการ compile ตัว CmdStan ได้เลยครับ

เมื่อเสร็จแล้วจะมีข้อความบอกครับ จากนั้นลองทำสอบกับตัวอย่างที่มาด้วยโดยพิมพ์

make /examples/Bernoulli/Bernoulli.exe

เพื่อสร้างตัวโมเดลจากไฟล์ .stan

จากนั้นก็ลองใช้งานโมเดลกับข้อมูลที่มีมาด้วย โดยพิมพ์

examples\Bernoulli\Bernoulli.exe sample data file=examples/Bernoulli/Bernoulli.data.R

 

เผื่อสงสัยกัน เหตุผลที่ผมใช้ Cmdstan แทนที่จะใช้ rstan เพราะผมใช้งานผ่าน Mathematica ครับ