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

コードを書けば複素数がわかる
@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
1 of 55

Recommended

虚数は作れる!Swift で学ぶ複素数 by
虚数は作れる!Swift で学ぶ複素数虚数は作れる!Swift で学ぶ複素数
虚数は作れる!Swift で学ぶ複素数Taketo Sano
42.2K views58 slides
何もないところから数を作る by
何もないところから数を作る何もないところから数を作る
何もないところから数を作るTaketo Sano
4.8K views103 slides
何もないところから数を作る by
何もないところから数を作る何もないところから数を作る
何もないところから数を作るTaketo Sano
9.5K views104 slides
20150922_楕円関数とおもしろい応用 by
20150922_楕円関数とおもしろい応用20150922_楕円関数とおもしろい応用
20150922_楕円関数とおもしろい応用matsumoring
15.7K views38 slides
20170327_レムニスケートにまつわる色々な計算 by
20170327_レムニスケートにまつわる色々な計算20170327_レムニスケートにまつわる色々な計算
20170327_レムニスケートにまつわる色々な計算matsumoring
2.2K views37 slides
PRML 10.4 - 10.6 by
PRML 10.4 - 10.6PRML 10.4 - 10.6
PRML 10.4 - 10.6Akira Miyazawa
1.5K views74 slides

More Related Content

What's hot

代数的実数とCADの実装紹介 by
代数的実数とCADの実装紹介代数的実数とCADの実装紹介
代数的実数とCADの実装紹介Masahiro Sakai
3.8K views71 slides
最急降下法 by
最急降下法最急降下法
最急降下法Akira Miyazawa
5.7K views11 slides
複素数・四元数と図形の回転 by
複素数・四元数と図形の回転複素数・四元数と図形の回転
複素数・四元数と図形の回転Yoshihiro Mizoguchi
8.7K views54 slides
130604 fpgax kibayos by
130604 fpgax kibayos130604 fpgax kibayos
130604 fpgax kibayosMikio Yoshida
2.5K views46 slides
PRML 第14章 by
PRML 第14章PRML 第14章
PRML 第14章Akira Miyazawa
2.3K views52 slides
回帰 by
回帰回帰
回帰Shin Asakawa
603 views21 slides

What's hot(20)

代数的実数とCADの実装紹介 by Masahiro Sakai
代数的実数とCADの実装紹介代数的実数とCADの実装紹介
代数的実数とCADの実装紹介
Masahiro Sakai3.8K views
すごいH 第12章モノイド by Shinta Hatatani
すごいH 第12章モノイドすごいH 第12章モノイド
すごいH 第12章モノイド
Shinta Hatatani2.2K views
スペクトラル・クラスタリング by Akira Miyazawa
スペクトラル・クラスタリングスペクトラル・クラスタリング
スペクトラル・クラスタリング
Akira Miyazawa19.7K views
モナドがいっぱい! by Kenta Sato
モナドがいっぱい!モナドがいっぱい!
モナドがいっぱい!
Kenta Sato3.5K views
リストモナドを作ってみた by Atsushi Kanehara
リストモナドを作ってみたリストモナドを作ってみた
リストモナドを作ってみた
Atsushi Kanehara1.4K views
「にじたい」へのいざない #ロマンティック数学ナイト by Junpei Tsuji
「にじたい」へのいざない #ロマンティック数学ナイト「にじたい」へのいざない #ロマンティック数学ナイト
「にじたい」へのいざない #ロマンティック数学ナイト
Junpei Tsuji962 views
wakuwaku Scala ~Scala入門勉強会~ 資料 by Mizuki Yamanaka
wakuwaku Scala ~Scala入門勉強会~ 資料wakuwaku Scala ~Scala入門勉強会~ 資料
wakuwaku Scala ~Scala入門勉強会~ 資料
Mizuki Yamanaka3K views
x^2+ny^2の形で表せる素数の法則と類体論 by Junpei Tsuji
x^2+ny^2の形で表せる素数の法則と類体論x^2+ny^2の形で表せる素数の法則と類体論
x^2+ny^2の形で表せる素数の法則と類体論
Junpei Tsuji4K views
奇関数・偶関数 by yu_nahb219
奇関数・偶関数奇関数・偶関数
奇関数・偶関数
yu_nahb219375 views
04.第四章用Matlab求偏导数 by Xin Zheng
04.第四章用Matlab求偏导数04.第四章用Matlab求偏导数
04.第四章用Matlab求偏导数
Xin Zheng4.5K views
高速フーリエ変換 by AtCoder Inc.
高速フーリエ変換高速フーリエ変換
高速フーリエ変換
AtCoder Inc.74.6K views
JOIss2020 発表資料 by mdkcpp 1015
JOIss2020 発表資料JOIss2020 発表資料
JOIss2020 発表資料
mdkcpp 1015111 views

