Juliaの使い方

Juliaは科学技術計算向けに作られたJITで動くプログラミング言語。

このノートは適当にまとめたもの。適宜更新する。

http://bicycle1885.hatenablog.com/entry/2014/12/23/170745

http://docs.juliadiffeq.org/latest/features/callback_functions.html

環境構築

インストールなどは1つずつ行うこと。同時並行でやってはいけない。

Homebrewのインストール

 

pyenvのインストール

 

Anacondaのインストール

 

Juliaのインストール

 

JuliaをREPLで起動して、IJuliaを追加

 
 

インストールされているJuliaの設定ファイルは$HOME/.julia以下。

作業ディレクトリを作成

 

Jupyter NotebookでJuliaを使う。

 

~/.jupyter以下にJupyterの設定ファイルが生成される。

読み込み

file.jlの読み込み

 

実行

 

Juliaはfile.jlに呼び出したいコードを書き、REPLでincludeし、使いながらデバッグする。じゃないとModuleの読み込み時間がかかってしょうがない。

Juliaは起動が遅い。

@で始まるのはJuliaのマクロ呼出し。

Packageの追加

 

基本構文

変数

 

変数名にはUTF-8の文字列が使える。

 

print文

 

for文

 

if文

 

論理演算

 

型表示

 

関数

 
 
 

関数は第1級オブジェクト

 

関数名の後ろに!が付くものは引数を変更する。

複数行の文字列

 

最初の改行文字が取り除かれる。

型指定

 

関数の確認

 

::による型宣言がない場合、メソッド引数の型はAnyがデフォルトで使われる。Any型はどんな型でも受け入れる。

Array

Tを省略した場合、デフォルトではFloat64が使われる。

 

配列の初期化

 

複素数と有理数

Juliaは複素数と有理数を扱うことができる。

数値計算

基本

基本演算

恒等写像

 

加法の逆元

 

足し算

 

引き算

 

掛け算

x * y

割り算

 

階乗

 

余り

 

数値比較

 
 
 
 
 
 

無限極限

 
 

連結比較評価

 

型変換

 

丸め

 

絶対値

 

累乗と対数と根

 

初等関数

定数

 

指数関数

 

三角関数

 
 
 

グラフ描写

Plots

 
 

DifferentialEquations.jl

DifferentialEquations.jlはユーザのコードをアルゴリズムのソルバーに挿入するためにcallback関数を使うことができる。ドキュメントはこちら

 

precompilingにはかなり時間がかかる(私の環境で13分)ので気長に待つこと。

0045->0058

callbackの種類は次のように定義されている。ContinuousCallbackDiscreteCallbackである。ContinuousCallbackは連続条件関数が0になったときに作用される。DiscreteCallbackcondition関数がtrueのときにapplyされる。

ContinuousCallbacks

 

決められた条件で微分方程式を解くのを打ち切る。

 

線型代数

Linear Algebra

多次元配列のサポートに加えて、Juliaは多くの一般的によく使われて便利な線型代数演算のネイティブな実装を提供します。tracedetinvのような基礎的な演算は全てサポートしています。

 

固有値や固有ベクトルを求めるような他の便利な演算についてもです。

 

それに加えて、Juliaは多くの因子化を提供します。

要素積.*

行列の積*

JuMP

Julia MathProg

https://github.com/JuliaOpt/JuMP.jl/blob/master/docs/src/quickstart.md

 

UnitRange{T}

M-element Array{T, N}

Tuple{T, T, …, T}

Abstract

 

<:演算子は型について数学でいうところのを意味する。

 

Abstract型の重要な使い方は、具体的な型の代わりに関数の引数の型を制限するときなどである。

コンストラクタ

コンストラクタは新しいオブジェクトを作る関数である。特に、合成した型の実体を作るときなどに使われる。Juliaでは、型オブジェクト自体がコンストラクタ関数として使える。型オブジェクトはタプル引数が与えられたときに、関数として新しい実体を作る。これは、合成型の説明をした時に既に言及した。例えばこんな感じである。

 

多くの型では、

マクロ

マクロの呼び出しは@hogehogeである。

マクロ構文は

 

@timeで実行にかかった時間を測れる。

@inbounds, @boundscheck

@profile

@code_typed

Base.Test.@test

@shorthands

@vectorize_1arg

@.

ドット構文 for ベクトル関数

f.(x)によりベクトル関数が作れる。

 

Heatmapのプロット

Heatmapというのは行列の値に応じて色でプロットするようなやつである。

Pkg.add("Plotly")でエラー

Pkg.buld("HttpParser")がエラー

説明書 / Documentation

説明書の表示 / Accessing Documentation

説明書はREPLまたはIJulia中で?を関数やマクロの前に打ってEnterを押すことによって見ることができる。例えば、

 

とすれば、関係する関数やマクロ、文字列マクロの説明書が表示される。Junoでは、Ctrl-J, Ctrl-Dによりカーソル下のオブジェクトの説明書が表示される。

関数とメソッド / Functions & Methods