Twitter APIの仕様変更のため、「いいね」の新規取得を終了いたしました

黒木玄 Gen Kuroki

@genkuroki

  • いいね数 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 を見て下さい。
Favolog ホーム » @genkuroki » 2020年09月27日
並び順 : 新→古 | 古→新

2020年09月27日(日)

あ〜る菊池誠(反緊縮)公式 @kikumaco

20年9月27日

プログラムもいちから書いてるんで、結果のクロスチェックにもなって安心。学生はわしの苦手なC++で書いてたから読めん。わしはJuliaで書いたのでプログラムが短い

タグ:

posted at 23:50:05

あ〜る菊池誠(反緊縮)公式 @kikumaco

20年9月27日

学生が置いていった100万ファイルのデータを整理するくらいなら全部計算し直したほうが早いと思って、計算し直しついでにサンプルを5倍に増やしてみたところ、元のデータで統計揺らぎかなと思ってた変なディップは本当にあることが分かった。サンプルサイズが大きいのは正義

タグ:

posted at 23:47:50

大山 椒魚 @zyuer

20年9月27日

@genkuroki ありがとうございます.

タグ:

posted at 23:43:31

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@zyuer Juliaのパースの仕方は独特で、

<: Func

の部分が

<:(Func)

とパースされていて、本当は

<:(Hoge, Func)

と引数が2つなければいけない、ということになっていることを見抜くのは大変かも。勘違いするのも仕方がないと思いました。

:( ) で囲むとどのようにパースしているかが少しわかります。

タグ:

posted at 23:38:29

えび @Ebi_DensityFunc

20年9月27日

早くしたいコード、Cythonで書こうと思ってたけど、Juliaで呼び出しできそうならJuliaにしようかな

タグ:

posted at 23:35:48

げだ @__elgueda

20年9月27日

Julia触ってみたけど、すっきり速いものが書けるのがたのしい
Juliaが強い領域はちょうど自分の学科に被ってる感じするし、卒研とかで使いそう(?)

タグ:

posted at 23:28:05

非公開

タグ:

posted at xx:xx:xx

abap34 @abap34

20年9月27日

ただ単にソースを延々追うはずが、非Juliaユーザからの期待に声にお応えして(?)解説をどんどん追加していった結果量がすごいことになっている....

タグ:

posted at 23:26:06

大山 椒魚 @zyuer

20年9月27日

@genkuroki 自分も先ほど色々試した所,抽象型の定義を間違えて関数にも適用しようとしていたことが原因とわかりました…
完全に自分のケアレスミスなので撤回させていただきます.
きちんと型推論は仕事してました.

タグ:

posted at 23:17:47

るふぁ @lpha_z

20年9月27日

はてなブログに投稿しました #はてなブログ
浮動小数点数を足すだけのプログラムがC言語よりJuliaのほうが速い、について - よーる
lpha-z.hatenablog.com/entry/2020/09/...

タグ: はてなブログ

posted at 23:15:00

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@zyuer #Julia言語 というわけで、【Julia,基本的に便利だけど型推論に失敗すると引数関連で見当違いなエラーが出るな…】は完全な早とちりで、表示されたエラーメッセージにそのまま従えば動いていました。

タグ: Julia言語

posted at 23:13:32

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@zyuer #Julia言語

試してみました!↓
gist.github.com/genkuroki/21db...

エラーメッセージがものすごく分かり易く、エラーの原因はすぐにわかります。

ArgumentError: <:: too few arguments (expected 2)

<: は二項関係なのに引数がFuncの1つしか与えられていない。エラーが出るのは当たり前でした。 pic.twitter.com/r4JHzUW5YT

タグ: Julia言語

posted at 23:12:33

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@cometscome_phys @HShinaoka #Julia言語

nbviewer.jupyter.org/gist/genkuroki...

ではπのモンテカルロ計算で

using RandomNumbers

rng = Xorshifts.Xoroshiro128Plus()
for ~
rand(rng)を使うコード
end

としたら、10⁶回ループで

0.80 ms → 0.71 ms

と少しだけ速くなりました(スレッド並列版)。

twitter.com/genkuroki/stat...

タグ: Julia言語

posted at 22:32:11

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@dc1394 @unedSCLv2 #Julia言語 私はJuliaどうしの比較が(角も立たず)非常に面白いと思っていて、もとのコードに私が手を入れることによって、結果的に同じJuliaで100倍を軽く超える高速化が実現されています。

* 無駄の削除
* スレッド並列化
* より高速な擬似乱数発生器の選択

twitter.com/genkuroki/stat...

タグ: Julia言語

posted at 22:27:02

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 同じJuliaでも、メモリ割当頻発版とスレッド並列でしかもXoroshiro128Plusを使ったバージョンを比較すると、

75 ms → 0.71 ms

と軽く100倍以上速くなっている!

同じJuliaでも無駄のないコードの書き方とスレッド並列化と擬似乱数発生器の選択によって速さが全然違う。

タグ: Julia言語

posted at 22:23:36

matsueushi @matsue_ushi

20年9月27日

Julia でネストしている Dict を struct にマッピングする matsueushi.github.io/posts/julia-ma...

タグ:

posted at 22:23:36

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語

πのモンテカルロ計算での
N=10⁶回ループにかかる時間のまとめ

25 ms ←問題有りのgcc版

以下Julia版
75 ms ←問題有りの1 (メモリ割当頻発)
27 ms ←問題有りの2
3.2 ms ←普通の3
1.3 ms ←nprocs()=4の分散処理の4
0.80 ms ←nthreads()=8の並列処理の5
0.71 ms ←Xoroshiro128+の6

タグ: Julia言語

posted at 22:20:43

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語

gist.github.com/genkuroki/ab5b...
gcc vs. julia

を更新した。添付画像1の部分が間違っていたのを直した。RandomNumbers.Xorshifts.Xoroshiro128Plus() を使うと少し速くなることを確認した(添付画像2)。 pic.twitter.com/N4GwwrrxA9

タグ: Julia言語

posted at 22:18:06

