タグ

ブックマーク / qiita.com/taketo1024 (3)

  • Swiftで代数学入門 〜 2. 群・環・体の定義 - Qiita

    どうも、佐野です。前回の記事 で整数は「環」、有理数・実数・複素数は「体」であるという話をしました。今回は「群・環・体」といった代数的構造を protocol として定義し、実体としての整数・有理数・実数を struct として実装していきます。 目次: 数とは何か? 群・環・体の定義 ← イマココ 有理数を作ってみよう 時計の世界の「環」 小さな「体」を作ろう 多項式は整数によく似てる 代数拡大で数を作ろう! 「群」の定義 「群」の数学的な定義はこうです: 集合 $G$ に演算 $\cdot$ があり、以下を満たすとき $G$ を 群 (Group)という: [結合性] 任意の $a, b, c \in G$ に対し $(a \cdot b)\cdot c = a \cdot (b \cdot c)$ が成り立つ [単位元] ある $e \in G$ があり、任意の $a \in G$

    Swiftで代数学入門 〜 2. 群・環・体の定義 - Qiita
  • Swiftで代数学入門 〜 1. 数とは何か? - Qiita

    struct f : TPPolynominal { // f(x) = x^2 - 2 in Q[x] static let value = Polynominal<Q>(-2, 0, 1) } typealias K = FieldExtension<f> // K = Q[x]/(x^2 - 2) let a = K(0, 1) // x mod (x^2 - 2) a * a // 2 mod (x^2 - 2) a * a == 2 // true! これが何のことか分からなくても、最後の1行を見てください… a * a == 2 となっています! a は自乗して 2 になる数なんだから、これは $\sqrt{2}$ そのものです。同じように虚数単位 $i$ や $1$ の原始 $n$ 乗根 $\zeta_n$ も、近似ではない「その数そのもの」をプログラムで実現できてしまうので

    Swiftで代数学入門 〜 1. 数とは何か? - Qiita
  • Swift で Phantom Type (幽霊型) - Qiita

    社内の「Scala 勉強会」で Phantom Type (幽霊型) という厨二心をくすぐる感じのデザインパターンを教えてもらったので、同じことを Swift でもやってみました。 インスタンスの状態を変数ではなく 型パラメータ として持つことで、状態チェックを実行時ではなく コンパイル時 に行えるというイカしたテクニックです。 class Status{} class NotReady: Status{} class Ready: Status{} class Something<T: Status> { static func createInstance() -> Something<NotReady> { return Something<NotReady>() } func readify() -> Something<Ready> { return Something<Read

    Swift で Phantom Type (幽霊型) - Qiita
  • 1