Viewers also liked

Swift で数学のススメ 〜 プログラミングと数学は同時に学べ by
Swift で数学のススメ 〜 プログラミングと数学は同時に学べSwift で数学のススメ 〜 プログラミングと数学は同時に学べ
Swift で数学のススメ 〜 プログラミングと数学は同時に学べTaketo Sano
29.4K views42 slides
Konashi で始める iOS 電子工作 by
Konashi で始める iOS 電子工作Konashi で始める iOS 電子工作
Konashi で始める iOS 電子工作Taketo Sano
4.9K views10 slides
「時計の世界の整数論」第2回プログラマのための数学勉強会 #maths4pg by
「時計の世界の整数論」第2回プログラマのための数学勉強会 #maths4pg「時計の世界の整数論」第2回プログラマのための数学勉強会 #maths4pg
「時計の世界の整数論」第2回プログラマのための数学勉強会 #maths4pgJunpei Tsuji
79.8K views67 slides
証明プログラミング入門2 by
証明プログラミング入門2証明プログラミング入門2
証明プログラミング入門2Kyoko Kadowaki
46.7K views33 slides
エニグマ暗号とは何だったのか by
エニグマ暗号とは何だったのかエニグマ暗号とは何だったのか
エニグマ暗号とは何だったのかTakahiro (Poly) Horikawa
56K views57 slides
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列 by
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列Taketo Sano
57.3K views113 slides

Viewers also liked(9)

Swift で数学のススメ 〜 プログラミングと数学は同時に学べ by Taketo Sano
Swift で数学のススメ 〜 プログラミングと数学は同時に学べSwift で数学のススメ 〜 プログラミングと数学は同時に学べ
Swift で数学のススメ 〜 プログラミングと数学は同時に学べ
Taketo Sano29.4K views
Konashi で始める iOS 電子工作 by Taketo Sano
Konashi で始める iOS 電子工作Konashi で始める iOS 電子工作
Konashi で始める iOS 電子工作
Taketo Sano4.9K views
「時計の世界の整数論」第2回プログラマのための数学勉強会 #maths4pg by Junpei Tsuji
「時計の世界の整数論」第2回プログラマのための数学勉強会 #maths4pg「時計の世界の整数論」第2回プログラマのための数学勉強会 #maths4pg
「時計の世界の整数論」第2回プログラマのための数学勉強会 #maths4pg
Junpei Tsuji79.8K views
証明プログラミング入門2 by Kyoko Kadowaki
証明プログラミング入門2証明プログラミング入門2
証明プログラミング入門2
Kyoko Kadowaki46.7K views
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列 by Taketo Sano
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列
プログラマのための線形代数再入門2 〜 要件定義から学ぶ行列式と逆行列
Taketo Sano57.3K views
山手線は丸いのか?プログラマのためのトポロジー入門 by Taketo Sano
山手線は丸いのか?プログラマのためのトポロジー入門山手線は丸いのか?プログラマのためのトポロジー入門
山手線は丸いのか?プログラマのためのトポロジー入門
Taketo Sano24K views
フーリエ変換と画像圧縮の仕組み by yuichi takeda
フーリエ変換と画像圧縮の仕組みフーリエ変換と画像圧縮の仕組み
フーリエ変換と画像圧縮の仕組み
yuichi takeda239.5K views
プログラマのための線形代数再入門 by Taketo Sano
プログラマのための線形代数再入門プログラマのための線形代数再入門
プログラマのための線形代数再入門
Taketo Sano53.9K views

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