Yuki Nagai @cometscome_phys

20年9月27日

@HShinaoka 面白そうですね!やってみます

タグ:

posted at 21:45:09

Hiroshi Shinaoka @HShinaoka

20年9月27日

@cometscome_phys こちらに切り替えるともう少し速くなりませんか?
sunoru.github.io/RandomNumbers....

タグ:

posted at 21:42:07

えび @Ebi_DensityFunc

20年9月27日

Julia体感だと数値計算に使いたい/使ってる人が多そう。

タグ:

posted at 21:41:00

honeybeesqueen @honeybeesqueen

20年9月27日

わざわざお店のおねえさんが、
「せっかくなので!動画とか撮らなくていいですか?」
と勧めてくださったので…
美味しかったのでまた食べに行くよ!
因みに相方さんのはラムレーズンのパンケーキ

タグ:

posted at 21:37:50

honeybeesqueen @honeybeesqueen

20年9月27日

プレミアムティラミスパンケーキになるところです。
(音声注意!) pic.twitter.com/MiqDKN6xhn

タグ:

posted at 21:36:26

dc1394 @dc1394

20年9月27日

C++とJuliaで、Gauss-Legendre積分の速度比較をやってみます。JuliaのGauss-Legendre積分には、教えてもらったFastGaussQuadrature.jlを使って、C++のGauss-Legendre積分には、ALGLIBを使います。Fortranも試してみたいけど、数値積分ライブラリにどれを使えばいいのか分からない…。

タグ:

posted at 21:35:47

Yuki Nagai @cometscome_phys

20年9月27日

Juliaの標準の乱数に切り替えると168.36sに。なるほど。面白い

タグ:

posted at 21:35:46

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@dc1394 @unedSCLv2 #Julia言語 「論よりコード」続き

以下のリンク先はC側(gcc)とJulia側の両方で失敗しているせいで、遅くなっている場合です。

Julia側では、複数のプロセスを使う分散処理と、スレッド並列の両方に実演もやってみせています。

gccとJuliaの比較より、Juliaどうしの比較のほうが興味深いです。 twitter.com/genkuroki/stat...

タグ: Julia言語

posted at 21:35:06

Yuki Nagai @cometscome_phys

20年9月27日

乱数をFortranと同じのままループアンローリングを駆使することで180.41sまで減らせた。

タグ:

posted at 21:32:50

Bruce Tate: grox.io @redrapids

20年9月27日

more from of grox.io's first #julialang module:

Delay typing decisions.

f(x) = x^2 + 5x - 3
-> f (generic function with 1 method)

f(6)
-> 63

