黒木玄 Gen Kuroki
- いいね数 389,756/311,170
- フォロー 995 フォロワー 14,556 ツイート 293,980
- 現在地 (^-^)/
- Web https://genkuroki.github.io/documents/
- 自己紹介 私については https://twilog.org/genkuroki と https://genkuroki.github.io と https://github.com/genkuroki と https://github.com/genkuroki/public を見て下さい。
2018年01月02日(火)
とりあえずざっとjuliaとpythonでローレンツ方程式を前進オイラー法で解いた結果。juliaはええ。 pic.twitter.com/AT6B5AZwHu
タグ:
posted at 23:55:58
A Happy New Lunar Impact ! 「こぐま座流星群」極大に伴う流星体の月面衝突閃光を,日大-電通大-JAXAで同時検出することに成功.月面への衝突角度が非常に浅く,衝突速度33km/sのインパクターのサイズもかなり大きく,LRO月衛星で確認できるサイズのクレーターが形成されている可能性あり. pic.twitter.com/N5UETMY3xh
タグ:
posted at 23:35:17
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
@golgo_sardine @sekibunnteisuu @nagisa_nakawa 「発見」したら、最近の発言を十分にダウンロードしたり、スクリーンショットを保存したりしておいた方がよいかも。
タグ:
posted at 21:45:23
スコット・サムナー「5年後のアベノミクス」 econ101.jp/%e3%82%b9%e3%8... @econ101jpより
引用【
1. 名目 GDP は大成功だった。
2. 債務状況は劇的に改善した。
3. 労働市場ははるかに堅調になった。
4. インフレ率は上がったものの、2パーセント目標にはまだ遠い。
~採点すれば「B+」~】
タグ:
posted at 21:39:36
速度以外にjulia(というかMATLABなんだけど)に惹かれるところは行列を
A = [1 2;3 4]
で定義できるところ。pythonだと、
import numpy as np
A = np.array([[1,2],[3,4]])
こうなる。もう慣れたんだけどMATLABから移行したときは発狂してた。
タグ:
posted at 21:17:19
解析接続を理解できないけどオイラー変換は理解している人は、かなりのニッチだと思う。#そういう問題ではない twitter.com/genkuroki/stat...
タグ: そういう問題ではない
posted at 20:46:45
#数楽 そこで引用されている
cosmos.art.coocan.jp/sp/sp13.htm
にも「有名な交代級数のオイラー変換に過ぎない」という注意が書かれてなかったので、紹介しておくことにしました。
オイラー変換は線形な収束加速法としてとても有名です。
タグ: 数楽
posted at 20:15:39
#数楽 ゆえに
Σ(-1)^n f(x+n)
= Σ2^{-n-1}Σbinom(n,k)(-)^k f(x+k).
n,kは0≦k≦n<∞を動きます。右辺が左辺のオイラー変換。
2^{-n-1}がかけられているおかげで収束が速くなる可能性がある。
これをf(x+n)=(x+n)^{-s}, x=1の場合に適用した公式が
tsujimotter.hatenablog.com/entry/riemann-...
で使われています。
タグ: 数楽
posted at 20:11:54
#数楽 以下のリンク先でのζ(s)の数値計算に使われているのは、交代級数
(1-2^{1-s})ζ(s)=1^{-s}-2^{-s}+3^{-s}-4^{-s}+ …
にオイラー変換という収束加速法を適用した結果です。オイラー変換の発見は易しいので解説しておきます。続く
tsujimotter.hatenablog.com/entry/riemann-...
タグ: 数楽
posted at 19:58:30
#数楽 実際にはpolylogやHurwitzも当然計算したくなる。ググったら以下が見つかった。
arxiv.org/abs/math/0702243
An efficient algorithm for accelerating the convergence of oscillatory series, useful for computing the polylogarithm and Hurwitz zeta functions
Linas Vepstas
2007
タグ: 数楽
posted at 19:53:22
#数楽 リーマンのゼータ函数の数値計算でよく引用されているのは
pdfs.semanticscholar.org/d9c5/d06fadb17...
An Efficient Algorithm for the Riemann Zeta Function
P Borwein
January 20, 1995
関連の解説が
people.mpim-bonn.mpg.de/zagier/files/e...
交代級数の収束の加速法
タグ: 数楽
posted at 19:49:03
#数楽 ゼータ函数に関するこの講義録は結構いいかも😊
library.msri.org/books/Book57/f...
FLOYD L. WILLIAMS
2000
最終節は
9. Modular forms of nonpositive weight, the entropy of a zero weight form, and an abstract Cardy formula
タグ: 数楽
posted at 19:41:51
・Android端末用
解答した後、ワールドフォルダ「GUNKANJIMA」をgames→com.mojangの先にあるminecraftWorlds内にコピペして下さい
www.dropbox.com/s/u7et9omgygb9...
タグ:
posted at 19:07:17
・PC用
フォルダ「GUNKANJIMA」を入れたいワールドのsaves内にコピペして下さい
www.dropbox.com/s/nhi6eb3w5qap...
タグ:
posted at 19:04:06
Minecraftで長崎県の軍艦島を作りました
1:1スケールで制作しており一つ一つの建物の特徴や廃れた質感など割と妥協なく再現し尽くしたつもりです。リプ欄にてPC、スマートフォンそれぞれに対応させてワールドデータを配布します。 pic.twitter.com/KubvScLHuW
タグ:
posted at 19:00:42
Julia、
x = linspace(-π, π, 100)
@gif for i=1:400
f(x) = sin(x + 2π*i/400 )
plot(x,f)
end every 10
でgifが出せる pic.twitter.com/D2uySc7jE0
タグ:
posted at 18:54:24
最安値の業者に作らせたシステムがバグバグで,何年もバグ出しに付き合わされた挙句,システム放棄した話は,時効になったらする twitter.com/kanto_ce/statu...
タグ:
posted at 17:27:50
#数楽 一意復号可能な符号化(可逆圧縮)に関するMcmillanの不等式もテンソルべきトリックで証明されます(Shannon情報量に関する基本的な話の一部)。
genkuroki.github.io/documents/2016...
の第10節
に短い解説があります。
タグ: 数楽
posted at 16:20:48
#数楽 リンク先のリンク先のブログ記事の第6節以降で解説されている方法はWeil予想以外にも(ずっと平易な場合にも)結構出て来る方法(テンソルべきトリック)で、タオさんによる解説が
terrytao.wordpress.com/2008/08/25/tri...
terrytao.wordpress.com/2013/07/19/the...
にあります。
twitter.com/tsujimotter/st...
タグ: 数楽
posted at 16:13:52
16ビット量子化だとちょっと何かするとすぐにクリッピングが起きますね。注意深くミキシングする分には(完成品としては)十分なダイナミックレンジなのですが。自分でいじるなら24ビットかできれば32ビットほしい twitter.com/genkuroki/stat...
タグ:
posted at 16:11:35
CDのダイナミックレンジは「加工する場合」(音量を一部分だけ拡大して非可逆圧縮するなどの場合)には全然足りないんだなと思いました。
CDは可聴域外の音の情報が入っていないからよくないという意見はオカルトの一種だと思うのですが、ダイナミックレンジは足りないと心底思いました。
タグ:
posted at 15:29:15
ろくに視聴もせずに、そのようにして作った音楽ファイルを持ち出して、移動中に聴いていたら、音が小さかった部分に「ピロピロピロピロ」のような小さなノイズが追加されまくり!😭
エンコード前には「ピロピロ」は無かった。エンコード後に追加されたノイズです。
タグ:
posted at 15:23:44
あるとき聴いていた音楽では音が小さい部分と大きな部分が両方あって、音が小さな部分は移動中だとよく聴こえない。
そこで音が小さな部分の音を大きくしてからエンコードすることを実行してみました。
その結果は悲惨なことに!
続く
タグ:
posted at 15:15:33
私にしては珍しい話題
ここ10年くらいは主な移動手段として自転車を使っているのでやめたのですが、ある一時期にはほぼつねにイヤフォンで音楽を聴きながら移動していました。
CDの内容を吸い上げてエンコードする作業もよくしていた。続く
タグ:
posted at 15:12:23
#JuliaLang PyPlot.jl で日本語フォントを使う方法は次のリンク先にあります。
gist.github.com/genkuroki/e748...
重要なポイントは、前もって
~/.matplotlib/fontList.py3k.cache を削除
しておくことです。キャッシュが残っているとはまります。
この手の情報は日本語で検索しないと見付からない。
タグ: JuliaLang
posted at 14:34:30
#JuliaLang PyPlot.jl を使っていて、縦軸と横軸のスケールを等しくしたい場合には
axes()[:set_aspect]("equal")
を実行します。こういうのは検索してもなかなか見付けられないので貴重な情報かも。
タグ: JuliaLang
posted at 14:31:26
#JuliaLang PyPlot.jlを使っていてデフォルト値を変えたい場合には rc() 函数を使えます。添付画像の例では、背景色を白からlightblueに変え、グリッドを実線から点線に変えています。 pic.twitter.com/A12eMnIO2O
タグ: JuliaLang
posted at 14:29:42
#JuliaLang PythonのライブラリをJulia言語で使うときの
Python→Juliaの翻訳事情
については
qiita.com/yatra9/items/0...
の【a[:b]が気持ち悪い】以降の解説が詳しいです。
a.b → a[:b]
のような翻訳が必要なことが多いのですが、この点が近い将来「解消」されることになるらしい。
タグ: JuliaLang
posted at 14:06:04
#JuliaLang 私は初心者なので情報がたくさん得られないものはつらい。そういう理由で現時点では PyPlot.jl を使用しています。Pythonのmatplotlib.pyplotをJuliaで使うためのパッケージ。Python関係の情報ならググれば嫌になるほどヒットします。Python→Juliaの翻訳はそう難しくないです。
タグ: JuliaLang
posted at 13:59:14
#JuliaLang Gadfly.jlはずっと使い続けられています。1回目の実行時にはコンパイル時間が長くてかなりイライラさせられますが、2回目からは速いです。
gadflyjl.org/stable/
には
It is based largely on Hadley Wickhams's ggplot2 for R and ...
と書いてある。表示は上品できれいです。
タグ: JuliaLang
posted at 13:56:09
#JuliaLang 私自身はほとんど使っていませんが、Plots.jlをgr()バックエンドで使うと速くで便利です。ただし、GRバックエンド側の都合で、日本語フォントをプロットの中で利用することは現時点ではできません。pyplot()バックエンドであれば日本語フォントも使用できます。
gist.github.com/genkuroki/544b...
タグ: JuliaLang
posted at 13:53:38
#JuliaLang を使い始めの人はグラフの作画でどのパッケージを使えばよいのか悩む人は多いと思う。以下がよく使われていると思います。
(1) Gadfly.jl
(2) PyPlot.jl
(3) Plots.jl + pyplot()
(4) Plots.jl + gr()
Plots.jlを使うと作画のバックエンドを選択できます。続く
タグ: JuliaLang
posted at 13:49:16
#JuliaLang もっと気楽に全部表示させるためには
showall(a)
とか
計算するための1行のコード |> showall
のように書けばよいです。
タグ: JuliaLang
posted at 13:41:15
#JuliaLang をJupyter notebookで使っているとセルの出力結果が途中で切れて困ることがよくあります。「あと数十行余計に表示してくれれば便利なのにな」と思うことがよくある。そのような場合には
ENV["LINES"] = 100
を実行すると、100行まで表示してくれるようになります。
タグ: JuliaLang
posted at 13:38:57
#JuliaLang 私のような初心者は、デフォルトもしくはパッケージで定義されている函数名を頻繁に忘れます。そのような場合には
?函数名らしき文字列
でマニュアル類を検索できます。
?|>
を実行すると |>(x,f) (x |> f と同じ) の解説が表示されます。
タグ: JuliaLang
posted at 13:34:18
#JuliaLang シェルで仕事をしたことがある人であれば
cat file | sort | uniq
のようなことをしたことがあると思いますが、Julia言語では
a |> sort |> unique
のように書けます。これは
unique(sort(a))
と同じ意味。
julia> [1:5;] |> x->x.^2 |> sum |> inv
0.01818181818181818
タグ: JuliaLang
posted at 13:32:09
#JuliaLang 他人が書いたパッケージで定義されている「何か」が何なのか全然わからないことはよくあります。そういう場合には何はともあれ
dump(何か)
を実行しています。MCMC用パッケージであるMamba.jlの使い方も
sim = mcmc(~)
の後に dump(sim) することによってやっと理解できました。
タグ: JuliaLang
posted at 13:24:15
#JuliaLang 以下{at}はアットマーク。
{at}time 実行コード
{at}code_warntype 函数名(引数)
はコードの最適化に必須。ソースコードを見るためには私は
{at}which 函数名(引数)
methods(函数名)
を多用。他にもよく使っているのが、
dump(何か)
です。何かの中身を見ることができる。
タグ: JuliaLang
posted at 13:21:51
非公開
タグ:
posted at xx:xx:xx
#JuliaLang 私のような初心者にとっては、ソースコードに気軽にアクセスできることは非常に重要。正直な話として、ドキュメントを読んでも全然理解できないことが多く、ソースコードを直接見た方が参考になる情報が得られることが多いからです。他言語でもこのような機能は普通であって欲しいです。
タグ: JuliaLang
posted at 13:16:48
#JuliaLang
methods(函数名)
で同じ名前の函数がどれだけ定義されているかも確認できます。しかも、ソースコードへのリンクも表示されます。
{at}which 函数名(引数)
でもソースコードへのリンクが表示されます。
このようにJulia言語ではソースコードへのアクセスが非常に気軽にできます。
タグ: JuliaLang
posted at 13:14:31
こういう仕組みになっているので #JuliaLang では「同じ名前の違う函数」がものすごくたくさんあります。引数の型によって実行されるコードが全然違うものになる可能性がある。どれが実行されるかを確認するためには
{at}which 函数(引数)
を使います。{at}はアットマークです。
タグ: JuliaLang
posted at 13:09:52
#JuliaLang genericな f(x) を呼び出していた別の函数は、f(x::Float64) が定義された途端にxがFloat64型のとき最適化された f(x::Float64) の方を呼び出すようになってくれます。genericなf(x)の方を書き換える必要はありません。
タグ: JuliaLang
posted at 13:07:50
#JuliaLang 通常の場合には、型によらない数学的に一般的な計算法を f(x) としてぱぱっと書き、それでうまく計算できることがわかったら、Float64専用の最適化を行ってそれを f(x::Float64) の形式で定義する、というような手順になると思います。もちろんそういう最適化が必要ないなら何もしない。
タグ: JuliaLang
posted at 13:05:01
#JuliaLang 以上のように書いておくと、同じ名前の函数 f にFloat64型の数値を代入すると「Float64型専用に最適化された計算法」で効率よく計算してくれて、例えばBigFloatで高精度計算したい場合には「型によらない計算法」で計算してくれます。
タグ: JuliaLang
posted at 13:02:25
#JuliaLang 数値計算用のコードを気軽に(←気軽さは本質的に重要)書きたい人にとって、Julia言語のmultiple dispatchは非常に便利です。
function f(x)
xの型によらない計算法
end
function f(x::Float64)
Float64型専用に最適化された計算法
end
のように書ける。続く
タグ: JuliaLang
posted at 13:00:30
#JuliaLang そうそう、UbuntuにJulia言語をインストールする場合には
packages.ubuntu.com/artful/julia-c...
にある古いJulia言語のバイナリではなく、公式サイト
julialang.org/downloads/
にある新しいバイナリを入れた方がよいと思います。
タグ: JuliaLang
posted at 12:45:17
#JuliaLang まだPythonとの繋がりほど緊密にはなっていないですが、Julia言語からRも呼び出すことができます。Jupyter notebook + Julia言語からRのプロット機能を呼び出して作画することも簡単にできます。
他言語の機能を呼び出せる点は本当に便利。
もちろんCで書かれた函数の呼び出しも簡単。
タグ: JuliaLang
posted at 12:40:13
#JuliaLang Python SymPyの超幾何函数のマニュアルは
docs.sympy.org/latest/modules...
にあります。そして、Julia言語でPkg.add("SymPy")して
using SymPy
すればPython SymPyの超幾何函数をそのまま利用できます。
タグ: JuliaLang
posted at 12:36:51
#JuliaLang Julia言語の立ち上げの時期にCythonの開発者の一人がJulia言語開発チームに「他言語のライブラリも利用できるようにした方がよい」というようなアドバイスをしたらしく、Julia言語からPythonのライブラリを相当に気軽に利用できる仕組みが整備されています。
タグ: JuliaLang
posted at 12:32:29
#JuliaLang Julia言語の話ばかりしていますが、Pythonのライブラリ群はとても便利です。Julia言語しか使っていなくても、「Pythonさん一式」の中に入っている各種数学的ライブラリが便利な場合が少なくない。例えば、「超幾何函数の数値計算を気軽にしたい」というような要望も簡単に対応できます。
タグ: JuliaLang
posted at 12:30:20
教員の強制無償労働によって支えられているのが現状なわけで、そんな既得権益の上にあぐらかいたまま「私たちはどうすればいいんですか?」とか被害者ぶるんじゃねえよって話。「奴隷がいなかったら誰が家事をしたり荷物を運んだりするんだ」とか中世以前の貴族かよ
タグ:
posted at 12:29:23
#JuliaLang 「Anaconda3+Julia言語を入れて、ブラウザからJupyter notebookを高級電卓として利用する」というのは「ソフトウェアの開発ではなく、計算が目的にユーザー」にとって環境構築が易しい点が大きな利点だと思う。
タグ: JuliaLang
posted at 12:28:15
adhara_mathphys @adhara_mathphys
あと、解析的に解けなくても数値的に解くことができる、ということを知ることも重要ですよね。あと数値計算における作法なども重要です。
精度確認を行うなど、数値計算において重要なチェック項目なども組み込まれていて大変勉強になります。
タグ:
posted at 12:25:04
#JuliaLang Anaconda3(Python3+多くのパッケージ) + Julia言語 + R + Ruby を使いたい人にとっては(潜在的に非常に多いはず)、私によるインストールの記録
nbviewer.jupyter.org/gist/genkuroki...
は結構便利なはずです。Windowsで環境変数を自力で設定できるユーザーであれば何とかなるはず。続く
タグ: JuliaLang
posted at 12:23:08
#JuliaLang 私は、Windows 8.1だったし、やりたいことは「計算」であり、「ソフトウェアの開発」ではなかったので、Anaconda3を入れて使っています。科学技術関係のパッケージおよびJupyter notebookなどがまとめて入っているので、「計算」が目的にユーザーにとっては非常に便利です。
タグ: JuliaLang
posted at 12:20:24
adhara_mathphys @adhara_mathphys
nagaiさんのJuliaで学ぶ量子力学、昨日ダウンロードして動かしてみました。新しいPCなのでサクサク動きました。
このような教材があると量子力学の学習がかなり進むと思います。解析解が手で出せれば良いというものではなくて、やはり解の形をみるのは重要です。
> RTs
タグ:
posted at 12:19:57
Python、アルゴリズムためしに実装して、妙に遅いなと思った時に、一番遅いのがアルゴリズムのところじゃなくて二次元配列に値を代入するところだったときは脱力した。しかしあのライブラリの多さとウェブ文献の多さは他にないので時々使う
タグ:
posted at 12:19:01
非公開
タグ:
posted at xx:xx:xx
#JuliaLang Julia言語を私のようにJupyter notebookから使用するための環境の構築で面倒なのはJulia言語のインストールではなく、「Pythonさん一式」のインストールです。Pythonは実用的に最も使用されている言語の一つなせいで、環境構築が色々面倒なことになっています。続く
タグ: JuliaLang
posted at 12:17:03
「部活がなかったらどうやってTRPGやればいいんですか?」「部活がなかったらどうやって乃木坂追っかければいいんですか?」とか言わねーだろ。既得権益にしがみついてんじゃねえよ
タグ:
posted at 12:14:10
「部活がなかったらスポーツをしたい子は云々」みたいなのよく見るけど、ただの趣味なんだから仲間集めてやるなり金払ってやれるところに行くなりしろよ。なんで中高生のスポーツだけ手厚く保護されて当然とか思ってるんだ?
タグ:
posted at 12:14:10
Juliaで学ぶ量子力学、書いてる家のパソコンが10年前のもので遅いので、ブラウザから実行できるJulia boxで計算してダウンロードしている。 auth.juliacomputing.io/dex/auth?respo...
タグ:
posted at 12:08:47
新年、簡単な数値計算とか検算とかで便利なプログラム言語を使ってみたいという人には、おすすめ。Pythonと違ってあまり工夫しなくても速いのが良い github.com/cometscome/QM
タグ:
posted at 12:05:33
JuliaとJupyter notebookの組み合わせ、簡単だし、とても良い。ためしに使うならJulia Boxという無料のサイトもあり、ブラウザから試せるし、やった結果をダウンロードすることも当然できる
タグ:
posted at 12:03:19
「すみわけというのは、生活区域や仕事等の競合を避けることで、平和に共存する生物の知恵」生物はそういう知恵を発揮したのではなく、生存競争の結果、有利なニッチで生き残っているだけ。バカが「生物」とか言い出してロクなことにはならん。生物の進化と社会のあり方は別の話。 twitter.com/yukehaya/statu...
タグ:
posted at 12:02:25
adhara_mathphys @adhara_mathphys
jupyter notebook はanacondaというのを前に入れていたので勝手について来たので、そこで使えるように設定しただけです。
タグ:
posted at 11:59:29
#数楽
高木貞治『解析概論』で技巧的な方法で計算されている定積分の計算が、実はdilogを使って不定積分を書ける場合になっていたという話については、以下のリンク先のスレッドを参照してください。
twitter.com/genkuroki/stat...
タグ: 数楽
posted at 11:56:13
adhara_mathphys @adhara_mathphys
黒木先生の勧めもありJulia➕jupyter notebookを入れましたが、確かに良さそうです。自分では速度比較等はしていませんが、速いという評判です。
グラフも綺麗ですし、物理シミュレーションで役立つアルゴリズムも中々揃っているようです。
タグ:
posted at 11:54:55
@genkuroki 気になったので自分のubuntu(Linux Mint)でリポジトリにJuliaあるんじゃない? って検索かけたらやっぱりあったので、windowsユーザーはubuntuに乗り換えるのが一番早いと思います(マテ
タグ:
posted at 11:51:34
ちょっとした計算にはWolframAlphaが非常に便利です。
www.wolframalpha.com
感心したのは不定積分の計算でpolylogarithmsを使ってくれることです。高木貞治『解析概論』における定積分を技巧的に求めている計算例の多くはdilogarithmで原始函数を書ける場合になっています。
タグ:
posted at 11:51:28
手計算での計算ミスがあるかどうかの確認の基本は「特殊な場合に値を計算してみて正しい値が出るかを確認すること」です。所謂検算。検算も手計算で行うことが多いのですが、組み合わせ論的数え上げや数値計算が必要な場合には「高級電卓」が必要になる。Julia言語はとても便利です。
タグ:
posted at 11:48:54
#JuliaLang Julia言語では複素数sでのζ(s)はCやFORTRANで書かれた外部のライブラリを呼び出さずにJulia言語で書かれたコードで計算するようになっています。
github.com/JuliaMath/Spec...
ただし、最近詳しく解説したように
gamma(1 - s) * sinpi(s*0.5)
はNaNの原因になるのでちょっとまずい。
タグ: JuliaLang
posted at 11:44:29
@genkuroki 僕もoctaveもscilabもRも使ってたんですが、なんとなく使いこなせないままでした。Julia素晴らしいです。完全に乗り換えられます
タグ:
posted at 11:35:20
#JuliaLang 私には高級電卓が必要で、以前はOctaveやScilabを使っていました。それらを使っている人はJulia言語に引っ越した方がよいと思う。
問題はJulia言語を使うための環境構築なのですが、Windowsユーザーであれば次のリンク先の記録を読めば何とかなると思います。
nbviewer.jupyter.org/gist/genkuroki...
タグ: JuliaLang
posted at 11:33:32
#JuliaLang 私はJulia言語の存在を知る前には、繰り返し使う特殊函数の数値計算用のコードはCやC++やFORTRANなどを使って書かなければいけないと勘違いしていました。
一つ前のツイートで紹介したJupyter notebookではJulia言語を使ってFORTRANで書かれた函数よりも5~6倍速い函数を実現しています。
タグ: JuliaLang
posted at 11:22:47
#JuliaLang Julia言語で数値計算用のコードの最適化を解説している次のJupyter notebookは非常に面白いです(繰り返し紹介して来た)。
nbviewer.jupyter.org/github/steveng...
数学的にも面白い内容を含み、Julia言語の使い方の解説としても非常に秀逸です。数値計算の講義でこの水準を超えるのは難しいと思う。
タグ: JuliaLang
posted at 11:18:33
#JuliaLang Julia言語でのコードの最適化ではまず
{at}time 実行するコード
が必須。計算時間だけではなく、使用メモリもチェックできる。
型指定無しに効率的に動くコードを書けない場合には
{at}code_warntype 函数(引数)
で引数の型で函数がどのようにコンパイルされるかをチェック。
タグ: JuliaLang
posted at 11:14:00
#JuliaLang 時間のかかる計算を実行するときには必ず {at}time ({at}はアットマーク)をつけて実行した方がよいです。計算時間と使用メモリ量を表示してくれます。
函数の定義で型指定が足りない部分を見付けたい場合には
{at}code_warntype 函数(引数)
を実行します。
タグ: JuliaLang
posted at 11:05:47
#JuliaLang
配列を繰り返し確保するコードは遅くなる。
配列aに対する f.(g.(h.(a))) は配列aの各要素にf,g,hの合成函数を一挙に作用させます。. は効率がよいです。
右辺でa[:,j]と書くと計算途中で新たに配列が確保されます。それを防ぐには({at}view a[:,j])と書きます。{at}はアットマーク。
タグ: JuliaLang
posted at 11:00:10
#JuliaLang
型を指定しなくても、実行時コンパイルで適当に型推論してくれるのはかなり便利です。引数の型に依存しないアルゴリズムがあるとき、函数を一つだけ書いておけば、複数の型に対応できる。
しかし、型を一意に推定できないときには、効率の悪いコンパイル結果になり、遅くなります。
タグ: JuliaLang
posted at 10:50:59
#JuliaLang 小ネタ
gist.github.com/genkuroki/2a72...
要素の型指定無しの空配列a=[]にpush!しまくると遅くなる
以下のようなコードは書かない方がよい:
L = 10^6
a = []
for i in 1:L
push!(a, rand())
end
* 函数化→3倍以上高速化
* 型指定→5倍以上高速化
* 配列を一挙に確保→2倍以上高速化
タグ: JuliaLang
posted at 10:38:23
Juliaの「自分マニュアル」が充実してきたので、イジングモデルのコードは自分マニュアルだけを参照して書けた。自分が使う機能なんか限られてるので、内容を絞った自分マニュアルを作るのは有効
タグ:
posted at 09:42:40
非公開
タグ:
posted at xx:xx:xx
2次元イジングモデル(100×100)の臨界緩和。β=0.44069で100サンプル走らせた平均。横軸は時間、縦軸は磁化のそれぞれ対数。「べき緩和」が見られる。僕が博士課程のときはスーパーコンピューターで計算したのに、今やMacbook Airですよ pic.twitter.com/IEhQijs8hh
タグ:
posted at 02:36:31
イジングモデルのメイン部分
for i=2:n+1
for j=2:n+1
sum = s[i-1,j]+s[i+1,j]+s[i,j-1]+s[i,j+1];
s[i,j] = 1/(1+exp(-2*beta*sum))>=rand() ? 1:-1
end
end
素直なコーディングですが、もっと簡単にならんかのお
タグ:
posted at 01:42:02
Juliaの練習問題。
2次元イジングモデル(100×100)の磁化の時間変化をさまざまな逆温度で。方法は熱浴法。周期境界 pic.twitter.com/Nvp0YdTa28
タグ:
posted at 01:35:33