Julia 基礎 備忘録

基本的なこと

セッション終了は Ctrl + D, コメントは#

基本的な演算

julia > 10^2 #べき乗
100

julia> 13/3 #除算
4.333333333333333

julia> 25//100 #有理数
1//4

julia > x = 2;
julia > 2x + 1 #変数を使った積は積記号を省略できる(ただし変数が後)
5

julia > typeof(x) #typeofで型を確認
Int64
julia > x = 2.0;
julia > typeof(x) 
Float64

julia > pi #円周率
π = 3.1415926535897...
julia > sin(2pi/3) #三角関数も使える
0.8660254037844387

julia > 2+3im #虚数(im)も使える
2 + 3im
julia > typeof(2+3im) 
Complex{Int64}

julia > x = [1.2 0;1 -1] #ベクトル, 行列を定義
2×2 Array{Float64,2}:
 1.2   0.0
 1.0  -1.0

julia > A = [1 2;3 4]; # ; を使うと出力されない
julia > b = [1 2]' ; # ' が転置を意味する
julia > A\b # Ax=b が解ける
2×1 Array{Float64,2}:
 0.0
 0.5
julia > A * ans == b
 true

julia > x = [1 2 3]
julia > x.^2 # ^の前に. をつけることで成分だけ2乗する
1×3 Array{Int64,2}:
1 4 9;
julia > abs.(-x) # 関数も同様に.をつけられる(ただし関数は()の前)
1×3 Array{Int64,2}:
1 2 3
補足サイト https://hshindo.github.io/julia-doc-ja-v0.6/manual/mathematical-operations.html, https://docs.julialang.org/en/v1/stdlib/LinearAlgebra/ (LinearAlgebraのサイト,固有値や行列の分解などに)

for文, 条件分岐

julia > for i in 1:3
        println(i)
        end
1
2
3

julia > for i in [1.2 -2.3 3.4]
        println(i)
        end
1.2
-2.3
3.4

julia > [i*j for i in 1:2, j in 1:3]  #内包表記も可能
2×3 Array{Int64,2}:
 1  2  3
 2  4  6

julia > [i for i in 1:6 if i%2==1] #条件も加えられる
3-element Array{Int64,1}:
 1
 3
 5

julia> for (i, j) in zip(1:3, 6:9) #zip関数で2つの配列を同時に
       print(i, " - ", j,  "\n")
       end
1 - 6
2 - 7
3 - 8

julia > k = 10; # if elseif else
julia > if k % 15 == 0
            println("15の倍数")
        elseif k % 5 == 0
            println("5の倍数")
        elseif k % 3 == 0
            println("3の倍数")
        else
            println(k)
        end
参考サイト http://nullbyte.hatenablog.com/entry/2015/05/28/011054

関数の定義

julia > f(x,y) = x + y
f (generic function with 1 method)

julia > f(2,3)
5

julia > function g(x,y)
          return x * y 
          x + y # return 以降は無視される
        end
g (generic function with 1 method)

julia > g(2,3)
6

julia > function func(x::Float64)::Float64 #引数や関数値に型を指定することもできる
           return 1
        end
julia > func(2.0) # 戻り値はFloat64
1.0
julia > func(2) #引数が整数のためエラーになる
ERROR: MethodError: no method matching func(::Int64)
参考サイト https://hshindo.github.io/julia-doc-ja-v0.6/manual/functions.html

Juliaで嬉しいこと

Python のように書き易く,Cのように速い

MATLABの感覚で書ける

行列, ベクトル計算が速い

分数が使える (//を使用)

記号が使える

\pi と入力してtabを押せば π になる

記号を変数にすることができる