Implicit Explicit Scala by
Implicit Explicit ScalaImplicit Explicit Scala
Implicit Explicit ScalaKota Mizushima
2.3K views90 slides
代数トポロジー入門 by
代数トポロジー入門代数トポロジー入門
代数トポロジー入門Tatsuki SHIMIZU
3.1K views90 slides
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2) by
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)Yoichi Nakayama
833 views33 slides
Ssaw08 1125 by
Ssaw08 1125Ssaw08 1125
Ssaw08 1125Atsushi Tadokoro
499 views51 slides
圏論とプログラミング読書会#2 資料 by
圏論とプログラミング読書会#2 資料圏論とプログラミング読書会#2 資料
圏論とプログラミング読書会#2 資料53ningen
3K views48 slides
Stochastic complexities of reduced rank regression証明概略 by
 Stochastic complexities of reduced rank regression証明概略 Stochastic complexities of reduced rank regression証明概略
Stochastic complexities of reduced rank regression証明概略Xiangze
183 views24 slides

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

すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2) by Yoichi Nakayama
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)
Yoichi Nakayama833 views
圏論とプログラミング読書会#2 資料 by 53ningen
圏論とプログラミング読書会#2 資料圏論とプログラミング読書会#2 資料
圏論とプログラミング読書会#2 資料
53ningen3K views
Stochastic complexities of reduced rank regression証明概略 by Xiangze
 Stochastic complexities of reduced rank regression証明概略 Stochastic complexities of reduced rank regression証明概略
Stochastic complexities of reduced rank regression証明概略
Xiangze 183 views
Deep Learning を実装する by Shuhei Iitsuka
Deep Learning を実装するDeep Learning を実装する
Deep Learning を実装する
Shuhei Iitsuka75.3K views
数学教材(中間発表) by Mizuguchi1205
数学教材(中間発表)数学教材(中間発表)
数学教材(中間発表)
Mizuguchi12051.1K views
Simulation_assignment2 by T2C_
Simulation_assignment2Simulation_assignment2
Simulation_assignment2
T2C_385 views
introductino to persistent homology and topological data analysis by Tatsuki SHIMIZU
introductino to persistent homology and topological data analysisintroductino to persistent homology and topological data analysis
introductino to persistent homology and topological data analysis
Tatsuki SHIMIZU961 views
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1 by hirokazutanaka
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
東京都市大学 データ解析入門 6 回帰分析とモデル選択 1
hirokazutanaka280 views
Introduction to Categorical Programming (Revised) by Masahiro Sakai
Introduction to Categorical Programming (Revised)Introduction to Categorical Programming (Revised)
Introduction to Categorical Programming (Revised)
Masahiro Sakai6.4K views
モナドハンズオン前座 by bleis tift
モナドハンズオン前座モナドハンズオン前座
モナドハンズオン前座
bleis tift5.7K views
2021年度秋学期 画像情報処理 第5回 離散フーリエ変換 (2021. 10. 22 by Akira Asano
2021年度秋学期 画像情報処理 第5回 離散フーリエ変換 (2021. 10. 222021年度秋学期 画像情報処理 第5回 離散フーリエ変換 (2021. 10. 22
2021年度秋学期 画像情報処理 第5回 離散フーリエ変換 (2021. 10. 22
Akira Asano89 views

More from Taketo Sano

Divisibility of Lee’s class and its relation with Rasmussen’s invariant / 201... by
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
1.1K views52 slides
トポロジーと圏論の夜明け by
トポロジーと圏論の夜明けトポロジーと圏論の夜明け
トポロジーと圏論の夜明けTaketo Sano
3.4K views81 slides
Swift で数学研究のススメ by
Swift で数学研究のススメSwift で数学研究のススメ
Swift で数学研究のススメTaketo Sano
1.4K views33 slides
(意欲的な中高生のための)トポロジー・圏論・コンピュータ by
(意欲的な中高生のための)トポロジー・圏論・コンピュータ(意欲的な中高生のための)トポロジー・圏論・コンピュータ
(意欲的な中高生のための)トポロジー・圏論・コンピュータTaketo Sano
3.8K views76 slides
特性類の気持ち by
特性類の気持ち特性類の気持ち
特性類の気持ちTaketo Sano
3.9K views42 slides
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学 by
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学
「数える」とは何か? 〜 「とは何か?」を問う、AI時代の数学Taketo Sano
4.5K views56 slides

More from Taketo Sano(18)

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

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