マンデルブログ

主にPythonのことを書いていきます。

Juliaに手を出す

Pythonのことを書くと言っていましたが、前から気になっていたJuliaも勉強していこうと思います。

Juliaとは

JuliaはPythonと同じような動的型付けの言語でありながら、C言語などの静的言語にも勝る速さを持ち
しかもPythonのライブラリを呼び出すこともできるという夢のような言語です。

詳しくはこちら

Juliaのインストール方法、基本的な使い方については詳しく説明してくれている人がたくさんいると思うので割愛します。

まずはお約束

print("Hello world") #Hello world

ちょこっと使ってみる

研究室の後輩にプログラミングの演習問題が出ていたので、それをやってみます。
問題は、一次元拡散方程式
\frac{\partial u}{\partial t} = D \frac{\partial ^2 u}{\partial x^2}
を数値的に解くというものです。

using PyPlot
dx = 0.01
dt = 0.0001
D = 0.1
λ = D*dt / (dx*dx)

Juliaではギリシャ文字を変数にすることができます。

init_u = zeros(100)
init_u[50] = 1/dx
next_u = zeros(100)

Pythonでいうnumpy.zeros()がデフォルトで使えるようです。

step = (3/dt)
for i in 1:step+1
    t = i * dt
    for j in 2:length(init_u)-1
        next_u[j] = init_u[j] + λ*(init_u[j-1] - 2init_u[j] + init_u[j+1])
    end    
    if t == 1. || t == 2. || t == 3.
        print(init_u)
        PyPlot.plot(init_u)
    end
    init_u = next_u
end

Pythonではfor文使うと負けでしたが、Juliaはfor文がめっちゃ早いです。
ガンガン使えます。

f:id:woodhero0908:20180802011811j:plain

凡例を忘れましたが、上から順にt=1,t=2,t=3のときの値です。
まあまあ簡単にできたんじゃないでしょうか。次はもうちょっと複雑なプログラムも組んでみます。