julia> f(6//7) # rational numbers
-> 99//49

Julia devs think of functions as templates.

タグ: julialang

posted at 21:23:19

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@zyuer おお!
面白そうなので後で自分でも試してみます!
ありがとうございます!

タグ:

posted at 21:23:00

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@dc1394 @unedSCLv2 #Julia言語 こんな感じでJuliaでも他言語同様に失敗している個所ごとに数倍ずつ遅くなって行きます。

しかし、公式Performance Tipsに忠実に従うだけでそういう失敗をかなり防げます。

docs.julialang.org/en/v1/manual/p...

このPerformace TipsはJuliaを使い始める人が最初に読むべき文書だと思います。

タグ: Julia言語

posted at 21:21:14

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@dc1394 @unedSCLv2 #Julia言語 「論よりコード」なので、Juliaで速度的に劣化する典型的なパターンを『経済セミナー』の連載記事関連のJuliaのコードで説明しているのが以下のリンク先。

私が、そのJuliaのコードで使っているパッケージに十数文字変更を加えただけで倍以上速くなっています。

25.5秒→11.2秒

続く twitter.com/genkuroki/stat... pic.twitter.com/oDvsec460b

タグ: Julia言語

posted at 21:17:09

Massimo @Rainmaker1973

20年9月27日

If you use a laser pointer on a diamond or any crystal jewel, you will get an interesting effect that shows you how beam splitters work buff.ly/2JGk59B [source of the gif: buff.ly/2LbL0Qe] pic.twitter.com/6m0oCvB0K7

タグ:

posted at 21:00:15

dc1394 @dc1394

20年9月27日

@genkuroki @unedSCLv2 なるほど。Juliaでも、適当な書き方をすると遅くなるのですね。誤解していました。ご指摘、ありがとうございます。
ただ、「ベストに近いものを末端ユーザーでも楽に使いやすい」と言うのは非常に魅力的です。

タグ:

posted at 20:40:43

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@dc1394 @unedSCLv2 #Julia言語

「Juliaでは他言語では遅くなる書き方をしても速い」なんてことは決してない。そんな魔法はないです。しっかり遅くなります。

しかし、開発者達とパワーユーザー達が計算速度に強い関心を持っており、ベストに近いものを末端ユーザーでも色々な意味で楽に使い易いです。これ、結構重要。 twitter.com/dc1394/status/...

タグ: Julia言語

posted at 20:36:29

dc1394 @dc1394

20年9月27日

@genkuroki @unedSCLv2 詳しい情報ありがとうございます。C++とJulia(とFortran)のどちらが速いかは、簡単なコードを書いて実測した方が良さそうなので、ちょっと試してみます。

タグ:

posted at 20:34:38

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@dc1394 @unedSCLv2 #Julia言語 『経済セミナー』の記事に付属のJuliaのコードは、Juliaの公式ドキュメントのPerformance Tips (で強調されている型安定性の重要性)に反しているので、それを速度比較の例として持ち出す人が「よく分かっていない人」なので要注意。 twitter.com/genkuroki/stat...

タグ: Julia言語

posted at 20:27:49

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@tomoak1n 「昔から価値があるとされて来た」とか「権威ある有名な~が提案した」とか「シングルディスパッチの世界では役に立っていた」とかの事実は、#Julia言語 という特定の状況でも価値が高いことを意味しないので、価値があると主張したければ別の根拠を詳細に述べる必要があります。

タグ: Julia言語

posted at 20:13:28

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@tomoak1n #Julia言語 多重ディスパッチの世界で「ある種のスタイルでメッセージパッシングの意味でオブジェクト指向を補助する価値」が高いという証拠はないと思います。

そういうものの価値が高いという考え方を安易に信じられる人達が沢山いることの方が問題かも。

タグ: Julia言語

posted at 20:08:27

河合祐介 @tkawai18_tkawai

20年9月27日

こういうアホな研究やってるから小学校の算数とかが駄目なんだろうなぁ
www.hiroshima-c.ed.jp/pdf/research/c...

タグ:

posted at 20:06:18

madfish @madfish19

20年9月27日

#超算数 算数教育の式の意味理解の定義が全く理解できない。🐙www.hiroshima-c.ed.jp/pdf/research/c...

タグ: 超算数

posted at 19:46:51

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@takusansu @miyuki_MathT #数楽 Z≠0 の X : Y : Z は x : y : 1 と一意的に書けるので、それを平面上の点 (x, y) と同一視すると、無限遠点達は X : Y : 0 達と同一視される。リンク先の (∞, ∞)=(-∞, -∞)は 1 : 1 : 0 = -1 : -1 : 0 という意味のつもり。

双曲線 y²=x²+1 の扱いで役に立つ話。 twitter.com/genkuroki/stat...

タグ: 数楽

posted at 19:13:59

大山 椒魚 @zyuer

20年9月27日

@genkuroki これですね(ユーザー名違いますけれど自分で移植したコードです)
github.com/skypenguins/de...

functions.jlのコメントアウトしてある「バッチ対応版ソフトマックス関数」だと一応動作するので,関数の引数の型指定していないのが原因かな…と推測しました.

タグ:

posted at 18:44:45

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@takusansu @miyuki_MathT #数楽

中学校でも教えないみたいですが、同値類で定義する「普通の数学」における比の定義では

1 : 0 = 10 : 0 = 100 : 0 = …

です。1/0 も受け入れるならそれはそれで立派なものだと思いますが、a : b = a/b のスタイルはそういう自由さとは逆向きのスタイルなんだろうね。

タグ: 数楽

posted at 18:27:46

TN @tomoak1n

20年9月27日

@genkuroki x-->f()
は完全には却下されていないけど採用されそうにない感じ。
入れると、言語が複雑になるデメリットを超えるかどうかの衡量が難しいよう。

タグ:

posted at 18:27:34

TN @tomoak1n

20年9月27日

@genkuroki 「f(x,y,z) のx,y,zが平等」であることは、x.f(y,z)とf(x,y,z)を同一にする技術的・論理的障害ではない。Mod.fとの構文上の衝突は問題。しかして「.」と異なる記号なら容易。

x.fを認めないのは、多態性はサポートしてもメッセージパッシングの意味でオブジェクト指向を補助する気がないということ。

タグ:

posted at 18:23:03

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 たぶん、根本的な解決法は、Base.@ irrational マクロで定義されるIrrational型定数とは違う別の定数のシステムを自分で作ること。

自前定義型の定数どうしや整数や有理数との積が自前定義型定数になるようにしておけば、自然に見えるコードを書き易くなると思う。

タグ: Julia言語

posted at 18:20:18

@kankichi57301 @kankichi57301

20年9月27日

@sekibunnteisuu 「(交換則は)たまたま成り立っている」論は銀林の文章で見たような。#超算数

タグ: 超算数

posted at 18:18:43

Shuhei Kadowaki @kdwkshh

20年9月27日

zennでJuliaの型推論についてちょっとした知見をまとめた簡単な記事を書いてみました。
UIが綺麗だし簡単にGitHubと連携できてとても快適 :-)
よければ読んでみてください:

zenn.dev/aviatesk/artic...

#julialang #zenn

タグ: julialang zenn

posted at 18:18:24

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語

Base.@irrational _2π 6.283185307179586476925286766559 2big(π)
const _2pi = _2π

のように定数 _2π を定義してしまうのはダメかな?

τにしてもいいのですが、τが2πの意味で使われることもあることを知らない人にとっては困る。続く

twitter.com/mkashi/status/... pic.twitter.com/D7fb3byUPU

タグ: Julia言語

posted at 18:15:57

Shisato @4310sy

20年9月27日

はてなブログに投稿しました #はてなブログ #julialang #Algorithms
ユニークな文字列かを判定するアルゴリズムの概要とJuliaサンプルコード - EurekaMoments
www.eureka-moments-blog.com/entry/2020/09/...

タグ: Algorithms julialang はてなブログ

posted at 17:58:16

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 以上を読めば、

* 多重ディスパッチさえあれば柔軟にコードの再利用が可能になり、「クラス」はいらなくなること

* Juliaがx.f(y,z)のスタイルを採用しない理由

* 名前の衝突には名前空間の分離で対処する方針

などを理解できると思う。

多分、Juliaを使わなくても役に立つ知識。

タグ: Julia言語

posted at 17:44:52

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 名前空間を分離したければ、そのため専用の

module ModuleName ~ end

という書き方を使えという単純な仕組みです。

同名の函数のどれが実行されるかは多重ディスパッチで決まり、名前の衝突には名前空間の分離で対処する、というものすごく単純明快な仕組み。すぐに理解できるはず。

タグ: Julia言語

posted at 17:38:43

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 続き

Juliaでは f(x,y,z) のx,y,zが平等なので、そういうわけには行きません。

名前の衝突を防ぐためには、

module MyModule

別の名前空間

end

という書き方による名前空間の分離が使われます。MyModule内の名前fooには MyModule. foo の形式でアクセス可能。

タグ: Julia言語

posted at 17:35:08

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 最後に名前の衝突の回避法について。

「f(x,y,z)をx.f(y,z)のように書いて、どのfが実行されるかがxの型で決まる」というシングルディスパッチの世界では、そのfはxの型の保有物とみなされ、x.f という書き方によって、xとは異なる型のwに関するw.fとは完全に区別される。

続く

タグ: Julia言語

