Juliaを使ってみる

  • こちらにGaussian Free Fieldの記事があり、Juliaでのシミュレーションがある
  • Juliaってなんだっけ、と言うと、こちらにあるようにpythonとかRとかのようにデータ解析に使いやすくできていて、速い、というものだという
  • まずはインストール
sudo pacman -S julia
    • して、コンソールから "julia"コマンドを発行する
    • いきなり、Gaussian Free Fieldのソースをコピペすると、パッケージusing Compose, Gadflyの行で止まるので
    • パッケージの入れ方を調べる
      • Pkg.add("Compose")でよいということで、やると、gitでブロックがかかっている、とエラーが出る
julia> Pkg.add("Compose")
INFO: Initializing package repository C:\Users\ryamada\.julia\v0.4
INFO: Cloning METADATA from git://github.com/JuliaLang/METADATA.jl
fatal: unable to connect to github.com:
github.com[0: 192.30.252.130]: errno=No error

ERROR: failed process: Process(`git clone -q -b metadata-v2 git://github.com/Jul
iaLang/METADATA.jl METADATA`, ProcessExited(128)) [128]
 in run at process.jl:531
    • 少し調べると、gitの使い方で以下を、コマンドプロンプトで発行するとよいらしいので、やってみると、うまく行く(gitコマンドでのアクセスアドレスをhttpsを頭につけたものにする、ということらしい)
  • 速いってことなんだけれど、パッケージを入れて、using xxx とすると、コンパイルするらしくて、そこは時間がかかるなー
  • そのあと、メッセージが出て、
Pkg.add("Cairo")
Pkg.add("Fontconfig")
  • せよ、その後、ファイルを一つ消せ、とか、やり直せ、とか言われるので、やると、(Linuxの方では)それらしいpngファイルが出来ました
git config --global url."https://".insteadOf git://
#
# load within julia using include("dirichlet.jl")
#
nx, ny = 25, 25
f = zeros(nx,ny)
f[1,:], f[nx,:], f[:,1], f[:,ny] = 2, 2, -2, -2
C = zeros(nx,ny)
N = 5000
#
for x = 1:nx
 for y = 1:ny
  for k = 1:N
   xx = x
   yy = y
   while ((xx > 1) && (xx < nx) && (yy > 1) && (yy < ny))
    b = rand(2)
    if (b[1] < .5)
     if (b[2] < .5)
      xx -= 1
     else
      xx += 1
     end
    elseif (b[2] < .5)
     yy -= 1
    else
     yy += 1
    end
   end # while
   C[x,y] += f[xx,yy]
  end # for k
 end # for y
end # for x
using Compose, Gadfly
draw(PNG("dirichlet.png", 10cm, 10cm), spy(C/N))