Mathtodon
#julia言語

Juliaの method = function は同じ名前で、引数の型によって挙動が変わる。 mathtod.online/media/X4tfuNwwA

JuliaでのSymPyのインターフェースでは、型が Sym なものに関する計算を自動的に SymPy にやらせてくれます。

型Symの円周率は PI または Sym(π) で作れる。

型Symの1/2は 1/Sym(2) で作れます。1はJuliaの整数の1で、Sym(2)は型Symの2で、1/Sym(2)は1をSym(1)に変換してからSymPyにSym(1)/Sym(2)を計算した結果になります。

プログラミング言語の挙動の理解では、型の取り扱い方の理解が非常に重要。Juliaの場合には良い解説がまだなくてソースを見て私は確認したりしています。

using SymPy を使うときには、変数の宣言時に

a = symbols("a", positive=true)

とか

x = symbols("x", real=true)

とか

k, n = symbols("k n", integer=true)

のように、何か=trueをつけておくと計算がうまく行くときが多いです。

factor(doit(Sum(k^2, (k,1,n))))

とか。

z = symbols("z") はSymPyにおける数学的な不定元 z をJuliaの変数 z に代入する操作。

sympy は でも普通の感じで利用できて便利です。

実1変数函数の微積分のノート
github.com/genkuroki/Calculus

カーネルの Jupyter notebooks の集合体なのですが、その中で普通に sympy を利用しています。

Julia言語でのsympyの簡単な利用例としても役に立つかも。

出来た!

using Quaternions
using LinearAlgebra
function quat_lu(N)
A=fill(quat(BigInt(0)//1), N, N)
for i=1:N, j=1:N
A[i,j]=quat([rand(1:10)//rand(1:10) for i=1:4]...)
end
println(A)
println(lu(A))
end
quat_lu(4)

mathtod.online/@tetu/1907220

での四元数を扱った例

twitter.com/genkuroki/status/9

slideshare.net/acidflask/desig
のp.16

Quternions.jl というそのものずばりのパッケージがあります。

github.com/JuliaGeometry/Quate

では非可換環を成分に持つ行列の線形代数も結構やってくれる場合があって、色々試してみると面白いです。 lufactとか。

念のために Windows + JuliaPro MKL + Plots + GR でGIF動画を作成できることも確認してみました。

問題なく作成できました。

誰か偉い人が Plots の GR バックエンドに手を入れると相当に使い易くなるような感じがします。

mathtod.online/media/F5niphL8w

訂正

C:\JuliaProMKL-0.6.2.1\pkgs-0.6.2.1\v0.6\REQUEST

は誤りで

C:\JuliaProMKL-0.6.2.1\pkgs-0.6.2.1\v0.6\REQUIRE

が正しいです。

using Plots
gr()

と @ animate の組み合わせでGIF動画を作る場合には

ENV["PLOTS_TEST"]="true"

を忘れずに!

GRバックエンドは色々不幸な感じになっている。あんなに速くて便利なのにもったいない。

Plots.jl のリポジトリで PLOTS_TEST を検索すれば事情を確認できます。

Windows 8.1 + JuliaPro MKL で

using Plots
gr()
plot(sin)

したら正常に作画されました。

ただし、私のJuliaPro環境は色々いじってある。

JuliaPro環境はJuliaのパッケージのアップデートを防ぐ仕組みになっていて、それを解除して、新しいパッケージを入れています。

そこまでやるならJuliaProを使うべきだと思わないので、その手の作業の情報は公開していません。

JuliaProのパッケージを色々アップデートしようとしたら、

C:\JuliaProMKL-0.6.2.1\pkgs-0.6.2.1\v0.6\REQUEST

を編集しろというメッセージが出たのでそれに従いました。

mathtod.online/media/-i0xa4Mpe

わかる、わかる。

PyPlot.jl

Plots.jl+GRバックエンド+GR直接書き

の両方を使っていると、matplotlib.pyplot のありがたみも非常によくわかる。

GRは速い点が非常に便利。

でなら

using Distributions
using Plots
@ show d = Chisq(2)
@ show q = quantile(d, 0.95)
plot(x->pdf(d,x), 0.1, 10, label="pdf of d = Chisq($(d.ν))")
vline!([q], label="quantile(d, 0.95)", ls=:dash)

@ の後の空白は除く

という感じです。

gist.github.com/genkuroki/a6a6

mathtod.online/media/zHB4UabN8

私は JuliaPro の REQUIRE ファイルの中のバージョン固定情報を全部手動で削除しました。

慎重にやらないとはまります。

依存関係があるので、本気で最新版のパッケージを使いたいならそうするしかないです。

mathtod.online/@gyokuro/113384

Edit your REQUIRE file to change this.

と言われたということは、JuliaPro を使っている可能性が高いと思いました。

JuliaProのJuliaパッケージが置いてあるディレクトリに REQUIRE というファイルがあるので、慎重にそのファイルの GLM 関係の部分を編集すればきっと何とかなる。

失敗したら、全部入れ直しになるので覚悟してやった方がよいです。

Julia言語のパッケージマネージャーは次のバージョンでもっとましなやつに変わる予定です。現在のやつは色々不便。

検証用のJupyter notebookを作っておきました。

nbviewer.jupyter.org/gist/genk
calc pi by gcd (with Julia and gcc)

を Jupyter notebook で使える環境って、JuliaPro personal free 版を入れれば一発で作れるんですね。インストーラー一発。これにずっと気付かずに無駄に説明に苦労していた。

juliacomputing.com/products/ju

"Pro" は無料版のアプリの有料版につけるもんだと思っていた。personal版は無料だった。

数学では類似の結果が出る異なる場合を知っていることが大事。

$a_k = \exp(2\pi i k/6)$ とおくと$$
\sum_{k=1}^6 a_k^n
$$は添付画像のようになります。😁

mathtod.online/media/6bso6326X