posted at 17:35:06

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 多重ディスパッチになっている時点でどれが実行されるかを相当に柔軟に決められるようになっているのですが、型から直接にではなく、型の属性の違いで多重ディスパッチさせることによって、ほとんど「何でもあり」の状態になります。

タグ: Julia言語

posted at 17:24:41

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 引数の型の組み合わせで同名の函数のどれが実行されるかを決める多重ディスパッチをナマで使うと、どれが実行されるかと引数の型が直接に結び付いてしまいますが、型そのものではなく、自由に決められる型の属性でどれが実行されるかが決まるようにできるわけ。しかも速度的劣化無しで。

タグ: Julia言語

posted at 17:22:21

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 中身のない型に「属性」というような意味合いを持たせ、各型S, T, U, …の属性を attr 函数によって定義し、f(x) で何が実行されるかを、xの型そのものではなく、xの型の属性で決まるようにするのが、Holy traitの方法です。

Juliaのパッケージのソースコードで結構見ます。

タグ: Julia言語

posted at 17:18:27

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 Holy traitでは、中身のない型を

struct A end
struct B end

のように定義し、これと既存の型S, T, …を組み合わせて

attr(::S) = A()
attr(::T) = A()
attr(::U) = B()
……

f(x) = f(attr(x), x)
f(::A, x) = 属性Aのf(x)の定義
f(::B, x) = 属性Bのf(x)の定義

と書きます。

タグ: Julia言語

posted at 17:18:26

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 それは Holy traitについてです。

多重ディスパッチはコンパイル前に同名のどの函数が実行されるかを決める仕組みなので、コンパイル後の律速段階になりません。

その仕組みを利用して、速度的劣化無しで、コードの再利用をさらに柔軟に可能にするのがHoly traitです。

タグ: Julia言語

posted at 17:09:23

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 おそらく、鋭い人は以上の説明を読んだだけで、クラスがないJuliaにおいて、どのようにしてオブジェクト指向デザインパターンをシミュレートできるかの見当がつくと思います。

実際にはそういう方向についてはもう1つ説明しておく必要がある。

タグ: Julia言語

posted at 17:05:55

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 他人が抽象型Aに属する型について、足し算などの基本演算が定義されていれば使える非常に便利な函数f(x::A, y::A)を作ってくれているとき、抽象型Aのサブタイプとして自前の型Mを作り、M型について必要な基本演算を定義してやれば、便利な函数f(x::A, y::A)を自分の型のMにも使えます。

タグ: Julia言語

posted at 17:03:16

abap34 @abap34

20年9月27日

こういうの作っとる pic.twitter.com/M9fTvHGRys

タグ:

posted at 17:02:25

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 多重ディスパッチはこれだけのことなので、難しいことを考える必要はありません。

自分で定義した型Mについて足し算などの基本演算を定義して、それらの基本演算だけで動く別の人が作った函数を利用したければ

Base.:+(x::M, y::M) = 型Mにおける+の定義式
……

と定義すればよい。続く

タグ: Julia言語

posted at 16:59:04

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 続き。より詳しくは、f(a, b) を実行しようとすると、f(x::A, y::B) を定めたコードがa, bの具体的型に応じて最適化されたネイティブコードに即時コンパイルされて実行されます。

多重ディスパッチと即時コンパイルの組み合わせによって、実際に実行されるかネイティブコードが決まる。

タグ: Julia言語

posted at 16:54:23

kashi @mkashi

20年9月27日

Juliaで、2 * pi * x みたいに書くとxがBigFloatでもpiが倍精度に落ちてしまう問題なんとかならんかなあ。2 * (pi * x) と書くしかない? 気付かずに精度が落ちちゃってるケースもありそう。

タグ:

posted at 16:53:56

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 例えばA,Bが具体的型名のとき、

f(x, y) = "fallback"
f(x::A, y, z) = "A"
f(x::A, y::A) = "AA"
f(x::A, y::B) = "AB"

が定義されているとき、a, b がそれぞれA, B型で、cはそれ以外の型ならば

f(b, c) -> "fallback"
f(a, c) -> "A"
f(a, a) -> "AA”
f(a, b) -> "AB"

となります。

タグ: Julia言語

posted at 16:49:50

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 続き

A>f(x, y, z) を x.f(y,z) と書くこともできて、同名の函数 f のどれが実行されるかが、xの型だけで決まってしまうのが、シングルディスパッチだ。

A>多重ディスパッチは、どのf(x,y,z)が実行されるかが、xの型だけではなく、x,y,zすべての型の組み合わせで決まる。

タグ: Julia言語

posted at 16:43:03

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 続けてするべき話は

Q>Juliaでは函数の引数の型の記述はしないのか?

A>する。ただし、多重ディスパッチのために。

Q>多重ディスパッチとは何だ?

A>例えば、同名の函数f(x, y, z)が複数定義されているとき、x,y,zの型の組み合わせでどのf(x, y, z)が実行されるかを決めることだ。

タグ: Julia言語

posted at 16:39:35

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 Int64やFloat64のような具体的な型名を一切含まないコード(気楽に書いた人は実際にそうなりやすいでしょう)は、そのままでもしくはちょっとした手直しで、Int64やFloat64以外の型でも通用するコードになっています。例えば、

f(x) = 2x^2 + 3x - 1

におけるxはほぼ「何でもよい」。

タグ: Julia言語

posted at 15:43:26

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 Juliaを気楽に使うときには、整数型はInt64で浮動小数点数型はFloat64だと決め打ちして使うとよいです。

超高速に計算してくれるコードをInt64やFloat64のような型名を一切書かずに書けます。

これ、実際に体験すると結構感動します。

タグ: Julia言語

posted at 15:39:11

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 Juliaをそういう「Int64, Float64がデフォルトで使われることに頼るスタイル」で使っているのに、「Int64やFloat64で函数の引数の型を指定すれば、それら以外の型の数値が引数として与えられたときにエラーが出てありがたい」というようなことを考えるのは非常におかしいと思います。

タグ: Julia言語

