#Julia言語 これも面白いです。

LispとJuliaの比較のような話になっている?

以下のリンク先はJuliaでの高速多項式評価が何をやっているかの解説。係数が格納された配列を読みながらの多項式評価より速いです。

discourse.julialang.org/t/cas-benchmar…
CAS benchmarks (Symbolics.jl and Maxima)
#Julia言語 【ネタ】重要情報(笑)

discourse.julialang.org/t/cas-benchmar…
【Maybe julia stands for “Jeff’s uncommon lisp is automated”?】とJeff Bezansonさんが言っていた!
#Julia言語 上で紹介したスレッドは以下に紹介するスレッドから派生したっぽい。

以下のリンク先はJuliaが何をやっているかの易しい解説になっている発言を選びました。

どういう人がやって来ても、技術的な事柄を易しく解説しようとすることはやはり大事なことだな。

discourse.julialang.org/t/cas-best-pra…
#Julia言語

discourse.julialang.org/t/cas-best-pra…
【それら(Maple, Axiom, Maxima)すべては、命令型言語とシームレスに連携する記号計算ツールセットではなく、「1つの言語」になろうとする失敗を犯していると思う】

確かに、数式処理系が汎用プログラミング言語の一部分であることはとても大事だと思う。
数式処理に特化した文法の採用は、数式処理には便利であっても、プログラミング言語としてはつらくなる。

PythonのSymPyは色々欠点はありますが、Pythonの一部分として動いてくれる点は非常に便利だと思いました。数式を数値や文字列などと同じようにプログラミング言語内で扱いたい。
「コンピュータで計算するためにプログラムを書いているのに、手計算や数式処理型で得た数式の手動でのコピー&ペーストと書き換えが必要になった」となるのは、我々がコンピュータを十分効率的に使えていないことを意味していると思う。

プログラミング言語から直接数学全体を使用可能なのがベスト。
以下のリンク先の発言の最後の段落を見ると、 #Julia言語 界では言語仕様を話し合って決めている様子が垣間見えます。

いわゆる「こだわりがあって、めんどくさい人達」で意見が一致することなど期待できないのですが、非常にうまくやっているように見える。

discourse.julialang.org/t/cas-best-pra…

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with 黒木玄 Gen Kuroki

黒木玄 Gen Kuroki Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @genkuroki

2 Apr
#Julia言語

discourse.julialang.org/t/question-abo…

github.com/JuliaMath/Xsum…
Xsum: Exactly rounded floating-point sums in Julia
#Julia言語 Xsum.jl examples

Float128を使うと計算速度が数十倍~百倍以上遅くなったりする。

Xsum.jl の xsum を使えば、少し遅くなる程度のトレードオフで、Float64の精度での和を正確に計算できる。

精度が気になる和をgeneratorのsumで計算してはいけない。

gist.github.com/genkuroki/97c4…
#Julia言語 builtin sum も sum(f, iter) の形式で使えば精度的に結構悪くなさそう?
Read 5 tweets
2 Apr
ツツカナ vs. 森下卓 電王戦リベンジマッチ shogidb2.com/games/07219818… #将棋 #将棋DB2 @backflip1801より
電王戦公式統一パソコン「GALLERIA電王戦」森下卓九段インタビュー - ヒューマンエラー対策 森下新ルールなら技術で勝てる (1) | マイナビニュース news.mynavi.jp/kikaku/2014120…
指掛けの電王戦リベンジマッチは指継がず、森下卓九段の判定勝ちと発表。ニコ生アンケート結果は良かった85% shogi1.com/denousen-reven…
Read 5 tweets
2 Apr
#数楽 大学1年生向けの線形代数の講義では、与えられた a_{ij}とb_iが定めるx_j達に関する連立一次方程式

a_{11}x_1 + … + a_{1n}x_n = b_1
  ………
a_{m1}x_1 + … + a_{mn}x_n = b_m

をa_{ij}, b_iに関する場合分けで解く話をやったりします。

ax=bはこれのm=n=1の特別な場合。
#数楽 そのm=n=1の特別な場合の方程式

ax=b

は以下の3種に分けされる。

(0) a≠0の場合の ax=b
(1) a=0, b≠0の場合の 0=b
(2) a=0, b=0の場合の 0=0

(0), (2)の場合に解空間の次元はそれぞれ0, 1になり、(1)の場合に解空間は空集合になる。

これの一般化をやる。
#数楽 m=n=2の場合の方程式の中には

x + ay = p
0x + 0y = q

のようなものも含まれる、q≠0の場合は解なしになり、q=0の場合には

x = p - ay
yは任意

の形ですべての解を表せる。

こういう講義をしている人達はそれなりにいるはず。
Read 5 tweets
2 Apr
#数楽 #Julia言語 新学期の講義のためのC^∞級函数の例の準備で、

f(x) = if x > 0 exp(-1/x) else 0 end

のような函数を扱っている人もいるはず。

現時点で最もよく使われているFloat64型の浮動小数点数の精度では

exp(-1/0.001) == 0

は true になります❗️(笑)

こういうのもネタになりそう。
#Julia言語

f(x) = if x > 0 exp(-1/x) else zero(x) end

using ForwardDiff
f′(x) = ForwardDiff.derivative(f, x)

のグラフ。最近では自動微分が普通で、数値的に微分を求めるときにも、導函数の公式を入力せずに、「正確に」かつ「効率良く」微係数を計算できます。

gist.github.com/genkuroki/ce92…
#Julia言語

f(x) = if x > 0 exp(-1/x) else zero(x) end
g(x) = if x > 0 exp(-1/x)/x^2 else zero(x) end

using ForwardDiff
f′(x) = ForwardDiff.derivative(f, x)

のgとf′の値と計算速度の比較。

導函数の公式を私が入力したgとForward.derivativeで自動微分しているf′で計算速度はほぼ同じ。
Read 7 tweets
2 Apr
#Julia言語 マクロは難しいです。Symbol型とExpr型がどう使われているかのイメージがないとつらい。そこでイメージを得るためのパッケージを作って以下の場所で公開しています。

github.com/genkuroki/Meta…

github.com/genkuroki/Meta…

AbstractTrees.jlが神。それを使ってExprをツリー表示。
#Julia言語 イメージを得るためには、

e = :(x = 1 + 2)
dump(e)

とかしてみるとよいです。dumpの結果は見難いですが、情報がフルに入っている。見易く気軽に表示したければ、MetaUtils.jl を使えばよい。
#Julia言語 自分でMetaUtils.jlを書くまで、Juliaのマクロを自分で書くことをできませんでした。

まるで「鶏と卵」。数学的な複雑さがある程度以上のものの理解ではほぼ常に「鶏と卵」状態になる。

親子丼が実は大好物。
Read 5 tweets
1 Apr
#Julia言語 小ネタ

isless と < の違い。

それぞれの公式解説を見れば違いは明らかなのですが、違いに気付いていないユーザーは多いと思う。

< は isless にfallbackするので違いは小さいのですが、isless は sort で使用可能な全順序。

docs.julialang.org/en/v1/base/bas…
docs.julialang.org/en/v1/base/mat… ImageImage
#Julia言語 自分で定義した型に Base.isless を定義するときには、sort で使える全順序となるように定義するべき。

それに対して、Base.:< は全順序である必要はない。もちろん、islessにフォールバックするので、別に定義する必要が無ければ、全順序の Base.isless だけを定義しておけば足りる。
#Julia言語 全順序のislessとは別に、全順序ではない < が必要なケースは、浮動小数点数の大小関係。

浮動小数点数は NaN を含んでおり、例えば、0.0 < NaN や NaN < 0.0 は false になって欲しく、実際にそうなるように定義されている。

全順序の isless で isless(Inf, NaN) は true になる。
Read 9 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal Become our Patreon

Thank you for your support!

Follow Us on Twitter!