🐔

Julia入門:いろいろ入門

2022/01/27に公開

あらかじめ, JuliaとJupyter Notebookのインストールを済ませておこう.
https://zenn.dev/ohno/articles/cf2b4d09d4480e
https://zenn.dev/ohno/articles/7e83ffa103e43f

パッケージ

必要なパッケージを全てインストールする. まず, Juliaを起動する.

]を押すと, パッケージモードに変わる.

add Plotsを入力してEnter.

インストールが終わったら, 同様に他のパッケージもインストールしておく.

add Optim
add Latexify
add LaTeXStrings
add Polynomials
add SpecialPolynomials
add SpecialFunctions

グラフを描写する

Juliaでは, Plots.jlというパッケージを用いて関数や配列をプロットすることができる. CSVファイルなどをプロットしたい場合は, 一旦, 配列に格納する必要がある.

パッケージ
# using Pkg
# Pkg.add("Plots")
using Plots
三角関数の描写
plot(sin)

もっと詳しく:
https://zenn.dev/ohno/articles/3101433fbe9231

固有値問題を解く

LinearAlgebra.jlを使えば簡単に行列の固有値や固有ベクトルを求めることができる. LAPACKが裏で動いているので, 安心感がある. LinearAlgebra.jlは最初からインストールされている.

パッケージ
using LinearAlgebra
行列の宣言
A = [-4 0 6;
     -3 2 3;
     -3 0 5]
固有値と固有ベクトルの計算
eigen(A)
出力
values:
3-element Vector{Float64}:
 -1.0
  2.0
  2.0
vectors:
3×3 Matrix{Float64}:
 -0.816497  0.0  -0.707107
 -0.408248  1.0   0.0
 -0.408248  0.0  -0.707107

もっと詳しく:
https://zenn.dev/ohno/articles/cb10dc5b3f5bbc

最適化問題を解く

Optim.jlでは様々な方法で最適化問題を解くことができる. 最急降下法を用いてf(x)=(x+2)^2+1の最小値・最小点を求める.

パッケージ
# using Pkg
# Pkg.add("Optim")
using Optim
最小化の例
f(x) = (x[1] + 2.0)^2 + 1
x0 = [5.0]
optimize(f, x0, method=GradientDescent())
出力
 * Status: success

 * Candidate solution
    Minimizer: [-2.00e+00]
    Minimum:   1.000000e+00

 * Found with
    Algorithm:     Gradient Descent
    Initial Point: [5.00e+00]

 * Convergence measures
    |x - x'|               = 7.00e+00 ≰ 0.0e+00
    |x - x'|/|x'|          = 3.50e+00 ≰ 0.0e+00
    |f(x) - f(x')|         = 4.90e+01 ≰ 0.0e+00
    |f(x) - f(x')|/|f(x')| = 4.90e+01 ≰ 0.0e+00
    |g(x)|                 = 9.17e-11 ≤ 1.0e-08

 * Work counters
    Seconds run:   0  (vs limit Inf)
    Iterations:    1
    f(x) calls:    3
    ∇f(x) calls:   3

もっと詳しく:
https://zenn.dev/ohno/articles/2a1dc7d609e5bc

特殊関数を使う

Juliaには様々な特殊関数を利用するためのパッケージが用意されている.

パッケージ
# using Pkg
# Pkg.add("SpecialFunctions")
using SpecialFunctions
ガンマ関数の使用例
gamma(1/2)^2
出力
3.1415926535897936

もっと詳しく:
https://zenn.dev/ohno/articles/f352f354e5cf96

記事の紹介

Juliaを使った数値計算の講義資料
http://www.cas.cmc.osaka-u.ac.jp/~paoon/Lectures/2020-8Semester-NA-basic/

Juliaを使いながら量子力学を学べる
https://github.com/cometscome/QM

Juliaを使いながら微分積分を学べる
https://github.com/genkuroki/Calculus#微分積分学

Juliaを使いながら統計学を学べる
https://github.com/genkuroki/Statistics#統計学

Discussion