黒木玄 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年03月23日(火)
@omaclaren @sam_power_825 @morethanpriors The Julia @TuringLang ecosystem is working on solving these kinds of problems for things like ODEs etc. "In progress" was the word on the Julialang slack
タグ:
posted at 01:06:51
23歳になったcurlの作者のインタビュー。
curlはただのコマンドラインではないとの話がやっぱ強烈。libcurlが動作するOS、CPU、SSL libraryの数は圧巻。2019年からWolfSSLの社員としてcurlで食べられるように。元IBM。ずっとEmacsとgdb。メインはdebian。ビデオ会議はWin。debugに必要な時だけmac twitter.com/lobsters/statu...
タグ:
posted at 01:39:52
#Julia言語 宇宙開発でのJuliaの使用例
SatelliteToolbox.jl の最初のバージョンは2014年でJulia v0.3.0の時代!DifferentialEquations.jlを使っている。
【今では、Juliaはブラジルの宇宙計画の一部】
【他の言語を使っていたら、もっと大変なことになっていただろう】
discourse.julialang.org/t/julia-and-th...
タグ: Julia言語
posted at 02:43:31
#Julia言語
g_dirichlet!のコード中の -(4 - length(E[k])) * u[k] の項が、0に固定されている境界と u[k] を繋ぐバネ(自然長は0)から来る力を与えている。(E[K]はu[k]とバネで繋がっているu[j]の全体。2次元格子上の領域では4以下になる。)
これがディリクレ境界条件の離散化の仕組み。 twitter.com/genkuroki/stat... pic.twitter.com/klcMf1R4Gh
タグ: Julia言語
posted at 03:15:12
#Julia言語 #数楽
質点どうし及び質点と固定端がバネで繋がった系での力は
m_k d²u_k/dt²
= 質点kと繋がった質点j達との間のバネから来る質点kへの力
+ (もしもあるなら)質点kと固定端の間のバネから来る力
と書ける。m_k=1でバネ定数がh⁻²の場合のJulia語への翻訳が添付画像の枠内のコード。 pic.twitter.com/440j6rOERL
posted at 03:34:37
#Julia言語 添付画像枠内のコードを見れば分かるように、微分方程式を扱うコード自体は質点と質点及び固定端がバネで繋がった系一般を扱うことができている。
この部分は大学新入生レベルの物理で非常に易しい。
その易しい物理をほぼそのままJulia語に直訳できている点が重要なポイント! pic.twitter.com/R3YWeslKyU
タグ: Julia言語
posted at 03:37:48
#Julia言語 問題をコンピュータに与えるときには、数学や物理の教科書にあるような記述をほぼそのまま見易く直訳した形式で与えることができた方が便利。
添付画像のコードでは実際にそれに成功している。
初期条件の形状も函数f(x,y)で見やすく与えられている。 pic.twitter.com/v3pG96ObDc
タグ: Julia言語
posted at 03:40:38
#Julia言語
膜の形状を記述して、離散化するコードも書かなければいけない。(高級なことを一切せず、素朴にやっている。)
まず、膜の形状を記述する函数を書いた。
点が正五角形に含まれるかどうかを判定する函数。
この函数は振動する膜と無関係の数学的函数。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/gTLM43YNfP
タグ: Julia言語
posted at 03:48:25
#Julia言語 離散化はx軸とy軸を等間隔で離散化することによって行う。Julia語では区間[a, b]を両端のa,bも含めてN+1個に等分する点の全体は
range(a, b; length=N+1)
と書ける。
x = y = range(-1, 1; length=201)
の第10行はx軸とy軸の離散化を行なっている。 pic.twitter.com/kCulp6iACl
タグ: Julia言語
posted at 03:54:07
#Julia言語
* 点(x,y)が膜上の点であるかどうかを判定してくれる函数
* x軸とy軸の離散化
が与えられたら、
* 膜上も格子点全体の集合 V
* 膜上の各格子点がどの格子点と繋がっているかを記述するデータ E
を作る函数を作れば、膜の振動を大量のバネの振動に近似的に帰着できる。 pic.twitter.com/iZai0ilS1W
タグ: Julia言語
posted at 04:06:11
#Julia言語 そのときに、膜に含まれる格子点の配列Vを作ることは、膜上の格子点に1,2,…と番号をつけることに等しい。膜上も格子点から逆にその番号を得るための辞書V_dicも作っておくと便利である。 pic.twitter.com/UFTTNDSA4c
タグ: Julia言語
posted at 04:11:43
#Julia言語
(u(x+h, y) - u(x,y)) + (u(x-h) - u(x,y) ≈ u_{xx}(x, y)h²
なので、uのxによる2階の偏微分は
u_{xx}(x, y) = h⁻²((u(x+h, y) - u(x,y)) + (u(x-h) - u(x,y))
と書ける。x軸とy軸の離散化での刻み幅をhとしたとき、連続極限を取るためには、バネ定数をh⁻²にすれば十分である。 pic.twitter.com/yeIaYFllSc
タグ: Julia言語
posted at 04:15:59
#Julia言語 微分方程式として扱う場合には、膜内の格子点の個数分だけの自由度を持つ系として扱われ、初期条件を与えたり、数値解を視覚化するときには、xy平面上の格子の上での値を並べた行列としての記述が使われる。
それぞれのサイズを length, sizeとして定義しておいて、利用することにする。」 pic.twitter.com/TAWjWIsffQ
タグ: Julia言語
posted at 04:20:09
#Julia言語 自由度の長さを持つベクトルuとしての記述と、格子点上での値を記述する行列Uとしての記述を、行ったり来たりする函数を vec2mat, mat2vec として作っておく。 pic.twitter.com/GFNeppSCkT
タグ: Julia言語
posted at 04:24:23
#Julia言語
Juliaでは一般に、返り値がベクトルや行列になる函数を作るときには、すでに用意してあるベクトルや行列の成分として返り値を返す in-place 型の函数(名前の最後に!を付ける習慣)を経由するとよい。
添付画像のコードもそのようにしてある。 pic.twitter.com/AUIhwRWkV4
タグ: Julia言語
posted at 04:27:20
#Julia言語 【重要❗️】
新たにベクトルや配列を作ってメモリ割当を引き起こす函数をループの内側で使うと、メモリ割当に分量が爆発する場合がある。
すでに確保されたベクトルや配列を作業領域として使い回す函数を用意しておけば、そのようになることを防げる。
docs.julialang.org/en/v1/manual/p...
タグ: Julia言語
posted at 04:31:20
#Julia言語 以上の解説とDifferentialEquations.jlの公式ドキュメントを読めば、膜の振動を扱ったノートブック達
nbviewer.jupyter.org/gist/genkuroki...
nbviewer.jupyter.org/gist/genkuroki...
のコードを完全に理解できると思う。
これを見て自分でも色々やる人が増えると良いと思う。
タグ: Julia言語
posted at 04:37:39
#Julia言語 DifferentialEquations.jlのDynamicalODEProblemについては
diffeq.sciml.ai/stable/types/d...
diffeq.sciml.ai/stable/solvers...
を参照。
これは、シンプレクティック法を使いたい場合には(物理的な問題では使いたいことが多い)、特に参考になる情報である!
沢山の方法が実装されている。 pic.twitter.com/Bxmz1hoLp3
タグ: Julia言語
posted at 04:48:14
#Julia言語 本当は離散化もそれ専用のツールを使うべき。誰か
github.com/SciML/FEniCS.jl
を使って、このスレッドと同じことをできるなら、解説して下さい。
タグ: Julia言語
posted at 05:03:46
#Julia言語 DifferentialEquations.jlでは函数の引数の順序は概ね次のようになっている。
[微分したもの(dvまたはdu),] [速度 v,] 位置 u, パラメータ p, 時刻 t
例えばハミルトニアン函数は H(v, u, p, t) (pはパラメータ)の形式で作る必要あり。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/tvjk0cyCye
タグ: Julia言語
posted at 05:38:36
このツイートは現在1万7千ほどリツイートされていますが、この説は疑わしいです。オックスフォード英語辞典第2版は、1724年よりもずっと前の1660年の"French toast"の用例を載せているので。 twitter.com/goji_mutyu/sta...
タグ:
posted at 10:36:37
MeasureTheory⋅jl is coming along! Here's a little demo of using different parameterizations, and playing nice with SymbolicUtils⋅jl pic.twitter.com/02qqbXYRNc
タグ:
posted at 11:08:35
We avoid the computations for normalization at each step, because pic.twitter.com/bIddLajIQa
タグ:
posted at 11:12:02
いちろー@ビジネス系データサイエンティス @SalesAnalyticsJ
データ分析や数理モデル構築といえば、最近ではRやPython、Juliaなどの無料で使えるものが多数あります。
自動機械学習(Automated Machine Learning)も例外ではなく、幾つかあります。RやPyhton上で動かすものですが……
R automl
R RemixAutoML
AUTO-WEKA
Python auto-sklearn
Python TPOT
タグ:
posted at 12:25:00
#Julia言語 素晴らしい比較
* JuliaがPythonに全然似ていないことが分かる。
* Pythonで行列の積を @ と書くのは珍し過ぎ。
* JuliaとMATLABは似ている。
なぜか「JuliaはPythonっぽく書ける」と言う人がいるが、実際には「JuliaはPythonっぽく書けない」が正しい。
cheatsheets.quantecon.org twitter.com/ai_ningyo/stat...
タグ: Julia言語
posted at 12:55:48
#Julia言語 Closuresの例がおかしい。Juliaで
a = 2
F(a) = x -> a + x
f = F(a)
f(1.0)
→ 3.0
ならclosureのシンプルな例になっていると言えると思う。
F(a) = function(x) a + x end
や
F(a) = function f(x) a + x end
や
F(a) = f(x) = a + x
でもよい。
cheatsheets.quantecon.org pic.twitter.com/EzOXASiH3f
タグ: Julia言語
posted at 13:07:16
QuadGK.jl github.com/JuliaMath/Quad... を使って、predicted integralを計算してみた。Predicted ratioよりも近似値が実際の値に近い。twitter.com/kazmuzik/statu... twitter.com/kazmuzik/statu... pic.twitter.com/85r3qmk9J0
タグ:
posted at 15:34:33
非公開
タグ:
posted at xx:xx:xx
@RK201501 Juliaではメソッドは型の所有物だと考えないので、「メソッドはクラスの所有物」を意味する機能を #Julia言語 に追加するのは無理だと思います。
Julia側の言い分を代表しているのは多分これ↓
discourse.julialang.org/t/is-julias-wa...
github.com/JuliaGraphics/... を例に使った具体的な説明。
続く
タグ: Julia言語
posted at 18:29:28
@RK201501 Tamas Pappさんによる関連の発言も #Julia言語 側の言い分の代表例とみなせると思います↓
discourse.julialang.org/t/design-patte...
discourse.julialang.org/t/i-wrote-a-gu...
彼のこれ以外の発言も読む価値がある。
タグ: Julia言語
posted at 18:30:48
すごいな、様々な特殊な行列のみを作る関数集めたJuliaパッケージ:JuliaMatrices/SpecialMatrices.jl: Julia package for working with special matrix types. github.com/JuliaMatrices/...
タグ:
posted at 20:11:52
非公開
タグ:
posted at xx:xx:xx
食品安全情報blog2「論文:第四世代の電子タバコは無害ではない」uneyama.hatenablog.com/entry/2021/03/...
”www.eurekalert.org/pub_releases/2...
UC Riversideの研究はポッドアトマイザー(噴霧器)の有毒元素を同定
電子タバコ噴霧器は、ニコチン含有液体を入れた容器で、暖めるとエアロゾルを生じる。”⇒
タグ:
posted at 20:37:26
”(電子タバコ製品の写真あり。努力してヒトへの有害影響を減らしたネオニコチノイドがほんの僅かでも危険だという人たちがいる一方で、毒そのもののニコチンを吸入して害が少ないと言う人たちもいる。農薬関係者は何のために努力しているのか、虚しくなる)”
タグ:
posted at 20:37:28
Dolphins enjoy surfing ocean waves and it's very likely they have been doing this for millions of years. No suprise if they kindly ask you to get out of the way ow.ly/llJU30nrOki [source of the gif: buff.ly/2Kp8BIX] pic.twitter.com/0UgCMrOk1x
タグ:
posted at 21:00:42
ごまふあざらし(GomahuAzaras @MathSorcerer
#駆け出しあざらしを飼い主が応援する会
うごきかけのRadioButton pic.twitter.com/ZAU8TkdFlY
posted at 21:06:44
非公開
タグ:
posted at xx:xx:xx
非公開
タグ:
posted at xx:xx:xx
@_cormullion I think this is the first time anybody has told me "I used your open source software to do X" and wow it feels amazing!
How many points in that image / what size of distance matrix?
タグ:
posted at 21:46:33
フォークボールが落ちる謎、スパコン解析で判明 : プロ野球 : スポーツ : ニュース : 読売新聞オンライン www.yomiuri.co.jp/sports/npb/202...
普通にマグヌス効果ではと思ったけど、「負のマグヌス効果」ってのはどういうことなんだろう
タグ:
posted at 21:47:04
藤井聡太二冠「序盤から積極的に動かれて2五歩から3六歩と取り込まれ攻め込まれてる展開なった 失敗したのかと思っていた」「最後まで際どいのかなと思い指していた はっきり勝ちと思った局面はなかった」「8四飛では詰めろを掛けれない 詰めろを続けるには4一銀でないといけなかった」 pic.twitter.com/9Onr5LQ3h4
タグ:
posted at 21:54:38
ごまふあざらし(GomahuAzaras @MathSorcerer
#駆け出しあざらしを飼い主が応援する会
このテクニックめっちゃ楽だな。
コード編集してCtrl+Enterで更新。 pic.twitter.com/sVXaIhQoil
posted at 21:54:44
藤井聡太二冠「大きな対局を経験でき充実した年度だった」「来年度は防衛戦もある 6月から対局がかなり増えるのでいい内容の将棋を指せるよう実力を高めたい」「ON🍫は対局はONということで集中力が問われるのでそういった場面ではぴったりなのかなと思います」「自分ではCMは見ないです(早口」 pic.twitter.com/2HY9CsWHvH
タグ:
posted at 22:00:16
#Julia言語
既存の型A, B, Cの組み合わせにメソッドfを追加したければ
function f(a::A, b::B, c::C) ~ end
とすればよい。
すでに名前 f が使われていても、モジュールで名前空間を区切れば問題無し。 twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 22:32:57
#Julia言語
DifferentialEquations.jl のシンプルな使用例
nbviewer.jupyter.org/gist/genkuroki...
単振子
初期条件は一回転せずにすむぎりぎりの速さで揺らすこと。振子が倒立直前の状態前で行く。
この場合の運動方程式は数値的に解くのに失敗し易いので、各数値解法のテストに使えます。
添付画像→厳密解 twitter.com/genkuroki/stat... pic.twitter.com/ngkatJKoba
タグ: Julia言語
posted at 22:43:58
#Julia言語
ODEProblemのデフォルトのソルバの場合
橙破線の厳密解から大幅にずれている。
正方向に倒立直前状態まで回転して、負方向に倒立直前まで行く所までは正確だが、そこから先はめちゃくちゃ。
エネルギーも全然保存されない。
これを見れば数値計算は要注意であることがよく分かる。 pic.twitter.com/XeHO2nsX0L
タグ: Julia言語
posted at 22:48:48
#Julia言語
Tsitouras' Runge-Kutta-Oliver 6 stage 5th order method で時刻の刻み幅が dt = 0.05 の場合
これは概ね正確。エネルギー保存則の側がちと不安な動き方。
DifferentialEquations.jlでは膨大な数のソルバが実装されています。
diffeq.sciml.ai/stable/solvers... pic.twitter.com/FxLIlXL7Zj
タグ: Julia言語
posted at 22:53:15
4一銀を打つまでの葛藤からONチョコ🍫まるでCMのようなシーン😳
#竜王戦 #藤井二冠 #ONOFFチョコレート pic.twitter.com/777lbk8SA2
タグ: ONOFFチョコレート 竜王戦 藤井二冠
posted at 22:53:38
#Julia言語
ハミルトニアンで問題を与えた場合に、デフォルトのソルバを使うとこうなる。
ODEProblemのデフォルトのソルバの場合よりも、こちらの方がかなり正確です。エネルギーは保存されず、微増化傾向。 pic.twitter.com/HQKJTPozE6
タグ: Julia言語
posted at 22:55:58
#Julia言語
ハミルトニアンで問題を与えて、Yoshida6法で dt = 0.1 の場合
dtが0.1と大きめなのに、非常にうまく数値解が求まっています。
数値解の計算法によって結果はかなり変ります。
nbviewer.jupyter.org/gist/genkuroki... pic.twitter.com/VrmtcXWpva
タグ: Julia言語
posted at 22:59:57
#Julia言語
みんな大好きないつものルンゲクッタ法の場合
dt = 0.1 だと粗すぎて誤差が大きいです。
この場合はexact解が楕円函数で書けることを知っているので、誤差が大きいことが分かりますが、そうでない場合は闇の中になる場合がある。
エネルギーは微減傾向。 pic.twitter.com/KUvxxqQXHo
タグ: Julia言語
posted at 23:03:30
今pythonで書いてるアルゴリズムをJuliaに書き直そうと思う。アルゴリズムの速度を速くしようとpycuda勉強してたけど、一旦Juliaで書いた方が楽そう。
なお、progateにはこの言語のコースはない。
タグ:
posted at 23:10:40
プログラムはLispとかJuliaみたいに全部が式な方が覚えること少なくて良いと思うんだけど。Pythonとか書いてるとなんでこれこうできないのみたいなことがとても多くてどうも手に馴染まない。
タグ:
posted at 23:12:32
#Julia言語 DifferentialEquations.jl には膨大な量の上微分方程式の数値解法が実装されています。
そのうちの一部を使った場合
このツイートの添付画像に載せた方法はほぼことごとく失敗している。😱😊🤣😭😆 pic.twitter.com/my7gGtbJez
タグ: Julia言語
posted at 23:14:04
#Julia言語 シンプレクティック法
dt はわざと大きめの値の 0.1 にしてあります。
McAte5(dt=0.1)では振子が倒立状態を超えてあっちに行ってしまっている(笑)
こういうのは失敗している場合がないと面白くない。
他にもシンプレクティック法が沢山実装されています↓
diffeq.sciml.ai/stable/solvers... pic.twitter.com/cewgGQGu8j
タグ: Julia言語
posted at 23:18:16
#Julia言語
nbviewer.jupyter.org/gist/genkuroki...
倒立直前まで振れる単振り子
↑これを見れば、JuliaのDifferentialEquations.jlで微分方程式の問題を与えて解く基本的な方法が分かります。
ハミルトニアンを与えて解かせる方法も分かる!
自動微分で正準方程式を正確に計算しているはず。
タグ: Julia言語
posted at 23:23:39
#Julia言語 DifferentialEquations.jl はNASAで使われている。
従来の方法が15000倍高速化されたらしい(笑) twitter.com/genkuroki/stat...
タグ: Julia言語
posted at 23:25:46
#Julia言語
discourse.julialang.org/t/julia-and-th...
【今では、Juliaはブラジルの宇宙計画の一部】
やはりDifferentialEquations.jlを使っているらしい。 twitter.com/genkuroki/stat... pic.twitter.com/ycPjTMX9D8
タグ: Julia言語
posted at 23:28:39
Macのbutterfly keyboardは脆弱であったとの集団訴訟を求める訴えが通った。これで当該のMacbook Proを所有しているCalifornia, New York, Florida, Illinois, New Jersey, Washington, and Michigan.在住の人が原告として参加可能に。対象Macは細かく区切られている。 twitter.com/verge/status/1...
タグ:
posted at 23:33:41
#Julia言語 おまけ。既出の
nbviewer.jupyter.org/gist/genkuroki...
では、PhysicalConstants.jlから
g = 9.80665 m s^-2
を取得して使っています。振子の長さは1mです。Unitful.jlを使って、l = 1.0m と定義している。
DifferentialEquations.jlでは単位付きの数量を直接扱えるのですが、計算は遅くなる。 pic.twitter.com/nyT12Istte
タグ: Julia言語
posted at 23:45:10