- こちらに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://
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
C[x,y] += f[xx,yy]
end
end
end
using Compose, Gadfly
draw(PNG("dirichlet.png", 10cm, 10cm), spy(C/N))