posted at 15:34:27

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 数値の型がInt64とFloat64しかなくても困らないケースが非常に多い!

Julia言語はそういう場合には型名を一切書かずに気楽に書いて、CやFortean並の速さで計算速度を実現可能なわけ。

型名を書かなくても便利に使えるように注意深く設計してあるのに、わざわざ型名を書きたがるのは変。

タグ: Julia言語

posted at 15:29:28

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 Juliaは初心者でも楽に使えるように、Int64とFloat64型の数値は特別な配慮抜きで扱えるようになっています。

Int64とかFloat64と型名を書かなくても、気楽に書けばほぼ自動的にInt64とFloat64型の数値が使われることになります。

そういう意味で、型名を書かなくても十分実用的に使える。 twitter.com/genkuroki/stat...

タグ: Julia言語

posted at 15:26:04

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@pmagshib @kikumaco #Julia言語

function f(x::Float64) ~ end

と書き続けると、Juliaのメリットを活かせる「型が伝搬するようにコードを書く」というスタイルに決して移行できなくなってしまう大きなリスクがあると思います。

もちろん、手抜きの一種としてなら、Int64, Float64で押し通すことも合理的ですが。

タグ: Julia言語

posted at 15:19:11

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@pmagshib @kikumaco #Julia言語

function f(x::Matrix{Float64}) ~ end

のように書いてしまう段階では、引数の型が伝搬するように書いてもいないだろうし、viewの使用も困難になる。

初めのうちはInt64とFloat64やArray, Vector, Matrixで押し通してもよいと思いますが、型の伝搬を書くようにした方がお得。

タグ: Julia言語

posted at 15:14:14

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@pmagshib @kikumaco 誤爆していたので再投稿

#Julia言語 IntもFloatも64bit版しか使わないと言っているのに、どうして、Int32やFloat32でエラーが出てくれることが必要だと思ってしまうのかが不思議。

Int32, Float32型の数値は意識して作らないと作れないので、自動的にそれらが生じる心配をしなくてもよいですよね。

タグ: Julia言語

posted at 15:07:29

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@pmagshib @kikumaco #Julia言語 確かにそういう場合もあります。ゼロではない(笑)

Int64とFloat64しか使わないという理由で雑にコードを書いている段階で気にするような話ではないと思います。

Int64, Float64以外でも通用する型安定なコードを書き始めるのが先。そうしたほうがデバッグをやり易くなると思います。 twitter.com/kikumaco/statu...

タグ: Julia言語

posted at 15:05:46

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 「それだと困るのでJuliaは使えない」と即断する人は、JuliaにはJuliaの優れた点があることを無視しており、それまでに自分の視界に入った事柄だけに基く、視野狭窄に陥っていることを自覚するべきだと思います。

「静的型付け」がないと絶対に困る人は確実に視野狭窄に陥っていると思う。

タグ: Julia言語

posted at 14:45:59

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 Juliaで以下の考え方は通用し__ません__。

* 函数の引数の型宣言をしっかりした方がコンパイラによる最適化がうまく行って計算速度が上がる。

* 函数の引数の型宣言をしっかりできた方がコンパイラの型チェックによって安全が保たれる。

これらの考え方はJuliaでは通用しない。

タグ: Julia言語

posted at 14:42:37

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 前もってすべてをネィティブコードにコンパイルして、実行可能ファイルを作ることによって利用されるプログラミング言語環境とJuliaは全く違う。

Juliaを使う場合には、前者のメリットしか知らず、視野狭窄の自覚もない人達の考え方に影響されないように注意するべきです。

タグ: Julia言語

posted at 14:33:39

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語

さらにJuliaではプログラムを自動生成できるので、プログラムの実行中に目的に応じて最適な函数のコードを自動生成して、それを即時コンパイルして実行する仕組みを実現できます。

これは、計算速度の点で大きなメリットがあります。

欠点は即時コンパイル時に遅延が生じることです。

タグ: Julia言語

posted at 14:28:06

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 具体的な引数を与えて函数を実行するときに、Juliaはその函数をネイティブコードにコンパイルして即実行します(所謂JIT)。

だから、函数のコードを書く側が、函数の引数を記述しなくても、Juliaのコンパイラはコンパイル時に函数の引数の具体的な型を全部知っています。

タグ: Julia言語

posted at 14:22:42

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語

Juliaでは、初心者向きに、Int64とFloat64を自然に作り易くなっており、数値計算での型の違いについてはInt64とFloat64の違いを認識しておけばよいと思う。

おそらく、初心者のうちは、函数の引数の型は書かない方が無用なトラブルにあう確率は小さくなる。 twitter.com/genkuroki/stat...

タグ: Julia言語

posted at 14:22:41

Yuki Nagai @cometscome_phys

20年9月27日

Juliaのデフォルトの乱数に入れ替えることでさらに20sくらい速くなった。

タグ:

posted at 13:54:57

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@pmagshib @kikumaco #Julia言語 函数の引数としてFloat64, Int64もしくはそれらの配列しか与えないことが確実なら、なおさら「エラーが出易くなるから云々」はナンセンスで、函数の引数の型指定の記述はいらないと思います。

f(x::Float64) = ~ と書いても、速くはならないし、特殊な場合を除いて安全にもならない。 twitter.com/kikumaco/statu...

タグ: Julia言語

posted at 13:52:49

Yuki Nagai @cometscome_phys

20年9月27日

なおFortran写経したJuliaコードは267.14sだったので、満足感がある

タグ:

posted at 13:44:46

Yuki Nagai @cometscome_phys

20年9月27日

モダンな感じで書いたWilsonFermion入りSU(3)の格子QCDのJuliaのコード、ついにFortranのコードより速くなった。4^4,beta=6の10trj、CGの収束eps1e-19で、Fortran版が227.40sでJulia版が213.57sとなった。しかしまだJulia版高速化できそうなのでもう少し遊んでみよう

タグ:

posted at 13:43:18

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@pmagshib @kikumaco #Julia言語 デバッグのためにも、

function f(A::Matrix{Float64})

end

のように書くべきではないと思います。

