初めてのJulia
はじめに
この記事はJuliaに入門して数日の素人が書いたものなのであまり鵜呑みにしないでください. 環境構築はこの記事に色々まとまっているので参考にさせていただきました.
Juliaの導入
Mac環境で話を進めます.
公式サイトからdmgファイルをダウンロードしてここに書いてあるようにやれば終わりです. 簡単! ちなみにjupyterでも使えます. 詳しくは上の参考記事をみてください. 以下はjupyter上で実行しています.
Juliaで半円則を実証
ものは試しということでJuliaでウィグナーの半円則を実証してみようと思います.
半円則についてはこちら
ようは対称ランダム行列の固有値分布が半円型になるというものです.
まずはランダム行列を作りましょう. 今回は行列のサイズを$size=10000$としました.
Juliaでは各要素が標準正規分布に従う行列はrandn関数を用いて作ることができます.
using Plots
using LinearAlgebra
size = 10000
mat=randn(Float32, size, size)
これだと対称行列になっていないので, 普通にfor文を用いて対称行列にしました.
for i in 1:size
for j in i+1:size
mat[i, j]=mat[j, i]
end
end
あとは固有値を求めるだけです. LinearAlgebraのなかにeigvals関数があるので,
@time eigenvalues = eigvals(mat)
とします. @.timeは実行時間を測ってくれるマクロです. 僕の環境では約40sでした.
最後に固有値のヒストグラムを書きましょう. これはPlotsの中のhistogram関数でできます.
histogram(eigenvalues, bins = range(-200, 200, step=4), label="eigenvalues")
終わりに
JuliaはPythonライクに書けて非常に使いやすくていいと思います. Pythonとの差別化ポイントは実行速度だと思うのですが, 今回はほぼライブラリを使っただけなのであまり速度差はなさそうです...と思ったのですが, np.linalg.eigvalsでやってみたところ死ぬほど時間がかかりました...ということでjuliaすごい! あと最初に実行するときはかなり時間がかかったりしますが大体二回目以降は高速になるので大丈夫です.
Author And Source
この問題について(初めてのJulia), 我々は、より多くの情報をここで見つけました https://qiita.com/masayoshi361/items/39292ddf1ae23ce1ad07著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .