黒木玄 Gen Kuroki Profile picture
Sep 10, 2021 14 tweets 7 min read Read on X
#Julia言語 100以下の素数

(a->a[a.∉(a*a',)])(2:100)

これを理解すれば、色々理解できたことになる。

九九の表は (1:9)*(1:9)' で作れる。
∉ は \notin TAB で入力できる。
a.∉(a*a',)の代わりにa.∉Ref(a*a')と書くことが多い。

実験するときには

a = 2:100
a[a.∉(a*a',)]

を試すとよい。 Image
#Julia言語 解説

a = 2:100

のとき、aは2,3,4,...,100が縦に並んでいるベクトル扱いになる。

a'はaの転置で、横ベクトル扱いされる。

a*a' は通常の線形代数によって、2,3,4,...,100の2つの数の積を並べた99×99行列になる。続く Image
#Julia言語 100以下の素数全体は、a = 2:100 に含まれる数で行列 a*a' に含まれないものの全体に一致する。

a .∉ (a*a',) は a の各要素 k に写像 k ↦ k ∉ a*a' を作用させた結果になる。真偽値達のBitVectorになる。続く Image
#Julia言語 行列 a*a' をタプルを作る ( ,) で囲んでいるのは dot-syntax によるブロードキャスト(要素単位での作用)から保護するため。

a .∉ (a*a',) は a の中での素数の場所でtrueにそうでない場所でfalseになっている。

a[a .∉ (a*a',)] は a から素数だけを取り出す操作になっている。 Image
#Julia言語 「ドット記法によるブロードキャストのときに、配列様のモノをスカラーとして振る舞わせるにはどうすればよいか?」はJuliaでのよくある質問の1つ。

多くの人がRef( )で包むという解決策を採用しており、このスレッドではタプルを作る( ,)で包む処方箋を採用した。 Image
#Julia言語

a = 2:100 の具象型はUnitRange{Int64}

さらにそれは a isa AbstractVector{Int64} をみたす。

AbstractVector型のオブジェクトは縦ベクトル扱いになる。

レンジがそのまま縦ベクトル扱いされる。配列に変換してメモリの無駄遣いをする必要はない。 Image
#Julia言語 a' は LinearAlgebra.Adjoint 型になり、横ベクトル扱いされる。 Image
#Julia言語 a*a' はMatrix型になる。

一般にAbstractMatrix型に属するオブジェクトは行列扱いされる。 Image
#Julia言語 a .∉ (a*a',) はBitVector型になり、AbstractVector型に属し、真偽値の縦ベクトル扱いされる。 Image
#Julia言語 a[a .∉ (a*a',)] はVector{Int64}型になり、AbstractVector型に属する。

一般にAbstractVector型に属するオブジェクトは縦ベクトル扱いされる。 Image
#Julia言語

a = 2:100; a[a.∉(a*a',)]

にはJuliaでよく使う基本的な事柄が詰め込まれており、理解する価値が十分にあると思う。

これで100以下の素数全体が得られる。

typeof, supertype, dump の使い方もついでに覚えてしまうと、「夜道で迷うこと」も少なくなるだろう。
#Julia言語 添付画像のコードは別スレで紹介したコード。

函数の引数の型がほとんど書かれておらず、Float64やInt64のような型名をユーザー側は全然入力していない。

函数の引数の型はJuliaにおける高速計算では書く必要がない。続く ImageImageImage
#Julia言語 しかし、このスレッドの内容を理解すれば裏で複雑な型システムが大活躍していることがわかる。

Juliaの計算が速いのはこの型システムのおかげ。

既存の遅いプログラミング言語をJulia並に速くするためには、Julia並の型システムを導入する必要があり、破壊的な変更が必要になるだろう。
#Julia言語

(a->a[a.∉(a*a',)])(2:100)

含まれる内容:

* 無名函数
* ユニットレンジ
* ユニットレンジも縦ベクトルとみなされる
* 横ベクトルを転置で作れる
* かけ算で行列ができる
* ユニコード演算子
* ブロードキャスト
* ブロードキャストからの保護の( ,)
* BitVectorによるマスキング

• • •

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

Jun 18, 2023
#統計 念の為のコメント

1️⃣「t検定の使用が適切なためには、母集団が正規分布に従っていることが必要である」という考え方は誤り。

2️⃣「Wilcoxonの順位和検定=Mann-WhitneyのU検定であれば、無条件使用は適切である」という考え方も誤り。

以上の誤りを信じている人達をよく見る。続く
#統計

1️⃣「t検定の使用が適切なためには、母集団が正規分布に従っていることが必要である」という考え方は誤り。

これについてはツイッター上で繰り返し非常に詳しく解説して来ました。

ツイログ検索

twilog.togetter.com/genkuroki/sear…
#統計

2️⃣「Wilcoxonの順位和検定=Mann-WhitneyのU検定であれば、無条件使用は適切である」という考え方も誤り。

これについてもツイッター上で繰り返し非常に詳しく解説して来ました。

ツイログ検索

twilog.togetter.com/genkuroki/sear…
Read 40 tweets
Jun 17, 2023
#数楽 ℤ[√2]やℤ[√3]はEuclid整域なのでPIDでUFDになるので、ℤ[√2]やℤ[√3]係数の多項式の √2や√3が出て来る因数分解の問題も既約元の積に分解する問題として意味を持ちます。続く
#数楽 ただし、整数dに関する√dが出て来る場合には、既約元の積への分解は因子の可逆元倍と順序の違いを無視しても一意的でなくなる場合が出て来ます。

実はそういうところに面白い数学が隠れている!
#数楽 整数の平方根が出て来る因数分解もちょっと話題になっていますが、その話はとてつもなく面白い数学の話に繋がっています!

中学生であっても思いつきそうな話の中にも素晴らしい数学が隠れています!
Read 20 tweets
Jun 16, 2023
東工大出身者のような理系の人達が、上野千鶴子が自閉症の母親原因説を唱えるくらい科学的に無能でかつ優しさに欠けた人物であることぐらいは知っておいた方が、我々の社会はよくなる可能性が高まると思います。

有名かつ有力になってしまった人物はたとえク○であっても無視できなくなる。
上野千鶴子は、自閉症の原因について母子密着説を唱えていたのですが、それが誤りであることが定説になっていることを指摘された後には、定説と上野千鶴子的なトンデモ説を平等に扱うという態度を取りました。

上野千鶴子の自分が苦しめた人達への態度は真にあきれるものでした。
上野千鶴子的な活動家は科学的無知と優しさに欠けた態度の両方の力を行使していました。

そういうことを許す伝統が現代においても人々の苦しみの源泉の1つになっているわけです。
Read 6 tweets
Jun 15, 2023
私は、環論を学ぶまで、重根もしくは重解の概念を十分に理解できた感じがしてなかったです。(代数)方程式の概念も同様。

実数体上の方程式x²=0は環

A = ℝ[x]/(x²)

で表現されます。これと方程式x=0に対応する環

ℝ[x]/(x)

は異なる。環論を使えば方程式x²=0とx=0を明瞭に区別できます。
環k上の環Aで表現された方程式のk上の環Bでの解集合はk上の環準同型全体の集合

Hom_{k-ring}(A, B)

で表現されます。例えば、集合として、

Hom_{ℝ-ring}(ℝ[x,y]/(x²+y²-1), ℝ) ≅ {(x,y)∈ℝ²|x²+y²=1}.
そして、以上のような代数方程式の表現になっている環の話について前もって知っておいた方が、環論の勉強はしやすいように思えます。
Read 6 tweets
Jun 15, 2023
以下のリンク先スレッド中にも書きましたが、

* 最初に共通の定数因子を括り出すと、その後の計算が楽になる場合がある。

と教えるようにして、

* 共通の定数因子を括り出していなくても、目くじらをたてない。

という教え方にすればよいと思いました。
教科書に従って「a(3x-6y)は誤りで、3a(x-2y)が正解だ」と安易に教えてしまった中学校の数学の先生は

 数学の先生なのに
 教科書通りにおかしなことを教えて
 ごめんなさい

と言って欲しいです。数学では教科書の内容を正しいと信じてはいけない。数学はそういうものだと大学で習っているはず。
数学を教えていれば、細かい条件を言い忘れるというような失敗は日常茶飯事のはずです。

人間だから仕方がないです。

大したことではないので、よりクリアになるように訂正すればよいと思います。
Read 18 tweets
Feb 22, 2023
#統計 speakerdeck.com/taka88/pzhi-fa… のp.7からp.8への流れは、natureの記事の内容を誤解させるような、よろしくない解説の仕方だと思いました。

「差がない」という特別な帰無仮説の検定だけで勝負を決めようとすることへの批判をP値そのものへの批判とみなすことは、よく見る杜撰な考え方です。続く
#統計 実際、natureの記事 nature.com/articles/d4158… ではcompati{ble,bility}が重要キーワードになっており、P値が

データ、モデル、パラメータ値のcompatibility(相性の良さ、両立性)の指標の1つ

とみなされることを詳しく説明しています。

この部分に触れずにこの記事を引用しても無意味。続く
#統計 natureのその記事を読んでいるならば、P値のcompatibilityとしての解釈について知り、添付画像のように、ダメな考え方と正しい考え方を区別できるようになっているはずなのです。

否定するべき対象にP値そのものが含まれていないことに注目!

続く
Read 13 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

Don't want to be a Premium member but still want to support us?

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

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(