私の経験では、函数の無用に狭い型指定は、無用な no method matching エラーの原因になったり、デバッグのための試行錯誤を困難にしたりと、害が非常に大きいです。

タグ: Julia言語

posted at 13:22:15

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@pmagshib @kikumaco #Julia言語 行列の計算ではFloat64の精度で足りない場合が結構容易に生じ、そういう場合にはどこに不具合の原因があるのか特定するのが難しくなります。

Float64でしか動かないコードを書いているとFloat128などを使って精度の問題が原因なのかを確認できなくなります。

タグ: Julia言語

posted at 13:18:56

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@pmagshib @kikumaco #Julia言語 「f(x::Float64) = ~ のような書き方をした方がエラーが出易くなってありがたい」のような考え方が有効な場合は稀。

そういう書き方をすると、方法的に精度が低い計算になっていないかを確認し易くするために、Float32のxに適用してみるというようなこともできなくなる。

タグ: Julia言語

posted at 13:14:52

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@pmagshib @kikumaco #Julia言語 以下のリンク先の考え方が有効な場合は

f(x::Float64) = ~

では稀。

例えばFloat64専用の特殊函数の実装を行うならf(x::Float64)と書くべき。

そういう特殊なケース以外では、Float64の引数をFloat32の引数に変えたときに積極的にエラーが出た方がありがたいことはほぼないです。 twitter.com/kikumaco/statu...

タグ: Julia言語

posted at 13:09:59

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@pmagshib @kikumaco #Julia言語 さらに細かいことを言えば

p(x) = 2.0x

のように書くのもやめた方が良いです。これだほぼp(3)が整数ではなく6.0になってしまう。

q(x) = 2x

の方がシンプルでかつ q(3)が6になってくれて、q(3.0)はp(3.0)と同じネイティブコードで実行されます。 pic.twitter.com/pChkEjqNt3

タグ: Julia言語

posted at 13:03:05

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@pmagshib @kikumaco #Julia言語 使い回しが最大限に効く最もジェネリックな函数を書きたければ、引数の型を一切指定せずに書いた方がよいです。

函数の引数の具体的な型は、その函数のユーザーがその函数を使うときには決まっているので、函数の定義時に引数の型をjuliaに教えてあげる必要はないわけです。

タグ: Julia言語

posted at 12:54:50

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@pmagshib @kikumaco #Julia言語

g(A::Array) = println(A)

も当然ダメです。これだと

X = collect(1:5)
A = @ view X[2:4]
g(A)

で no method matching エラーになります。

Juliaの型システムについてよく理解していないなら、「函数の引数の型指定はしない」と覚えておけば無難だと思います。

具体的に害がある。 pic.twitter.com/uWbhEauhyw

タグ: Julia言語

posted at 12:46:58

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@pmagshib @kikumaco #Julia言語 むしろ、Juliaの型システムを理解していない人による函数の引数の型指定は、初心者にはすぐに原因が特定できない no method matching エラーの原因になるので、特に初心者にJuliaを教える場合には

f(x::String) = println(x)

のようなコードを書いてしまう方向に誘導しちゃダメです。 pic.twitter.com/crbDaeesje

タグ: Julia言語

posted at 12:41:56

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@pmagshib @kikumaco #Julia言語 Juliaでは、函数の引数の型を指定しても、多重ディスパッチで使われるだけで、コンパイル時の最適化が改善したりしないし、型チェックによる安全性も得られません。

函数の引数の型の指定はその函数が適用される範囲を狭くするだけの働きしかないです。続く

タグ: Julia言語

posted at 12:37:15

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@pmagshib @kikumaco #Julia言語 Float64専用に函数なのであれば、

function f(x::Float64)

end

と書いた方がよいですが、普通に書いたらFloat64専用のコードにはなりにくいと思います。

Float64のx以外に動かないことが分かっている場合以外には

function f(x)

end

と書いた方が得です。続く

タグ: Julia言語

posted at 12:33:13

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@Y_F_Acoustics @bicycle1885 @ari23ant #Julia言語 Juliaの「仮想環境」はjulia自身がサポートしていてかつシンプルで分かりやすいです。

一方、正直な話、Pythonの「仮想環境」は私のようなライトユーザーの素人には理解不能な世界。それが原因で多くのトラブルを生んでいるように見えます。これはJulia側の問題ではないです。

タグ: Julia言語

posted at 12:18:44

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@Y_F_Acoustics @bicycle1885 @ari23ant #Julia言語 要するに、READMEやドキュメントに従って、Pythonとの連携関係のパッケージを入れていれば、minicondaが自動的にインストールされることはなく、既存のAnacondaをJuliaから使えるようになっていたということです。

私も以前はAnacondaのpythonをJuliaから使っていました。

タグ: Julia言語

posted at 12:15:21

Yuki Fukuda @Y_F_Acoustics

20年9月27日

@genkuroki @bicycle1885 @ari23ant この方法知りたかったです!何から何までありがとうございます!

タグ:

posted at 12:13:27

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@Y_F_Acoustics @bicycle1885 @ari23ant #Julia言語 IJulia.jlでも似た注意が必要で、juliaにjupyterコマンドの位置を教えるために

julia> ENV["JUPYTER"] = "C:\\Anaconda3\\Scripts\\jupyter.exe"
julia> ]
pkg> add IJulia
pkg> build IJulia

のようにする必要があります。

julialang.github.io/IJulia.jl/stab...

タグ: Julia言語

posted at 12:11:12

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@Y_F_Acoustics @bicycle1885 @ari23ant #Julia言語 続き。例えば、Windows環境でJuliaのために用意したAnaconda仮想環境のpython.exeが

C:\Anaconda3\env\julia\python.exe

にあるならば

ENV["PYTHON"] = "C:\\Anaconda3\\env\\julia\\python.exe"

してから、上記の作業をすればよいはずです。

間違っていたらごめんなさい。続く

タグ: Julia言語

posted at 12:06:45

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@Y_F_Acoustics @bicycle1885 @ari23ant #Julia言語 具体的には、

