SlideShare a Scribd company logo
1 of 55
Download to read offline
コードを書けば複素数がわかる
@taketo1024
情報科学若手の会冬の陣 2015
i2
= 1
学校で習うとき
1. 虚数単位 i = -1 がいきなり出てくる
2. 複素数 z = a + bi の四則演算が定義される
3. 「数」と思っていた z がベクトルになってる
4. 「i をかけるのは90度回転です」などと教わる
5. 以後当たり前のように電流や波の方程式に出てくる
i =
p
1
z = a + bi
z
i
ちょっと待ってくれ…
i は「想像上の数」なんだろ…?i
簡単なコードで i は
作れる!
i
方針
1. 複素数を最初から2次元ベクトルとして定義する。
2. i^2 = -1 となるように 掛け算を入れる。
3. これが実数を拡大した「数」になることを確認。
i2
= 1
1. 複素数を作ろう
まず2次元ベクトルから出発
struct Complex {
let x: Double
let y: Double
init(_ x: Double, _ y: Double) {
self.x = x
self.y = y
}
}
言語:Swift
let z = Complex(2, 3)
x
y
2
z =
✓
2
3
◆
3
足し算・引き算・実数倍を定義
func + (z: Complex, w: Complex) -> Complex {
return Complex(z.x + w.x, z.y + w.y)
}
prefix func -(z: Complex) -> Complex {
return Complex(-z.x, -z.y);
}
func - (z: Complex, z: Complex) -> Complex {
return Complex(z.x - w.x, z.y - w.y)
}
func * (a: Double, z: Complex) -> Complex {
return Complex(a * z.x, a * z.y)
}
演算子のオーバーライド
イコールを定義
struct Complex: Equatable {
…
}
func == (a: Complex, b: Complex) -> Bool {
return (a.x == b.x) && (a.y == b.y)
}
プロトコル(Java のインターフェース)
Complex(2, 3) + Complex(1, -1) ==
Complex(3, 2)
x
y
次に1 = (1, 0), i = (0, 1) として、
z = x + yi の形で書けるようにする。
1 =
✓
1
0
◆
i =
✓
0
1
◆
z = a + bi
Int, Double から Complex を生成
struct Complex: …, IntegerLiteralConvertible,
FloatLiteralConvertible {
…
init(integerLiteral x: IntegerLiteralType) {
self.x = Double(x)
self.y = 0
}
init(floatLiteral x: FloatLiteralType) {
self.x = x
self.y = 0
}
}
リテラル限定の静的キャスト(Swift特有?)
これで実数を複素数に「埋め込んだ」ことになる。
x
y
1 =
✓
1
0
◆
1 == Complex(1, 0) // true
あとは 定数 i を定義すれば…
let i = Complex(0, 1)
i
x
y
i =
✓
0
1
◆
let z = 2 + 3 * i
x
y
求めていた表現を得る!
2 =
✓
2
0
◆
3i =
✓
0
3
◆
z =
✓
2
3
◆
= 2 + 3i
さて、いよいよ掛け算の定義。
複素数の掛け算は、
実数と同じ計算規則を満たし、かつ、
となるように定義したい。
i2
= 1
z = a + bi, w = c + di として、積 zw は、z = a + bi, w = c + di
となる。
特に a = c = 0, b = d = 1 の場合が i^2 = -1 の式。
zw
zw = (a + bi)(c + di)
= a(c + di) + bi(c + di)
分配法則
= ac + adi + bci + bdi2
= ac + adi + bci bd
分配法則
= ac bd + adi + bci
交換法則
= (ac bd) + (ad + bc)i
分配法則
i2
= 1
i2
= 1
先の式で掛け算を定義してみると…
struct Complex { … }
func * (z: Complex, w: Complex) -> Complex {
return Complex(z.x * w.x - z.y * w.y,
z.x * w.y + z.y * w.x)
}
ちゃんと「掛け算の要件」を満たしている!
let α = 3 + 5 * i
let β = -1 + 4 * i
let γ = 4 - 7 * i
α * 1 == α // 1は単位元
α * β == β * α // 交換法則
(α * β) * γ == α * (β * γ) // 結合法則
α * (β + γ) == α * β + α * γ // 分配法則
当たり前に見えるが、テキトーに定義したのではこうならない。
これで安心して「数」として扱えるようになる。
i * i == -1 // true
できました!
割り算は?
zw = (ac bd) + (ad + bc)i = 1 + 0i
割り算は「逆数との積」なので、z の逆数 w は、
これを解けば、
w =
1
a2 + b2
(a bi)
,
(
ac bd = 1
ad + bc = 0
z w
「逆数との積」で割り算を定義
struct Complex { … }
func / (z: Complex, w: Complex) -> Complex {
let w_inv = (1 / (w.x * w.x + w.y * w.y) ) * Complex(w.x, -w.y)
return z * w_inv
}
複素数、できました!
struct Complex: Equatable, IntegerLiteralConvertible, FloatLiteralConvertible {
let x: Double
let y: Double
init(_ x: Double, _ y: Double) {
self.x = x
self.y = y
}
init(_ x: Double) {
self.x = x
self.y = 0
}
init(integerLiteral x: IntegerLiteralType) {
self.x = Double(x)
self.y = 0
}
init(floatLiteral x: FloatLiteralType) {
self.x = x
self.y = 0
}
}
func == (z: Complex, w: Complex) -> Bool {
return z.x == w.x && z.y == w.y
}
func + (z: Complex, w: Complex) -> Complex {
return Complex(z.x + w.x, z.y + w.y)
}
func - (z: Complex, w: Complex) -> Complex {
return Complex(z.x - w.x, z.y - w.y)
}
prefix func -(z: Complex) -> Complex {
return Complex(-z.x, -z.y);
}
func * (a: Double, z: Complex) -> Complex {
return Complex(a * z.x, a * z.y)
}
func * (z: Complex, w: Complex) -> Complex {
return Complex(z.x * w.x - z.y * w.y, z.x * w.y + z.y * w.x)
}
func / (z: Complex, w: Complex) -> Complex {
let w_inv = Complex(w.x / (w.x * w.x + w.y * w.y), -w.y / (w.x * w.x + w.y * w.y))
return z * w_inv
}
この掛け算こそが複素数の本質
struct Complex: Equatable, IntegerLiteralConvertible, FloatLiteralConvertible {
let x: Double
let y: Double
init(_ x: Double, _ y: Double) {
self.x = x
self.y = y
}
init(_ x: Double) {
self.x = x
self.y = 0
}
init(integerLiteral x: IntegerLiteralType) {
self.x = Double(x)
self.y = 0
}
init(floatLiteral x: FloatLiteralType) {
self.x = x
self.y = 0
}
}
func == (z: Complex, w: Complex) -> Bool {
return z.x == w.x && z.y == w.y
}
func + (z: Complex, w: Complex) -> Complex {
return Complex(z.x + w.x, z.y + w.y)
}
func - (z: Complex, w: Complex) -> Complex {
return Complex(z.x - w.x, z.y - w.y)
}
prefix func -(z: Complex) -> Complex {
return Complex(-z.x, -z.y);
}
func * (a: Double, z: Complex) -> Complex {
return Complex(a * z.x, a * z.y)
}
func * (z: Complex, w: Complex) -> Complex {
return Complex(z.x * w.x - z.y * w.y, z.x * w.y + z.y * w.x)
}
func / (z: Complex, w: Complex) -> Complex {
let w_inv = Complex(w.x / (w.x * w.x + w.y * w.y), -w.y / (w.x * w.x + w.y * w.y))
return z * w_inv
}
func * (z: Complex, w: Complex) -> Complex {
return Complex(z.x * w.x - z.y * w.y, z.x * w.y + z.y * w.x)
}
2. 複素数を動かしてみよう
class ComplexPlane : UIView {
var unit: CGFloat = 50.0
var scale: CGFloat = 1.0
var points: [String: Complex] = [:]
var colors: [String: UIColor] = [:]
override func drawRect(rect: CGRect) {
let ctx = UIGraphicsGetCurrentContext()
let centerX = self.bounds.width / 2
let centerY = self.bounds.height / 2
// fill background
CGContextSetFillColorWithColor(ctx, UIColor.whiteColor().CGColor)
CGContextFillRect(ctx, self.bounds)
// draw axises
…
}
}
複素平面のViewクラス
let cplane = ComplexPlane(frame: …)
cplane["1"] = 1
cplane["i"] = i
let z = Complex(r: 2, θ: M_PI / 3)
cplane["z"] = z
let w = z * z
cplane["w"] = w
DEMO : 動かしてみよう!
z と w の関係は?z w
Re
Im
複素数 z は絶対値 r = ¦z¦, 偏角 θ= arg(z) を用いて、
z = r(cosθ + i sin θ) と書ける(極表示)
r
✓
r = |z| ✓ = arg(z)z
z = r(cos✓ + isin✓)
z = r(cos✓ + isin✓)
rcos✓
irsin✓
複素数の掛け算を極表示で書き直してみると…
z = r(cos✓ + isin✓), w = s(cos + isin )
zw = rs{(cos✓cos sin✓sin ) + i(sin✓cos + cos✓sin )}
= rs(cos(✓ + ) + isin(✓ + ))
に対して、
つまり…、
加法定理
Re
Im
r
✓
s
z
w
zw
rs
= rs(cos(✓ + ) + isin(✓ + ))zw
複素数の掛け算は「絶対値の積」 「偏角の和」だった!
Re
Im
特に i^2 = -1 は、
「90 回転を2回すれば180 回転」
i2
= 1
i
90
i2
= 1
3. なぜ複素数?
そもそもこれはどこから出て来た?
i2
= 1
(例) 方程式: x^2 + x + 1 = 0
-10 -7.5 -5 -2.5 0 2.5 5 7.5 10
-5
-2.5
2.5
5
x2
+ x + 1 = 0
この方程式は実数の範囲では解を持たない。
y = x2
+ x + 1
形式的に2方程式の解の公式を使うと、
ここで -3 を 3 i と置き換えて:
は、x^2 + x + 1 = 0 の解になっている。
p
3
p
3i
x2
+ x + 1 = 0
x =
1 ±
p
12 4 · 1 · 1
2
=
1 ±
p
3
2
↵ =
1 +
p
3i
2
, =
1
p
3i
2
-10 -7.5 -5 -2.5 0 2.5 5 7.5 10
-5
-2.5
2.5
5
y = x2
+ x + 1
y = x^2 + x + 1 は x = α, β で x 軸と交わっている…?y = x2
+ x + 1 x = ↵,
↵? ?
x, y を複素数と見てグラフを描くには、
残念ながら我々の世界では次元が1つ足りない。
Re
Im
Re
Im
z
w
w = f(z) = z^2 + z + 1 を平面から平面への写像と見て、
z の動きにあわせて w がどう動くか見てみる。z w
w = f(z) = z2
+ z + 1
代わりに、
f
DEMO
w = f(z) = z2
+ z + 1
Re
Im
Re
Im
z w
z を半径を大きくしながら円上で動かす。z
Re
Im
Re
Im
z w
半径 1 のときに w = 0 となる点が2つある。w = 0
Re
Im
Re
Im
↵
z w
この2点が α, β で、f によって 0 に写されていた!↵, f
↵ =
1 +
p
3i
2
, =
1
p
3i
2
Re
Im
Re
Im
z w
したがって…
一般の n 次式の場合も同様に、
z を 0 から大きくしていけば、w は必ず 0 を通る
↵
代数学の基本定理
複素数の範囲では必ず解を持つ!
anzn
+ ... + a1z + a0 = 0n 次方程式 は、
コードを書いて自分で動かしてみれば、
数学はグッと身近になる!
「SwiftComplex」github で公開してます:
1/30(金) 「第1回 プログラマのための数学勉強会」開催!
もう満席ですが、次も近いうちやります!

発表者募集中!
Thanks!
@taketo1024

More Related Content

What's hot

代数的実数とCADの実装紹介
代数的実数とCADの実装紹介代数的実数とCADの実装紹介
代数的実数とCADの実装紹介Masahiro Sakai
 
複素数・四元数と図形の回転
複素数・四元数と図形の回転複素数・四元数と図形の回転
複素数・四元数と図形の回転Yoshihiro Mizoguchi
 
130604 fpgax kibayos
130604 fpgax kibayos130604 fpgax kibayos
130604 fpgax kibayosMikio Yoshida
 
すごいH 第12章モノイド
すごいH 第12章モノイドすごいH 第12章モノイド
すごいH 第12章モノイドShinta Hatatani
 
スペクトラル・クラスタリング
スペクトラル・クラスタリングスペクトラル・クラスタリング
スペクトラル・クラスタリングAkira Miyazawa
 
モナドがいっぱい!
モナドがいっぱい!モナドがいっぱい!
モナドがいっぱい!Kenta Sato
 
リストモナドを作ってみた
リストモナドを作ってみたリストモナドを作ってみた
リストモナドを作ってみたAtsushi Kanehara
 
「にじたい」へのいざない #ロマンティック数学ナイト
「にじたい」へのいざない #ロマンティック数学ナイト「にじたい」へのいざない #ロマンティック数学ナイト
「にじたい」へのいざない #ロマンティック数学ナイトJunpei Tsuji
 
wakuwaku Scala ~Scala入門勉強会~ 資料
wakuwaku Scala ~Scala入門勉強会~ 資料wakuwaku Scala ~Scala入門勉強会~ 資料
wakuwaku Scala ~Scala入門勉強会~ 資料Mizuki Yamanaka
 
x^2+ny^2の形で表せる素数の法則と類体論
x^2+ny^2の形で表せる素数の法則と類体論x^2+ny^2の形で表せる素数の法則と類体論
x^2+ny^2の形で表せる素数の法則と類体論Junpei Tsuji
 
奇関数・偶関数
奇関数・偶関数奇関数・偶関数
奇関数・偶関数yu_nahb219
 
04.第四章用Matlab求偏导数
04.第四章用Matlab求偏导数04.第四章用Matlab求偏导数
04.第四章用Matlab求偏导数Xin Zheng
 
高速フーリエ変換
高速フーリエ変換高速フーリエ変換
高速フーリエ変換AtCoder Inc.
 
JOIss2020 発表資料
JOIss2020 発表資料JOIss2020 発表資料
JOIss2020 発表資料mdkcpp 1015
 

What's hot (20)

代数的実数とCADの実装紹介
代数的実数とCADの実装紹介代数的実数とCADの実装紹介
代数的実数とCADの実装紹介
 
最急降下法
最急降下法最急降下法
最急降下法
 
複素数・四元数と図形の回転
複素数・四元数と図形の回転複素数・四元数と図形の回転
複素数・四元数と図形の回転
 
130604 fpgax kibayos
130604 fpgax kibayos130604 fpgax kibayos
130604 fpgax kibayos
 
PRML 第14章
PRML 第14章PRML 第14章
PRML 第14章
 
回帰
回帰回帰
回帰
 
すごいH 第12章モノイド
すごいH 第12章モノイドすごいH 第12章モノイド
すごいH 第12章モノイド
 
スペクトラル・クラスタリング
スペクトラル・クラスタリングスペクトラル・クラスタリング
スペクトラル・クラスタリング
 
モナドがいっぱい!
モナドがいっぱい!モナドがいっぱい!
モナドがいっぱい!
 
統計概論 isseing333
統計概論 isseing333統計概論 isseing333
統計概論 isseing333
 
リストモナドを作ってみた
リストモナドを作ってみたリストモナドを作ってみた
リストモナドを作ってみた
 
「にじたい」へのいざない #ロマンティック数学ナイト
「にじたい」へのいざない #ロマンティック数学ナイト「にじたい」へのいざない #ロマンティック数学ナイト
「にじたい」へのいざない #ロマンティック数学ナイト
 
wakuwaku Scala ~Scala入門勉強会~ 資料
wakuwaku Scala ~Scala入門勉強会~ 資料wakuwaku Scala ~Scala入門勉強会~ 資料
wakuwaku Scala ~Scala入門勉強会~ 資料
 
x^2+ny^2の形で表せる素数の法則と類体論
x^2+ny^2の形で表せる素数の法則と類体論x^2+ny^2の形で表せる素数の法則と類体論
x^2+ny^2の形で表せる素数の法則と類体論
 
Prml 4.1.1
Prml 4.1.1Prml 4.1.1
Prml 4.1.1
 
奇関数・偶関数
奇関数・偶関数奇関数・偶関数
奇関数・偶関数
 
04.第四章用Matlab求偏导数
04.第四章用Matlab求偏导数04.第四章用Matlab求偏导数
04.第四章用Matlab求偏导数
 
高速フーリエ変換
高速フーリエ変換高速フーリエ変換
高速フーリエ変換
 
線形計画法入門
線形計画法入門線形計画法入門
線形計画法入門
 
JOIss2020 発表資料
JOIss2020 発表資料JOIss2020 発表資料
JOIss2020 発表資料
 

Viewers also liked

Swift で数学のススメ 〜 プログラミングと数学は同時に学べ
Swift で数学のススメ 〜 プログラミングと数学は同時に学べSwift で数学のススメ 〜 プログラミングと数学は同時に学べ
Swift で数学のススメ 〜 プログラミングと数学は同時に学べTaketo Sano
 
Konashi で始める iOS 電子工作
Konashi で始める iOS 電子工作Konashi で始める iOS 電子工作
Konashi で始める iOS 電子工作Taketo Sano
 
「時計の世界の整数論」第2回プログラマのための数学勉強会 #maths4pg
「時計の世界の整数論」第2回プログラマのための数学勉強会 #maths4pg「時計の世界の整数論」第2回プログラマのための数学勉強会 #maths4pg
「時計の世界の整数論」第2回プログラマのための数学勉強会 #maths4pgJunpei Tsuji
 
証明プログラミング入門2
証明プログラミング入門2証明プログラミング入門2
証明プログラミング入門2Kyoko Kadowaki
 
エニグマ暗号とは何だったのか
エニグマ暗号とは何だったのかエニグマ暗号とは何だったのか
エニグマ暗号とは何だったのかTakahiro (Poly) Horikawa
 
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列Taketo Sano
 
山手線は丸いのか?プログラマのためのトポロジー入門
山手線は丸いのか?プログラマのためのトポロジー入門山手線は丸いのか?プログラマのためのトポロジー入門
山手線は丸いのか?プログラマのためのトポロジー入門Taketo Sano
 
フーリエ変換と画像圧縮の仕組み
フーリエ変換と画像圧縮の仕組みフーリエ変換と画像圧縮の仕組み
フーリエ変換と画像圧縮の仕組みyuichi takeda
 
プログラマのための線形代数再入門
プログラマのための線形代数再入門プログラマのための線形代数再入門
プログラマのための線形代数再入門Taketo Sano
 

Viewers also liked (9)

Swift で数学のススメ 〜 プログラミングと数学は同時に学べ
Swift で数学のススメ 〜 プログラミングと数学は同時に学べSwift で数学のススメ 〜 プログラミングと数学は同時に学べ
Swift で数学のススメ 〜 プログラミングと数学は同時に学べ
 
Konashi で始める iOS 電子工作
Konashi で始める iOS 電子工作Konashi で始める iOS 電子工作
Konashi で始める iOS 電子工作
 
「時計の世界の整数論」第2回プログラマのための数学勉強会 #maths4pg
「時計の世界の整数論」第2回プログラマのための数学勉強会 #maths4pg「時計の世界の整数論」第2回プログラマのための数学勉強会 #maths4pg
「時計の世界の整数論」第2回プログラマのための数学勉強会 #maths4pg
 
証明プログラミング入門2
証明プログラミング入門2証明プログラミング入門2
証明プログラミング入門2
 
エニグマ暗号とは何だったのか
エニグマ暗号とは何だったのかエニグマ暗号とは何だったのか
エニグマ暗号とは何だったのか
 
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列
 
山手線は丸いのか?プログラマのためのトポロジー入門
山手線は丸いのか?プログラマのためのトポロジー入門山手線は丸いのか?プログラマのためのトポロジー入門
山手線は丸いのか?プログラマのためのトポロジー入門
 
フーリエ変換と画像圧縮の仕組み
フーリエ変換と画像圧縮の仕組みフーリエ変換と画像圧縮の仕組み
フーリエ変換と画像圧縮の仕組み
 
プログラマのための線形代数再入門
プログラマのための線形代数再入門プログラマのための線形代数再入門
プログラマのための線形代数再入門
 

Similar to コードを書けば複素数がわかる

Implicit Explicit Scala
Implicit Explicit ScalaImplicit Explicit Scala
Implicit Explicit ScalaKota Mizushima
 
代数トポロジー入門
代数トポロジー入門代数トポロジー入門
代数トポロジー入門Tatsuki SHIMIZU
 
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)Yoichi Nakayama
 
