黒木玄 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 を見て下さい。
2021年04月29日(木)
非公開
タグ:
posted at xx:xx:xx
@AMTraderX thanks!
I understand slightly more, but still confuse, would be cool if the doc was a bit more explicit.
タグ:
posted at 02:23:51
@CharlesTroupin Look into ASTs. One way to use Symbol is to put in placeholder names in an AST, and substitute them based on some criteria, e.g., type, for runtime efficiency at a small compile-cost.
BTW, the Julia team is hiring an FTE just for technical documentation.
タグ:
posted at 02:37:10
2021年度一回戦第二局 | 将棋日本シリーズ | JTウェブサイト
東北大会
大会日時:2021年6月19日(土)15:10開演予定(13:10開場予定)
会場:夢メッセみやぎ 展示ホールB・C
久保利明九段 vs. 木村一基九段
リアルで会場観戦するには事前申し込み(締め切り6/2)が必要。 www.jti.co.jp/culture/shogi/...
タグ:
posted at 03:14:10
The set of Gaussian primes consists of the real and imaginary numbers p, –p, ip, –ip for all primes p=4n+3 and all complex numbers a+bi for which a²+b² is prime.
タグ:
posted at 03:25:26
#Julia言語
pkg> add github.com/bicycle1885/Fm...
piはすでに定義されているので、pi = float(π) 抜きで f"π = {$pi:.100f}" とかできて欲しいかも。
@ sprintf "%.100f" π だと後の方の桁が0で埋まる。
教育向けにJuliaを使いたい人は「円周率を100桁求めてみましょう」と気軽にやりたい。 twitter.com/bicycle1885/st...
タグ: Julia言語
posted at 03:35:05
Sitting On Top Of The World.
Using no noise() and no random()! 🌳
www.deconbatch.com/2019/10/sittin...
sotow-210429035501
#processing #generative #creativecoding #OpenSource pic.twitter.com/QUDzseaLwH
タグ: creativecoding generative OpenSource processing
posted at 03:55:50
Togetter(トゥギャッター) @togetter_jp
教授が設定ミスったせいで授業のコメントが2文字までしか書けない「すこ」「やば」
togetter.com/li/1705673.
タグ:
posted at 04:15:06
the small angle approximation solves the dynamics of the pendulum by approximating sin(x) = x. How good an approximation is this? This shows the true dynamics (blue) and the approximation (white) for various initial angles pic.twitter.com/RND7BEN8op
タグ:
posted at 04:16:37
内申廃止に賛成👀🖖
ある子は学ランにつけるカラーというパーツが割れ、その日はなしに登校したところ登校時、体育教師件生徒指導に見られ、ずっと5だった体育の内申がそれ以降3に。
何度、説明を求めても6割実技、2割テスト、2割出席、それ以上の回答はなく、欠曲志望校にはいけませんでした。 twitter.com/yurinan90/stat...
タグ:
posted at 04:43:58
This experiment was performed in 2012 by Don Pettit on the International Space Station. Although it looks like a planetary system, the physics here is a little different, because it's the effect of static electric forces, rather than gravitational pull buff.ly/1sC7QSJ pic.twitter.com/S6cUqUuW9F
タグ:
posted at 05:10:40
非公開
タグ:
posted at xx:xx:xx
twitter.com/hirokikawakami...
【5−6を(5まいなす6)と読む先生は間違っているんだよ。当たり前だけどねー。】とまで言っているのに、
【引き算の記号をマイナスと読んでいる人を「間違っている」と言ったつもりではない。】
とはこれ如何に? pic.twitter.com/eWpbMr39aj
タグ:
posted at 05:44:53
非公開
タグ:
posted at xx:xx:xx
PythonユーザのためのJuliaの説明が書かれてるこの記事良さそう
colab.research.google.com/github/ageron/...
タグ:
posted at 10:03:33
blog.w0s.jp/643 の最後にある
「WebコンテンツはHTMLで配信すること、それこそがキャッチコピーにもある『誰一人取り残さない、人に優しいデジタル化』」
わかる
タグ:
posted at 10:38:46
#Julia言語 github上のリポジトリにアクセス
github.com/ageron/julia_n...
Julia_for_Pythonistas.ipynb twitter.com/hattarist/stat...
タグ: Julia言語
posted at 11:10:36
#Julia言語
nbviewer.jupyter.org 経由でアクセス(読むだけならこれがベストの選択)
nbviewer.jupyter.org/github/ageron/...
Julia_for_Pythonistas.ipynb
ただし、Juliaは特にPythonには全然似ていないことに注意。Pythonでの常識はローカルルールに過ぎないことに注意しないとひどく誤解することになる。
タグ: Julia言語
posted at 11:19:51
非公開
タグ:
posted at xx:xx:xx
0始まりインデックスの強制は、「抽象化された公開インターフェース」を使うという現代では常識になっている考え方から見ると、明らかに時代遅れ。
Juliaの配列のインデックスはデフォルトでは1始まりなのですが、きちんと抽象化されているので、0始まりに限らず、任意始まりインデックスも可能です。
タグ:
posted at 11:34:47
あと、Juliaは、クラスベースのオブジェ指向プログラミングを捨てて、パラメータ付きの型による多重ディスパッチを採用したことによって、色々な面で成功しました。
だから、Juliaを深く使うとクラスベースのOOP以外の考え方を学ぶことも強制されます。
タグ:
posted at 11:39:33
Juliaでのstructがクラスに似ているようにも見えるのですが、使うときの考え方は変える必要があります。Juliaでは
struct Point2D{T}
x::T
y::T
end
のように書いて、
p = Point2D(1.0, 2.0)
→Point2D{Float64}(1.0, 2.0)
のように、ユーザー定義のPoint2D型のオブジェクトpを作れます。
タグ:
posted at 11:46:14
しかし、pの中身に
p.x
→1.0
p.y
→2.0
とアクセスできても、pにp.f()の形でぶら下がるメソッドfをstruct~endの内側に書くことはできません。
Juliaではメソッドは特定のオブジェクトの保有物にはなりません。
タグ:
posted at 11:46:15
struct Point2D{T}
x::T
y::T
end
のx, yをPoint2D型のフィールドと呼びます。
Juliaではフィールドの継承もありません。
Juliaで計算効率の高いコードを書くためには、型のフィールドは公開されたインターフェースではなく、実装の詳細だとみなす必要があります。
タグ:
posted at 11:50:20
例:第i成分だけが1で他の成分が0のn次元ベクトルe_iが欲しくなる場合があるのですが、e_iをn個の数値を並べることによって実装するのはメモリ効率が悪いです。nとiのデータのみを内部に保持して、外部に公開されたインターフェースではe_iのように振る舞うようにすれば効率的です。続く
タグ:
posted at 11:58:38
続き。n次元ベクトルを意味する型であっても、n個分の数値を保持することの継承を強制されると、効率的に計算できることを目指しているJuliaの方針に反することになります。
こういう事情があるので、計算効率を損なう行為を強制可能な仕様の採用にJuliaはものすごく慎重です。
タグ:
posted at 11:58:39
上で
struct Point2D
x
y
end
ではなく、
struct Point2D{T}
x::T
y::T
end
としたことも重要です。
前者ではフィールドx, yの型が任意になりえるので、Point2D型に特殊化されたコンパイルを実行しても計算効率は改善しません。続く
タグ:
posted at 12:03:48
続き。後者では
p = Point2D(1.0, 2.0)
が Point2D{Float64} 型になり、Point2D{Float64}型に特殊化された函数のコンパイルの結果はFloat64型に特殊化されたものになり、ものすごく速くなります。
これこそがJuliaの高速計算を支える肝の部分です。
タグ:
posted at 12:03:49
さらに
struct Point2D
x::Float64
y::Float64
end
ではなく、
struct Point2D{T}
x::T
y::T
end
としたことも重要。なぜならば、後者ならばフィールドx, yの型が固定されず、例えばFloat32やBigFloatやFloat64用のコードを1つのジェネリックなコードにまとめることができます。
タグ:
posted at 12:11:08
Float64の精度で計算するために書いたコードをそのままFloat32やBigFloatでも利用したいことはよくあるので、Point2D{T} のようなパラメータT付きの型を定義できることは非常に便利。
そして、さらにForwardDiff.jlのような自動微分を使う場合には、Tとして浮動小数点数以外の型も許す必要がある。
タグ:
posted at 12:11:09
Juliaで書かれた数値積分のパッケージ
github.com/JuliaMath/HCub...
のREADMEには
Because hcubature is written purely in Julia, the integrand f(x) can return any vector-like object (technically, any type supporting +, -, * real, and norm: a Banach space).
と書いてあります。続く
タグ:
posted at 12:20:07
さらに続けて
You can integrate real, complex, and matrix-valued integrands, for example.
と書いてある。これが意味することは、被積分函数の値の型は、Float32, Float64, BigFloat, ComplexF32, ComplexF64, Vector{Float32}, ..., Matrix{ComplexF64}, ... のどれであってもよいということ。
タグ:
posted at 12:20:08
そのようなおそろしく多彩な型を被積分函数の値の型として許すことを、ケースバイケースで似たようなコードを大量に書いたりせずに、1つのJuliaのコードで実現できるわけです。
数学的な計算では、入力の型がものすごく多彩なので、それに対応する仕組みがないと、コードの使い回しが上手くできない。
タグ:
posted at 12:20:10
Juliaが採用した「パラメータ付きの型による多重ディスパッチ」はそういう要求にコンパクトなコードを書いて対応できる仕組みになっています。
Common Lisp Object System の多重ディスパッチだけだと機能的に足りないことについては以下のリンク先を参照。
tamaspapp.eu/post/common-li...
タグ:
posted at 12:23:38
ここまでついて来た人であれば「なるほど、Pythonには全然似ていない」と思って頂けると思う。
似てはいないけど、JuliaにおけるPyPlot.jlによるプロットではPythonでの経験が直接的に活きます。(私もJuliaを使い始めてしばらくの間はPyPlot.jlのお世話になっていました。ググって例を見つけ易い)
タグ:
posted at 12:27:38
www.deconbatch.com/2019/10/the-po...
Poor man's DLA Moss : Example code with my poor man's DLA algorithm.
タグ:
posted at 12:45:18
www.deconbatch.com/2021/03/poor-m...
Poor man's DLA Moss : Example code with my poor man's DLA algorithm.
タグ:
posted at 12:46:23
www.deconbatch.com/2019/10/sittin...
Sitting On Top Of The World : An example of my poor man's DLA.
タグ:
posted at 12:47:14
TBS話題のドラマに大塚家具が美術協力 日曜劇場「ドラゴン桜」 prtimes.jp/main/html/rd/p... @PRTIMES_JPより
骨肉の争い、ドラマなのか現実なのかわからなくなりそう^^
タグ:
posted at 13:35:05
Hideki Kawahara: WAS @hidekikawahara
Julia v1.6.1に更新してみた。Plutoの例題を試そうとしたらパッケージが古いと言われたので,更新し,再起動して,以前に紹介されたVan der Pol equation:が動くところまで,確認した。でも,とりあえずはMATLABで締切を二つ片付けるのが先。時間配分が下手。
julialang.org/downloads/ pic.twitter.com/kgRCo3YJ3F
タグ:
posted at 14:16:54
@genkuroki 解説頂きありがとうございました。とても興味深いです。質問なのですが、ディスパッチ (dispatch) を短い日本語で説明しようとするとどのように表現するのが良いでしょうか?
タグ:
posted at 14:40:08
@yamazaksv2 @ysmemoirs #数楽 #Julia言語
どのようなオーダーの違いを許すかの違いが重要です。
x→±∞で、定数差のオーダーO(1)の違いを許すのか、O(1/x)のオーダーの違いしか許さないのか。
「百聞は一見に如かず」なので、添付画像のグラフを見て下さい。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/P2kmTpaQ8M
posted at 15:03:45
@yamazaksv2 @ysmemoirs O(1)のオーダーの違いはグラフを描くと露骨に大きな違いに認識されることが多いです。
H_n = 1+1/2+1/3+…+1/n と log(n) の違いも面白いです(所謂Euler's γ の話、ディガンマ函数に一般化される)。
log(n)+γ (γ=0.5772…) と H_n のグラフは非常によく一致します。
gist.github.com/genkuroki/af80... pic.twitter.com/AqRVRAswI7
タグ:
posted at 15:17:08
#数楽 #Julia言語
Dirichlet核、Fejér核、Poisson核、Gauss核の詳しい解説とグラフは
nbviewer.jupyter.org/github/genkuro...
にある。PDF版
genkuroki.github.io/documents/Calc...
の方が読み易い人がいるかも。 pic.twitter.com/p0eau2hbRf
posted at 15:29:34
@yamazaksv2 @ysmemoirs 一般に数式をいじるだけではなく、コンピュータの助けを借りてグラフを描いた方が理解が大幅に進むことが多いです。
最大の問題は、コンピュータによるグラフの描き方の習得のコストが結構高いこと。
↑
この辺は中高生向けの数学教育の専門家も研究するべき重要な課題の1つだと思います。
タグ:
posted at 15:33:41
ほりたみゅ (mastodonも見てね) @Hyrodium
@genkuroki @yamazaksv2 @ysmemoirs desmos.com/calculator とかいかがでしょうか。習得コストに関してはかなり低いと思います。
タグ:
posted at 15:37:48
@Hyrodium @yamazaksv2 @ysmemoirs 私がこのスレッドで作ったグラフを
www.desmos.com/calculator?lan...
で作ってくれると感じがつかみやすいと思いました。私にとっては簡単なことではないです。
タグ:
posted at 15:44:44
ほりたみゅ (mastodonも見てね) @Hyrodium
@genkuroki @yamazaksv2 @ysmemoirs 添付画像のように数式を書けばプロットされます。
www.desmos.com/calculator/wbz... pic.twitter.com/duNhNwDz4R
タグ:
posted at 15:56:30
@Hyrodium @yamazaksv2 @ysmemoirs 1+1/2+…+1/n とか Euler's gamma はどうすれば扱えるのでしょうか?
たぶん、「やり方」を知っている人の補助がないと、何を使っても苦しいと思います。これが、「色々」使ってツイッターで実演しまくった私の結論。
タグ:
posted at 16:02:10
ほりたみゅ (mastodonも見てね) @Hyrodium
@genkuroki @yamazaksv2 @ysmemoirs リプライが分岐しましたがこちらに記載しました↓
twitter.com/Hyrodium/statu...
タグ:
posted at 16:04:58
ほりたみゅ (mastodonも見てね) @Hyrodium
@genkuroki @yamazaksv2 @ysmemoirs 少し内容が古いですが、日本語の公式ユーザーガイドはこちらにあります↓
desmos.s3.amazonaws.com/Desmos_User_Gu...
私が日本語訳を担当していました。
タグ:
posted at 16:07:02
@Hyrodium @yamazaksv2 @ysmemoirs うぐぐ、それはできた結果を見ても、自分ではできませんでした。もちろん解説を読めばできるようになるのでしょうが。
タグ:
posted at 16:07:06
ほりたみゅ (mastodonも見てね) @Hyrodium
@genkuroki @yamazaksv2 @ysmemoirs はい、どのツールにしても多少の習得コストはあると思います。Desmosは
・ブラウザさえあれば実行環境が揃うこと
・インタラクティブに数値を変更できること
・アカウントがあれば簡単にグラフを共有できること
などが他のツールに比べて便利だと思います。
タグ:
posted at 16:12:52
@Hyrodium @yamazaksv2 @ysmemoirs γの入力の仕方は分からなかったのですが(iPadのブラウザより)、以下のようにできました!
お手本があれば私ならできるということが分かりました。
ブラウザだけから使える道具としてはwolframalphaや www.wolframcloud.com も便利です。
www.desmos.com/calculator/5sx... pic.twitter.com/XeNmRJqj6l
タグ:
posted at 16:27:24
同じエラーはPythonだと結構でてるがJuliaから呼び出すときの対応がわからず,悪戦苦闘したので,メモ書き。 twitter.com/julia_kizi/sta...
タグ:
posted at 16:28:18
@yamazaksv2 それは理科云々と無関係で、絶対誤差と相対誤差の違いです。
絶対誤差=差の絶対値
相対誤差=差の絶対値/真の値
真の値が大きくなるとき、差の絶対値が小さくならなくても、相対誤差は小さくなる場合がある。
どれを使うかべきであるかは目的による。
タグ:
posted at 16:30:46
ほりたみゅ (mastodonも見てね) @Hyrodium
@genkuroki @yamazaksv2 @ysmemoirs Desmosはコピペしたときにlatexのコマンドとして処理されるので、\gammaを貼り付けるとちゃんと解釈してくれます。この方法は(私の知る限り)公式ドキュメントに載っていないので裏技のようなものです。
タグ:
posted at 16:31:56
#数楽 高校数学で定番の直線 ax+by+c=0 と点 (X,Y) の距離の話も、
z=ax+by+cのグラフが3次元空間中の傾いた平面になり、
傾きの登り方向の単位ベクトルが(a,b)/√(a²+b²)になり、
傾きの大きさが√(a²+b²)になる
という重要な結果から自明に出る。
この重要な結果は2変数函数の微分の理解で必須。 twitter.com/numachi11111/s...
タグ: 数楽
posted at 16:42:48
@hattarist #Julia言語 「Juliaの函数は引数(達)の型で定義域が指定されたメソッドの集まりである」(多変数函数fの実行時に引数達の型でどのメソッドで計算するかを決める)を一言で「多重ディスパッチ」と言っています。続く
タグ: Julia言語
posted at 16:58:33
@hattarist #Julia言語
例えば、
f(x, y)=x+y
f(x, y::AbstractString)=y^x
f(x::AbstractString, y::AbstractString)=x*y
のとき、
f(3, 4.5)
→7.5
f(3, "Meow")
→"MeowMeowMeow"
f("Foo", "Bar")
→"FooBar"
f("Qoo", 3)
→MethodError: no method matching +(::String, ::Int64)
となります。 pic.twitter.com/hUlB594XTZ
タグ: Julia言語
posted at 17:06:48
@hattarist #Julia言語 multiple dispatch の短い言い方は知りません。
函数の計算法(メソッド)を定義域を分割する場合分けで定義するだけの話なので、個人的には多重ディスパッチという用語は無くてもよいと思っているのですが、Julia界の人達がみんな使っているので私も使っています。
タグ: Julia言語
posted at 17:09:26
@hattarist #Julia言語 図で描くとこんな感じ。
以下のリンク先の多重ディスパッチの例の図示
↓ twitter.com/genkuroki/stat... pic.twitter.com/4BPa4FSSrV
タグ: Julia言語
posted at 17:22:55
@hattarist #Julia言語
Any×Any
⊃Any×AbstractString
⊃AbstractString×AbstractString
で小さい方の上で定義されたメソッドが優先して実行されます。
包含関係になっていない曖昧な場合はエラーになります。
タグ: Julia言語
posted at 17:28:56
@genkuroki 解説頂きありがとうございます。お示し頂いた例と図、そして「函数の計算法(メソッド)を定義域を分割する場合分けで定義するだけ」という説明で格段に理解が進みました。まだ他言語のクラスにおける「カプセル化」のようなものの対応物があるのか理解できていないのですが、調べてみたいと思います。
タグ:
posted at 17:32:34
@hattarist ガチで函数の計算法を定義域を分割する場合分けで定義するだけです。
特別に名前がついているのが不思議なくらい自然な仕様。
こういう自然な仕様で、クラスベースのオブジェクト指向のスタイルを凌駕するプログラミングが可能な点は面白いと思います。
タグ:
posted at 17:32:59
Hideki Kawahara: WAS @hidekikawahara
査読と締切からまだ逃避してWindowsマシンにもインストールして動作を確認した。とりあえずJuliaの環境設定は,ここまで。 twitter.com/hidekikawahara... pic.twitter.com/xmWcy7VUDJ
タグ:
posted at 17:36:17
Keith McNulty @dr_keithmcnulty
It's possible to exchange objects between #julialang and #rstats in an #rmarkdown document as long as you have JuliaCall installed in R and RCall installed in Julia. #DataScience pic.twitter.com/UQE6UkEtBO
タグ: DataScience julialang rmarkdown rstats
posted at 18:05:01
#Julia言語
より専門的に少し詳しく。多重ディスパッチのコアな部分は2つあります。
1.関数を引数の型の組合せ(型シグニチャと言います)の違いで複数定義できる(=多重定義)
2.↑のうち実引数の組合せに最もマッチする実態(メソッド)が**実行時に**選択され実行される(=ディスパッチ) twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 18:30:32
対してよくあるクラスベースのオブジェクト指向言語は第1引数またはレシーバオブジェクトだけが特別扱いで(そのオブジェクトにぶら下がっている)メソッドが選択されます(単一ディスパッチと言います)。
タグ:
posted at 18:31:32
「実行時に」というのもポイントで、コンパイル時に静的に解決される場合はただのオーバーロードです。
これだと実行時の(具象)型の情報が参照できないために適切なメソッドが選択出来ない場合があります。JuliaCon2019のこれ→ youtu.be/kc9HwsxE1OY?t=... とかその一例
タグ:
posted at 18:40:21
#Julia言語 擬似乱数を使って実行時にしか引数の具体型が分からない例(添付画像のIn[2])も作ってみました。
実行時にランダムに与えられる2匹のペットx, yが犬と猫のどのような組み合わせになるかで、函数meetsで実行されるメソッドが変わる。
gist.github.com/genkuroki/f35e... twitter.com/antimon2/statu... pic.twitter.com/uSHcChq6xl
タグ: Julia言語
posted at 20:42:01
OokuboTact 大久保中二病中年 @OokuboTact
#超算数
算数教育の専門家が説明する「小学校の足し算の順序」 pic.twitter.com/AoMQVsWnbb
タグ: 超算数
posted at 21:29:00
OokuboTact 大久保中二病中年 @OokuboTact
続き #算数教育の専門書 #小学校の教師向け
もちろん掛け算の順序についてもしっかり説明している。
#超算数 pic.twitter.com/Kgj9M1sKm8
posted at 21:41:47
Fun with Unicode #julialang twitter.com/hadleywickham/... pic.twitter.com/yZf2CEo3N1
タグ: julialang
posted at 22:01:32
ほりたみゅ (mastodonも見てね) @Hyrodium
まあ境界は確率単体の定義域に含まれないので、計量とかが定義されません。つまり厳密に言えば閉曲線にならないです。数値計算的に楕円(未検証)が得られているだけ。
タグ:
posted at 22:48:59
ほりたみゅ (mastodonも見てね) @Hyrodium
数値的に確かめただけですが、測地線は厳密に楕円のようでした。なので「初期値に一致するような楕円でn-1次元単体に接するもの」が測地線の方程式を満たすことを調べればOKやな pic.twitter.com/NTGnHgjxtm
タグ:
posted at 23:01:59