julia> ENV["PYTHON"] = "PyCallで使用したいpythonバイナリ(フルパス)"
julia> ]
pkg> add PyCall
pkg> build PyCall

とすれば、PyCall.jlから、指定したpythonバイナリを使うようになります。説明の追加に続く

タグ: Julia言語

posted at 12:02:27

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@Y_F_Acoustics @bicycle1885 @ari23ant #Julia言語 続き~、juliaがminicondaを自動的にインストールするのをやめてくれます。

PyCall.jlのインストール時にはPyCall.jlで使うpythonバイナリをENV["PYTHON"]の設定で教えるというような説明が、PyCall.jlのREADME

github.com/JuliaPy/PyCall...

にあります。具体的手順に続く

タグ: Julia言語

posted at 11:59:12

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@Y_F_Acoustics @bicycle1885 @ari23ant #Julia言語 【Juliaを導入する前にAnacondaを使っていたのですが,JuliaでPyCallをインストールした際に自動でインストールされるminicondaに権限を奪取され】の「権限を奪取され」の部分が理解できないのですが、既存のAnaconda内のpythonを使うようにPyCall.jlをインストールすれば~続く

タグ: Julia言語

posted at 11:55:21

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@zyuer #Julia言語 【Julia,基本的に便利だけど型推論に失敗すると引数関連で見当違いなエラーが出るな…】

そうなる具体的なコードを教えて頂ければうれしいです。

タグ: Julia言語

posted at 11:09:45

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 関連

sum(f, A) や mean(f, A)

は見た目が簡潔だし、

sum(f(a) for a in A) や mean(f(a) for a in A)

より有意味で精度が高い場合がある。これらを

sum(f.(A)) や mean(f.(A))

と書くとメモリ割当が発生して損をすることになる。 twitter.com/goropikari_/st...

タグ: Julia言語

posted at 11:05:00

goropikari @goropikari_

20年9月27日

sum は第1引数に関数取れたのか。mapreduce よりこっちのほうがパット見わかりやすいな。
(Julia slack にて知る)
docs.julialang.org/en/v1/base/col...

タグ:

posted at 09:50:20

marocas @marroncastle917

20年9月27日

そのうちjulia入門したいなあ

タグ:

posted at 07:41:55

JuliaCon 2023 @JuliaConOrg

20年9月27日

If Runtime isn't Funtime: Controlling Compile-time Execution
Presented by Nathan Daly
Livestream: www.youtube.com/watch?v=JCFej-...
Abstract: pretalx.com/juliacon2019/t...
#JuliaLang #JuliaCon

タグ: JuliaCon JuliaLang

posted at 05:16:00

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語

ソースコード
gist.github.com/genkuroki/599d...

の「不適切」な部分を書き直した。

@ eval meets(::$A, ::$B) = _Verb[$i, $ j]

を実行すると右辺に大域変数が含まれてしまう。

v = _Verb[i, j]; @ eval meets(::$A, ::$B) = $ v

とすればそれを防げる。 pic.twitter.com/G8hyVTMJkk

タグ: Julia言語

posted at 05:06:14

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語

meets(::Dog, ::Dog) = "sniffs"
meets(::Dog, ::Cat) = "chases"
meets(::Cat, ::Dog) = "hisses"
meets(::Cat, ::Cat) = "slinks"

の代わりに

for (i, A) in enumerate(_Pet), (j, B) in enumerate(_Pet)
v = _Verb[i, j]; @ eval meets(::$A, ::$B) = $v
end

のようにも書ける。 pic.twitter.com/Ph5nduIswS

タグ: Julia言語

posted at 05:04:06

Julia News @julialang_news

20年9月27日

Notes on Synthesis and Equation Proving for Catlab.jl www.juliabloggers.com/notes-on-synth... #juliabloggers

タグ: juliabloggers

posted at 04:36:43

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@Y_F_Acoustics @bicycle1885 @ari23ant 【一時期Pythonへの置き換えとしてJulia(当時はv1.3でした)を検討していた時に、使っていたAnaconda環境が破壊されたりした】

その言い方だとまるで「JuliaにAnaconda環境が破壊されたりした」と主張しているかのように読めてしまうので、「流れ的」に非常にまずいのではないかと思いました。

タグ:

posted at 02:22:33

ニケ @LingkoNIKI

20年9月27日

@satodainu @yagitakeshi やぎさんはもう年とらへんねんな

タグ:

posted at 01:33:55

ファインマンbot @feynmannnn

20年9月27日

僕の息子はいま哲学の講座を取ってるんだが、昨夜、一緒にスピノザによる論考を読んでたら、これがおよそ子どもっぽい論理じゃないか!やれ属性だ、実質だと、てんで無意味な御託が並んでる。僕らはとうとう笑いだしてしまったよ。

タグ:

posted at 01:31:38

Stefan Karpinski @StefanKarpinski

20年9月27日

@asmae_toumi @dragonflystats @znmeb @ipnosimmia That’s not an uncommon reaction when people encounter @ChrisRackauckas’ work for the first time 😁

What’s even more intense is just how much of it there is

タグ:

posted at 01:31:04

非公開

タグ:

posted at xx:xx:xx

黒木玄 Gen Kuroki @genkuroki

20年9月27日

@shumanalysis #Julia言語

f(arg...; kwarg...) = g(arg...; kwarg...)

g(x, y) = x + y
f(1, 2)
→3

g(; a, b) = a + b
f(a=1, b=2)
→3

g(; a=10, b=20) = a + b
f()
→30
f(a=1, b=2)
→3 pic.twitter.com/4TYeThJFGm

タグ: Julia言語

posted at 01:13:08

Julia Bloggers @juliabloggers

20年9月27日

New post: Notes on Synthesis and Equation Proving for Catlab.jl - www.juliabloggers.com/notes-on-synth... #julialang pic.twitter.com/vGqUSMed5V

タグ: julialang

posted at 01:13:01

非公開

タグ:

posted at xx:xx:xx

かえるるる @kaeru_nantoka