圏論とプログラミング読書会#2 資料
圏論とプログラミング読書会#2 資料圏論とプログラミング読書会#2 資料
圏論とプログラミング読書会#2 資料53ningen
 
Stochastic complexities of reduced rank regression証明概略
 Stochastic complexities of reduced rank regression証明概略 Stochastic complexities of reduced rank regression証明概略
Stochastic complexities of reduced rank regression証明概略Xiangze
 
Deep Learning を実装する
Deep Learning を実装するDeep Learning を実装する
Deep Learning を実装するShuhei Iitsuka
 
数学教材(中間発表)
数学教材(中間発表)数学教材(中間発表)
数学教材(中間発表)Mizuguchi1205
 
Simulation_assignment2
Simulation_assignment2Simulation_assignment2
Simulation_assignment2T2C_
 
introductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysisintroductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysisTatsuki SHIMIZU
 
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1hirokazutanaka
 
Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)Masahiro Sakai
 
モナドハンズオン前座
モナドハンズオン前座モナドハンズオン前座
モナドハンズオン前座bleis tift
 
2021年度秋学期 画像情報処理 第5回 離散フーリエ変換 (2021. 10. 22
2021年度秋学期 画像情報処理 第5回 離散フーリエ変換 (2021. 10. 222021年度秋学期 画像情報処理 第5回 離散フーリエ変換 (2021. 10. 22
2021年度秋学期 画像情報処理 第5回 離散フーリエ変換 (2021. 10. 22Akira Asano
 
【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しよう【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しようUnity Technologies Japan K.K.
 
Pythonで始めるDropboxAPI
Pythonで始めるDropboxAPIPythonで始めるDropboxAPI
Pythonで始めるDropboxAPIDaisuke Igarashi
 

Similar to コードを書けば複素数がわかる (20)

Implicit Explicit Scala
Implicit Explicit ScalaImplicit Explicit Scala
Implicit Explicit Scala
 
代数トポロジー入門
代数トポロジー入門代数トポロジー入門
代数トポロジー入門
 
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)
 
Ssaw08 1125
Ssaw08 1125Ssaw08 1125
Ssaw08 1125
 
圏論とプログラミング読書会#2 資料
圏論とプログラミング読書会#2 資料圏論とプログラミング読書会#2 資料
圏論とプログラミング読書会#2 資料
 
Stochastic complexities of reduced rank regression証明概略
 Stochastic complexities of reduced rank regression証明概略 Stochastic complexities of reduced rank regression証明概略
Stochastic complexities of reduced rank regression証明概略
 
Deep Learning を実装する
Deep Learning を実装するDeep Learning を実装する
Deep Learning を実装する
 
数学教材(中間発表)
数学教材(中間発表)数学教材(中間発表)
数学教材(中間発表)
 
Simulation_assignment2
Simulation_assignment2Simulation_assignment2
Simulation_assignment2
 
introductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysisintroductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysis
 
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
 
Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)
 
モナドハンズオン前座
モナドハンズオン前座モナドハンズオン前座
モナドハンズオン前座
 
2021年度秋学期 画像情報処理 第5回 離散フーリエ変換 (2021. 10. 22
2021年度秋学期 画像情報処理 第5回 離散フーリエ変換 (2021. 10. 222021年度秋学期 画像情報処理 第5回 離散フーリエ変換 (2021. 10. 22
2021年度秋学期 画像情報処理 第5回 離散フーリエ変換 (2021. 10. 22
 
【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しよう【Unity道場】ゲーム制作に使う数学を学習しよう
【Unity道場】ゲーム制作に使う数学を学習しよう
 
Convex Hull Trick
Convex Hull TrickConvex Hull Trick
Convex Hull Trick
 
ガウス積分の問題
ガウス積分の問題ガウス積分の問題
ガウス積分の問題
 
ガウス積分
ガウス積分ガウス積分
ガウス積分
 
ガウス積分
ガウス積分ガウス積分
ガウス積分
 
Pythonで始めるDropboxAPI
Pythonで始めるDropboxAPIPythonで始めるDropboxAPI
Pythonで始めるDropboxAPI
 

More from Taketo Sano

Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...
Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...
Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...Taketo Sano
 
トポロジーと圏論の夜明け
トポロジーと圏論の夜明けトポロジーと圏論の夜明け
トポロジーと圏論の夜明けTaketo Sano
 
Swift で数学研究のススメ
Swift で数学研究のススメSwift で数学研究のススメ
Swift で数学研究のススメTaketo Sano
 
(意欲的な中高生のための)トポロジー・圏論・コンピュータ
(意欲的な中高生のための)トポロジー・圏論・コンピュータ(意欲的な中高生のための)トポロジー・圏論・コンピュータ
(意欲的な中高生のための)トポロジー・圏論・コンピュータTaketo Sano
 
特性類の気持ち
特性類の気持ち特性類の気持ち
特性類の気持ちTaketo Sano
 
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学Taketo Sano
 
情報幾何学 #2.4
情報幾何学 #2.4情報幾何学 #2.4
情報幾何学 #2.4Taketo Sano
 
情報幾何学 #2 #infogeo16
情報幾何学 #2 #infogeo16情報幾何学 #2 #infogeo16
情報幾何学 #2 #infogeo16Taketo Sano
 
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトobjc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトTaketo Sano
 
objc2swift (続・自動変換の野望)
objc2swift (続・自動変換の野望) objc2swift (続・自動変換の野望)
objc2swift (続・自動変換の野望) Taketo Sano
 
さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計Taketo Sano
 
基底変換、固有値・固有ベクトル、そしてその先
基底変換、固有値・固有ベクトル、そしてその先基底変換、固有値・固有ベクトル、そしてその先
基底変換、固有値・固有ベクトル、そしてその先Taketo Sano
 
objc2swift (自動変換の野望)
objc2swift (自動変換の野望)objc2swift (自動変換の野望)
objc2swift (自動変換の野望)Taketo Sano
 
2015 02-18 xxx-literalconvertible
2015 02-18 xxx-literalconvertible2015 02-18 xxx-literalconvertible
2015 02-18 xxx-literalconvertibleTaketo Sano
 
let UIWebView as WKWebView
let UIWebView as WKWebViewlet UIWebView as WKWebView
let UIWebView as WKWebViewTaketo Sano
 
ひろ子 in Objective-C
ひろ子 in Objective-Cひろ子 in Objective-C
ひろ子 in Objective-CTaketo Sano
 
Objective-C が好きになる Tips & Hack
Objective-C が好きになる Tips & HackObjective-C が好きになる Tips & Hack
Objective-C が好きになる Tips & HackTaketo Sano
 
下位互換コード隠蔽のストイシズム
下位互換コード隠蔽のストイシズム下位互換コード隠蔽のストイシズム
下位互換コード隠蔽のストイシズムTaketo Sano
 

More from Taketo Sano (18)

Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...
Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...
Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201...
 
トポロジーと圏論の夜明け
トポロジーと圏論の夜明けトポロジーと圏論の夜明け
トポロジーと圏論の夜明け
 
Swift で数学研究のススメ
Swift で数学研究のススメSwift で数学研究のススメ
Swift で数学研究のススメ
 
(意欲的な中高生のための)トポロジー・圏論・コンピュータ
(意欲的な中高生のための)トポロジー・圏論・コンピュータ(意欲的な中高生のための)トポロジー・圏論・コンピュータ
(意欲的な中高生のための)トポロジー・圏論・コンピュータ
 
特性類の気持ち
特性類の気持ち特性類の気持ち
特性類の気持ち
 
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学
 
情報幾何学 #2.4
情報幾何学 #2.4情報幾何学 #2.4
情報幾何学 #2.4
 
情報幾何学 #2 #infogeo16
情報幾何学 #2 #infogeo16情報幾何学 #2 #infogeo16
情報幾何学 #2 #infogeo16
 
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフトobjc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
objc2swift 〜 Objective-C から Swift への「コード&パラダイム」シフト
 
objc2swift (続・自動変換の野望)
objc2swift (続・自動変換の野望) objc2swift (続・自動変換の野望)
objc2swift (続・自動変換の野望)
 
さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計
 
基底変換、固有値・固有ベクトル、そしてその先
基底変換、固有値・固有ベクトル、そしてその先基底変換、固有値・固有ベクトル、そしてその先
基底変換、固有値・固有ベクトル、そしてその先
 
objc2swift (自動変換の野望)
objc2swift (自動変換の野望)objc2swift (自動変換の野望)
objc2swift (自動変換の野望)
 
2015 02-18 xxx-literalconvertible
2015 02-18 xxx-literalconvertible2015 02-18 xxx-literalconvertible
2015 02-18 xxx-literalconvertible
 
let UIWebView as WKWebView
let UIWebView as WKWebViewlet UIWebView as WKWebView
let UIWebView as WKWebView
 
ひろ子 in Objective-C
ひろ子 in Objective-Cひろ子 in Objective-C
ひろ子 in Objective-C
 
Objective-C が好きになる Tips & Hack
Objective-C が好きになる Tips & HackObjective-C が好きになる Tips & Hack
Objective-C が好きになる Tips & Hack
 
下位互換コード隠蔽のストイシズム
下位互換コード隠蔽のストイシズム下位互換コード隠蔽のストイシズム
下位互換コード隠蔽のストイシズム
 

コードを書けば複素数がわかる