20年9月27日

余裕出てきたらパラレルワーク視野に入れてみようかな
nikkan-spa.jp/1692013

タグ:

posted at 00:59:16

Jon Erlichman @JonErlichman

20年9月27日

Web browser market share changes over the past 15 years:
pic.twitter.com/VVkYhoNB6H

タグ:

posted at 00:58:50

大' @satodainu

20年9月27日

八木さん @yagitakeshi が亡くなって、もう丸6年だ。

>八木さん - Togetter togetter.com/li/726536

タグ:

posted at 00:57:44

Stefan Karpinski @StefanKarpinski

20年9月27日

@asmae_toumi @znmeb @ipnosimmia Short version: when you do f(x, y) there are different methods of f that can be called; which one is called depends on the types of x and y

R can do this but it’s very slow (slower even then normal function calls); Julia is based on doing this everywhere and it’s very, very fast

タグ:

posted at 00:45:05

Yamanami @yamanamitakeshi

20年9月27日

数学の公理・定理といったものは、科学の法則と違って実験・観察に基づく経験則ではなく、論理によって厳密な証明が可能である。どんな科学者でも仮説から導かれる計算の結果と現実が食い違ったとき「数学が間違っている」などとは言わないのに、#超算数 擁護論者は平気で「算数と数学は違う」と言う。

タグ: 超算数

posted at 00:42:13

Yotaro @yotarokubo

20年9月27日

rustで書いてたFSTライブラリ移植してみようかなぁ。

タグ:

posted at 00:32:27

非公開

タグ:

posted at xx:xx:xx

Yotaro @yotarokubo

20年9月27日

S藤さんのJulia本が届いたので早速処理系をインスコしてみました。マクロと型アノテーションが強力そうで良い感じ。でも、やはりダイナミックタイピングの言語でデカいプログラムを書く気にはあんまりなれないなぁ。とりあえず普段ちょろっと計算するときのreplをjuliaにしてみようかなぁ。

タグ:

posted at 00:31:57

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#数楽 #Julia言語

* 気楽に使えるだけではダメ。速いは正義!

* 論よりコード!

* 一般的に証明されている(と思っている)ことであっても、具体例で確認しなければダメ!必要ならコンピュータも使いましょう!

タグ: Julia言語 数楽

posted at 00:22:33

加藤公一, 가토우 기미카즈(はむかず) @hamukazu

20年9月27日

ハッカー的心構え
1.この世界は解決を待っている魅力的な問題でいっぱいだ
2.同じ問題を二度解くような無駄はいやだ
3.退屈と単純作業は悪
4.自由は善
5.心構えは技能の代用にはならない
cruel.org/freeware/hacke...

3番とくに大事。

タグ:

posted at 00:22:01

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#数楽 #Julia言語 N→∞での漸近挙動について証明があると知っていても、

①有限のNでどれだけ近似されているか?

②証明できたつもりでいても本当は間違っていたりしないか?

など幾らでも疑問は出てきます。

たとえ一般的に証明されていることであっても、コンピュータで確認することは大事。

タグ: Julia言語 数楽

posted at 00:19:37

加藤公一, 가토우 기미카즈(はむかず) @hamukazu

20年9月27日

ハッカー精神と呼ばれるものですね。 twitter.com/musicisthebest...

タグ:

posted at 00:17:08

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#数楽 証明に繋がる議論の概要を知りたければ

genkuroki.github.io/documents/2016...

を見て下さい。

論理的スキルが十分ならそこに書いてある易しい場合の証明から、難しい場合の証明も作れると思います。

論理的スキルが十分有れば、易しい場合の証明を知っていることが大事なって来る。

タグ: 数楽

posted at 00:16:27

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 収束先の分布

p(x) = Z⁻¹ exp(-ax+ (b-1)√x)

のパラメータa,bの決定には

数値積分  QuadGK.jl
連立方程式 NLsolve.jl

の2つのパッケージを用いた。

数値積分で定義した函数の零点を求める計算なので計算時間が長くなることを心配したが大丈夫だった。

nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/EhvtI3JW3P

タグ: Julia言語

posted at 00:11:47

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#数楽 #Julia言語

これは分布

p(x) = Z⁻¹ exp(-17.48x + (49.36-1)√x)

に収束している場合。 pic.twitter.com/slevsnGgGl

タグ: Julia言語 数楽

posted at 00:07:14

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#数楽 #Julia言語

これは分布

p(x) = Z⁻¹ exp(-8.62x + (24.29-1)√x)

に収束している場合。 pic.twitter.com/R7ZRhvtYZx

タグ: Julia言語 数楽

posted at 00:06:32

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#数楽 #Julia言語

これは分布

p(x) = Z⁻¹ exp(-1.31x + (3.48-1)√x)

に収束している場合。 pic.twitter.com/7yyQzHjvmc

タグ: Julia言語 数楽

posted at 00:05:45

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語 #数楽

これは、指数分布 Z⁻¹ exp(-x/2) に収束している場合。 pic.twitter.com/0wkN0fWgD0

タグ: Julia言語 数楽

posted at 00:03:56

黒木玄 Gen Kuroki @genkuroki

20年9月27日

#Julia言語

nbviewer.jupyter.org/gist/genkuroki...
統計力学におけるカノニカル分布の最も簡単な場合

を更新した。

① f = log だけではなく、f = √ の場合の

p(x|a,b) = Z⁻¹ exp(-ax+(b-1)f(x))

型の分布に収束する場合を付け加えた。

②アニメ作成時にProgressMeterを使うようにもした。 pic.twitter.com/8dxRrxcRRJ

タグ: Julia言語

posted at 00:02:08

@genkurokiホーム
スポンサーリンク
▲ページの先頭に戻る
ツイート  タグ  ユーザー

User

» More...

Tag

» More...

Recent

Archive

» More...

タグの編集

掛算 統計 超算数 Julia言語 数楽 JuliaLang 十分 と教 モルグリコ 掛け算

※タグはスペースで区切ってください

送信中

送信に失敗しました

タグを編集しました