algebra 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (199) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +53 -0
  3. data/.travis.yml +7 -0
  4. data/CODE_OF_CONDUCT.md +49 -0
  5. data/Gemfile +7 -0
  6. data/Gemfile.lock +28 -0
  7. data/LICENSE.txt +21 -0
  8. data/README-ja.txt +60 -0
  9. data/README.md +61 -0
  10. data/Rakefile +43 -0
  11. data/algebra.gemspec +33 -0
  12. data/bin/console +14 -0
  13. data/bin/setup +8 -0
  14. data/doc-ja/README-ja.html +69 -0
  15. data/doc-ja/README-ja.rd +60 -0
  16. data/doc-ja/README.html +0 -0
  17. data/doc-ja/README.rd +0 -0
  18. data/doc-ja/algebra-ja.html +66 -0
  19. data/doc-ja/algebra-ja.rd +60 -0
  20. data/doc-ja/algebraic-equation-ja.html +36 -0
  21. data/doc-ja/algebraic-equation-ja.rd +26 -0
  22. data/doc-ja/algebraic-extension-field-ja.html +122 -0
  23. data/doc-ja/algebraic-extension-field-ja.rd +118 -0
  24. data/doc-ja/algebraic-parser-ja.html +87 -0
  25. data/doc-ja/algebraic-parser-ja.rd +95 -0
  26. data/doc-ja/changes.html +161 -0
  27. data/doc-ja/changes.rd +119 -0
  28. data/doc-ja/elementary-divisor-ja.html +56 -0
  29. data/doc-ja/elementary-divisor-ja.rd +45 -0
  30. data/doc-ja/euclidian-ring-ja.html +78 -0
  31. data/doc-ja/euclidian-ring-ja.rd +69 -0
  32. data/doc-ja/finite-group-ja.html +285 -0
  33. data/doc-ja/finite-group-ja.rd +276 -0
  34. data/doc-ja/finite-map-ja.html +224 -0
  35. data/doc-ja/finite-map-ja.rd +227 -0
  36. data/doc-ja/finite-set-ja.html +393 -0
  37. data/doc-ja/finite-set-ja.rd +408 -0
  38. data/doc-ja/index-ja.html +113 -0
  39. data/doc-ja/index-ja.rd +112 -0
  40. data/doc-ja/jordan-form-ja.html +106 -0
  41. data/doc-ja/jordan-form-ja.rd +99 -0
  42. data/doc-ja/localized-ring-ja.html +121 -0
  43. data/doc-ja/localized-ring-ja.rd +131 -0
  44. data/doc-ja/m-polynomial-ja.html +542 -0
  45. data/doc-ja/m-polynomial-ja.rd +596 -0
  46. data/doc-ja/matrix-algebra-ja.html +686 -0
  47. data/doc-ja/matrix-algebra-ja.rd +727 -0
  48. data/doc-ja/matrix-algebra-triplet-ja.html +124 -0
  49. data/doc-ja/matrix-algebra-triplet-ja.rd +129 -0
  50. data/doc-ja/permutation-group-ja.html +159 -0
  51. data/doc-ja/permutation-group-ja.rd +151 -0
  52. data/doc-ja/polynomial-converter-ja.html +64 -0
  53. data/doc-ja/polynomial-converter-ja.rd +54 -0
  54. data/doc-ja/polynomial-ja.html +446 -0
  55. data/doc-ja/polynomial-ja.rd +473 -0
  56. data/doc-ja/residue-class-ring-ja.html +112 -0
  57. data/doc-ja/residue-class-ring-ja.rd +113 -0
  58. data/doc-ja/sample-algebraic-equation01.rb.v.rd +11 -0
  59. data/doc-ja/sample-algebraic-equation02.rb.v.rd +11 -0
  60. data/doc-ja/sample-algebraic-root01.rb.v.rd +20 -0
  61. data/doc-ja/sample-algebraicfield01.rb.v.rd +26 -0
  62. data/doc-ja/sample-algebraicfield02.rb.v.rd +15 -0
  63. data/doc-ja/sample-cayleyhamilton01.rb.v.rd +14 -0
  64. data/doc-ja/sample-diagonalization01.rb.v.rd +48 -0
  65. data/doc-ja/sample-divmod01.rb.v.rd +17 -0
  66. data/doc-ja/sample-elementary-divisor01.rb.v.rd +48 -0
  67. data/doc-ja/sample-factorize01.rb.v.rd +11 -0
  68. data/doc-ja/sample-factorize02.rb.v.rd +13 -0
  69. data/doc-ja/sample-factorize03.rb.v.rd +14 -0
  70. data/doc-ja/sample-factorize04.rb.v.rd +14 -0
  71. data/doc-ja/sample-factorize05.rb.v.rd +53 -0
  72. data/doc-ja/sample-galois-group01.rb.v.rd +27 -0
  73. data/doc-ja/sample-gaussian-elimination01.rb.v.rd +19 -0
  74. data/doc-ja/sample-geometry01.rb.v.rd +33 -0
  75. data/doc-ja/sample-geometry02.rb.v.rd +34 -0
  76. data/doc-ja/sample-geometry03.rb.v.rd +45 -0
  77. data/doc-ja/sample-geometry04.rb.v.rd +33 -0
  78. data/doc-ja/sample-geometry07.rb.v.rd +62 -0
  79. data/doc-ja/sample-groebner01.rb.v.rd +13 -0
  80. data/doc-ja/sample-groebner02.rb.v.rd +18 -0
  81. data/doc-ja/sample-groebner03.rb.v.rd +19 -0
  82. data/doc-ja/sample-group01.rb.v.rd +21 -0
  83. data/doc-ja/sample-jordan-form01.rb.v.rd +56 -0
  84. data/doc-ja/sample-jordanform01.rb.v.rd +55 -0
  85. data/doc-ja/sample-lagrange-multiplier01.rb.v.rd +35 -0
  86. data/doc-ja/sample-m-factorize01.rb.v.rd +15 -0
  87. data/doc-ja/sample-m-factorize02.rb.v.rd +12 -0
  88. data/doc-ja/sample-m-polynomial01.rb.v.rd +10 -0
  89. data/doc-ja/sample-map01.rb.v.rd +9 -0
  90. data/doc-ja/sample-polynomial01.rb.v.rd +9 -0
  91. data/doc-ja/sample-polynomial02.rb.v.rd +11 -0
  92. data/doc-ja/sample-primefield01.rb.v.rd +13 -0
  93. data/doc-ja/sample-quotientfield01.rb.v.rd +11 -0
  94. data/doc-ja/sample-quotientfield02.rb.v.rd +18 -0
  95. data/doc-ja/sample-quotientfield03.rb.v.rd +16 -0
  96. data/doc-ja/sample-quotientfield04.rb.v.rd +16 -0
  97. data/doc-ja/sample-set01.rb.v.rd +18 -0
  98. data/doc-ja/sample-splitting-field01.rb.v.rd +19 -0
  99. data/doc-ja/samples-ja.html +885 -0
  100. data/doc-ja/samples-ja.rd +221 -0
  101. data/doc-ja/style.css +85 -0
  102. data/doc-ja/todo.html +20 -0
  103. data/doc-ja/todo.rd +9 -0
  104. data/lib/algebra.rb +36 -0
  105. data/lib/algebra/algebraic-equation.rb +56 -0
  106. data/lib/algebra/algebraic-extension-field.rb +135 -0
  107. data/lib/algebra/algebraic-parser.rb +160 -0
  108. data/lib/algebra/algebraic-system.rb +224 -0
  109. data/lib/algebra/annihilate.rb +52 -0
  110. data/lib/algebra/array-supplement.rb +53 -0
  111. data/lib/algebra/auto-require.rb +84 -0
  112. data/lib/algebra/chinese-rem-th.rb +135 -0
  113. data/lib/algebra/combinatorial.rb +145 -0
  114. data/lib/algebra/elementary-divisor.rb +193 -0
  115. data/lib/algebra/euclidian-ring.rb +161 -0
  116. data/lib/algebra/factors.rb +305 -0
  117. data/lib/algebra/finite-group.rb +374 -0
  118. data/lib/algebra/finite-map.rb +201 -0
  119. data/lib/algebra/finite-set.rb +456 -0
  120. data/lib/algebra/galois-group.rb +129 -0
  121. data/lib/algebra/gaussian-elimination.rb +385 -0
  122. data/lib/algebra/groebner-basis-coeff.rb +228 -0
  123. data/lib/algebra/groebner-basis.rb +197 -0
  124. data/lib/algebra/import-module-single-thread.rb +86 -0
  125. data/lib/algebra/import-module.rb +491 -0
  126. data/lib/algebra/jordan-form.rb +114 -0
  127. data/lib/algebra/linear-algebra.rb +143 -0
  128. data/lib/algebra/localized-ring.rb +294 -0
  129. data/lib/algebra/m-index.rb +282 -0
  130. data/lib/algebra/m-polynomial-factor-int.rb +186 -0
  131. data/lib/algebra/m-polynomial-factor-zp.rb +114 -0
  132. data/lib/algebra/m-polynomial-factor.rb +315 -0
  133. data/lib/algebra/m-polynomial-gcd.rb +40 -0
  134. data/lib/algebra/m-polynomial.rb +875 -0
  135. data/lib/algebra/matrix-algebra-triplet.rb +292 -0
  136. data/lib/algebra/matrix-algebra.rb +929 -0
  137. data/lib/algebra/numeric-supplement.rb +123 -0
  138. data/lib/algebra/permutation-group.rb +257 -0
  139. data/lib/algebra/polynomial-converter.rb +193 -0
  140. data/lib/algebra/polynomial-factor-alg.rb +148 -0
  141. data/lib/algebra/polynomial-factor-int.rb +252 -0
  142. data/lib/algebra/polynomial-factor-zp.rb +165 -0
  143. data/lib/algebra/polynomial-factor.rb +140 -0
  144. data/lib/algebra/polynomial.rb +592 -0
  145. data/lib/algebra/powers.rb +31 -0
  146. data/lib/algebra/prime-gen.rb +32 -0
  147. data/lib/algebra/rational.rb +81 -0
  148. data/lib/algebra/residue-class-ring.rb +219 -0
  149. data/lib/algebra/sets-system.rb +43 -0
  150. data/lib/algebra/splitting-field.rb +103 -0
  151. data/lib/algebra/version.rb +3 -0
  152. data/sample/Makefile +10 -0
  153. data/sample/do-testscripts.rb +100 -0
  154. data/sample/sample-algebraic-equation01.rb +6 -0
  155. data/sample/sample-algebraic-equation02.rb +6 -0
  156. data/sample/sample-algebraic-root01.rb +15 -0
  157. data/sample/sample-algebraicfield01.rb +21 -0
  158. data/sample/sample-algebraicfield02.rb +10 -0
  159. data/sample/sample-cayleyhamilton01.rb +9 -0
  160. data/sample/sample-diagonalization01.rb +43 -0
  161. data/sample/sample-divmod01.rb +12 -0
  162. data/sample/sample-elementary-divisor01.rb +43 -0
  163. data/sample/sample-factorize01.rb +6 -0
  164. data/sample/sample-factorize02.rb +8 -0
  165. data/sample/sample-factorize03.rb +9 -0
  166. data/sample/sample-factorize04.rb +9 -0
  167. data/sample/sample-factorize05.rb +48 -0
  168. data/sample/sample-galois-group01.rb +22 -0
  169. data/sample/sample-gaussian-elimination01.rb +14 -0
  170. data/sample/sample-geometry01.rb +28 -0
  171. data/sample/sample-geometry02.rb +29 -0
  172. data/sample/sample-geometry03.rb +40 -0
  173. data/sample/sample-geometry04.rb +28 -0
  174. data/sample/sample-geometry07.rb +58 -0
  175. data/sample/sample-groebner01.rb +8 -0
  176. data/sample/sample-groebner02.rb +13 -0
  177. data/sample/sample-groebner03.rb +14 -0
  178. data/sample/sample-group01.rb +16 -0
  179. data/sample/sample-jordan-form01.rb +51 -0
  180. data/sample/sample-lagrange-multiplier01.rb +30 -0
  181. data/sample/sample-m-factorize01.rb +10 -0
  182. data/sample/sample-m-factorize02.rb +7 -0
  183. data/sample/sample-m-polynomial01.rb +5 -0
  184. data/sample/sample-map01.rb +4 -0
  185. data/sample/sample-polynomial01.rb +4 -0
  186. data/sample/sample-polynomial02.rb +6 -0
  187. data/sample/sample-primefield01.rb +8 -0
  188. data/sample/sample-quotientfield01.rb +6 -0
  189. data/sample/sample-quotientfield02.rb +13 -0
  190. data/sample/sample-quotientfield03.rb +11 -0
  191. data/sample/sample-quotientfield04.rb +11 -0
  192. data/sample/sample-set01.rb +13 -0
  193. data/sample/sample-splitting-field01.rb +14 -0
  194. data/sample/test-00-cayley-hamilton.rb +76 -0
  195. data/sample/test-00-groebner-basis.rb +274 -0
  196. data/sample/test-00-polynomial-factor-alg.rb +89 -0
  197. data/sample/test-00.list +4 -0
  198. data/sample/time-trial.rb +65 -0
  199. metadata +373 -0
@@ -0,0 +1,60 @@
1
+ =begin
2
+ = 代数パッケージ
3
+
4
+ 2006.09.16
5
+
6
+ *Version: 0.72
7
+ *著者: 原 信一郎
8
+ *e-mail: sinara@blade.nagaokaut.ac.jp
9
+ *Home Page: ((<URL:http://blade.nagaokaut.ac.jp/~sinara/ruby/math/>))
10
+
11
+ == これは、、、
12
+
13
+ 1変数あるいは多変数の多項式を計算するためのライブラリです。
14
+ 数学的対象を自然に Ruby で表現可能にする事を目的にしています。
15
+ スピードはありませんが、スクリプト言語なのでアルゴリズムを見る事
16
+ ができます。
17
+
18
+ * 一変数多項式
19
+ * 加法、乗法、商/剰余等の演算
20
+ * 因数分解
21
+ * Galois 群
22
+ * 多変数多項式
23
+ * 加法、乗法等の演算
24
+ * 因数分解
25
+ * グレブナ基底の生成、グレブナ基底による商/剰余の演算
26
+ * 代数系
27
+ * 商体の生成
28
+ * 剰余環の生成
29
+ * 行列環の生成
30
+ * 置換群の計算
31
+ * 集合と写像
32
+
33
+ == インストール
34
+
35
+ このパッケージを利用するにはまず、オブジェクト指向スクリプト言語 Ruby
36
+ (((<URL:http://www.ruby-lang.org/>))参照) が必要です。
37
+
38
+ 更に、アーカイブの展開後
39
+
40
+ ruby install.rb
41
+
42
+ とすれば、lib ディレクトリ以下を、ロード可能なディレクトリにコピーし、
43
+ インストールが完了します。
44
+
45
+ 速度の点から、有理数は標準添付の rational.rb ではなく、拡張ライブラリ
46
+ (((<URL:http://blade.nagaokaut.ac.jp/~sinara/ruby/rational/>))
47
+ を使うことを勧めます。
48
+
49
+ == 使い方・サンプル
50
+
51
+ doc ディレクトリの ((<index-ja.html|URL:index-ja.html>)) を見てください。
52
+ マニュアルやサンプルがあります。
53
+
54
+ == 参考
55
+ * D.コックス, J.リトル and D.オシー, "グレブナ基底と代数多様体入門(上・下)",
56
+ 2000,シュプリンガー・フェアラーク東京
57
+ * 児玉宏児, "Polynomial", ((<URL:http://www.math.kobe-u.ac.jp/HOME/kodama/tips-RubyPoly.html>))
58
+ * H.Anai, M.Noro and K.Yokoyama, "Computation of the splitting fields and the Galois groups of polynomials", Progres in Mathematics, 28-50, Vo.143, 1996
59
+
60
+ =end
File without changes
File without changes
@@ -0,0 +1,66 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+ <html xmlns="http://www.w3.org/1999/xhtml">
6
+ <head>
7
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
8
+ <title>doc-ja/algebra-ja.rd</title>
9
+ <link href="style.css" type="text/css" rel="stylesheet" />
10
+ </head>
11
+ <body>
12
+ <p><a href="#label-0">Algebra</a></p>
13
+ <h1><a name="label-0" id="label-0">Algebra</a></h1><!-- RDLabel: "Algebra" -->
14
+ <p><em>(代数モジュール)</em></p>
15
+ <p>代数ライブラリ </p>
16
+ <ul>
17
+ <li><a href="polynomial-ja.html">Algebra::Polynomial</a> (1変数多項式環クラス)</li>
18
+ <li><a href="m-polynomial-ja.html">Algebra::MPolynomial</a> (多変数多項式環クラス)</li>
19
+ <li><a href="residue-class-ring-ja.html">Algebra::ResidueClassRing</a> (剰余環クラス)</li>
20
+ <li><a href="localized-ring-ja.html">Algebra::LocalizedRing</a> (局所化環クラス)</li>
21
+ <li><a href="matrix-algebra-ja.html">Algebra::MatrixAlgebra</a> (行列代数クラス)</li>
22
+ <li>etc.</li>
23
+ </ul>
24
+ <p>などをまとめているモジュールです。</p>
25
+ <h2><a name="label-1" id="label-1">関連するファイル:</a></h2><!-- RDLabel: "関連するファイル:" -->
26
+ <ul>
27
+ <li><p><code>require "algebra.rb"</code> をしておくと、</p>
28
+ <pre>include Algebra</pre>
29
+ <p>がなされ、これらのモジュールが記述されたファイルを適宜 <code>require</code> します。</p></li>
30
+ </ul>
31
+ <h2><a name="label-2" id="label-2">スーパークラス:</a></h2><!-- RDLabel: "スーパークラス:" -->
32
+ <ul>
33
+ <li><var>Object</var></li>
34
+ </ul>
35
+ <h2><a name="label-3" id="label-3">インクルードしているモジュール:</a></h2><!-- RDLabel: "インクルードしているモジュール:" -->
36
+ <p>なし</p>
37
+ <h2><a name="label-4" id="label-4">クラスメソッド:</a></h2><!-- RDLabel: "クラスメソッド:" -->
38
+ <dl>
39
+ <dt><a name="label-5" id="label-5"><code>Algebra.Polynomial(<var>ring</var> [, <var>obj0</var> , <var>obj1</var> [, ...]])</code></a></dt><!-- RDLabel: "Algebra.Polynomial" -->
40
+ <dd>
41
+ <a href="polynomial-ja.html#Algebra_S_Polynomial">Algebra.Polynomial</a>() 参照。</dd>
42
+ <dt><a name="label-6" id="label-6"><code>Algebra.MPolynomial(<var>ring</var> [, <var>obj0</var> [, <var>obj1</var> [, ...]]])</code></a></dt><!-- RDLabel: "Algebra.MPolynomial" -->
43
+ <dd>
44
+ <a href="m-polynomial-ja.html#Algebra_S_MPolynomial">Algebra.MPolynomial</a>() 参照。</dd>
45
+ <dt><a name="label-7" id="label-7"><code>Algebra.ResidueClassRing(<var>ring</var>, <var>mod</var>)</code></a></dt><!-- RDLabel: "Algebra.ResidueClassRing" -->
46
+ <dd>
47
+ <a href="residue-class-ring-ja.html#Algebra_S_ResidueClassRing">Algebra.ResidueClassRing</a>() 参照。</dd>
48
+ <dt><a name="label-8" id="label-8"><code>Algebra.AlgebraicExtensionField(<var>field</var>, <var>obj</var>){|<var>x</var>| ... }</code></a></dt><!-- RDLabel: "Algebra.AlgebraicExtensionField" -->
49
+ <dd>
50
+ <a href="residue-class-ring-ja.html#Algebra_S_AlgebraicExtensionField">Algebra.AlgebraicExtensionField</a>() 参照。</dd>
51
+ <dt><a name="label-9" id="label-9"><code>Algebra.MatrixAlgebra(<var>ring</var>, <var>m</var>, <var>n</var>)</code></a></dt><!-- RDLabel: "Algebra.MatrixAlgebra" -->
52
+ <dd>
53
+ <a href="matrix-algebra-ja.html#Algebra_S_MatrixAlgebra">Algebra.MatrixAlgebra</a>(ring, m, n) 参照。</dd>
54
+ <dt><a name="label-10" id="label-10"><code>Algebra.Vector(<var>ring</var>, <var>n</var>)</code></a></dt><!-- RDLabel: "Algebra.Vector" -->
55
+ <dd>
56
+ <a href="matrix-algebra-ja.html#Algebra_S_Vector">Algebra.Vector</a>(ring, n) 参照。</dd>
57
+ <dt><a name="label-11" id="label-11"><code>Algebra.Covector(<var>ring</var>, <var>n</var>)</code></a></dt><!-- RDLabel: "Algebra.Covector" -->
58
+ <dd>
59
+ <a href="matrix-algebra-ja.html#Algebra_S_Covector">Algebra.Covector</a>(ring, n) 参照。</dd>
60
+ <dt><a name="label-12" id="label-12"><code>Algebra.SquareMatrix(<var>ring</var>, <var>size</var>)</code></a></dt><!-- RDLabel: "Algebra.SquareMatrix" -->
61
+ <dd>
62
+ <a href="matrix-algebra-ja.html#Algebra_S_SquareMatrix">Algebra.SquareMatrix</a>(ring, n) 参照。</dd>
63
+ </dl>
64
+
65
+ </body>
66
+ </html>
@@ -0,0 +1,60 @@
1
+ =begin
2
+ ((<Algebra>))
3
+
4
+ = Algebra
5
+ ((*(代数モジュール)*))
6
+
7
+ 代数ライブラリ
8
+
9
+ * ((<Algebra::Polynomial|URL:polynomial-ja.html>)) (1変数多項式環クラス)
10
+ * ((<Algebra::MPolynomial|URL:m-polynomial-ja.html>)) (多変数多項式環クラス)
11
+ * ((<Algebra::ResidueClassRing|URL:residue-class-ring-ja.html>)) (剰余環クラス)
12
+ * ((<Algebra::LocalizedRing|URL:localized-ring-ja.html>)) (局所化環クラス)
13
+ * ((<Algebra::MatrixAlgebra|URL:matrix-algebra-ja.html>)) (行列代数クラス)
14
+ * etc.
15
+
16
+ などをまとめているモジュールです。
17
+
18
+ == 関連するファイル:
19
+ * (({require "algebra.rb"})) をしておくと、
20
+
21
+ include Algebra
22
+
23
+ がなされ、これらのモジュールが記述されたファイルを適宜 (({require})) します。
24
+
25
+ == スーパークラス:
26
+
27
+ * ((|Object|))
28
+
29
+ == インクルードしているモジュール:
30
+
31
+ なし
32
+
33
+ == クラスメソッド:
34
+
35
+ --- Algebra.Polynomial(ring [, obj0 , obj1 [, ...]])
36
+ ((<Algebra.Polynomial|URL:polynomial-ja.html#Algebra_S_Polynomial>))() 参照。
37
+
38
+ --- Algebra.MPolynomial(ring [, obj0 [, obj1 [, ...]]])
39
+ ((<Algebra.MPolynomial|URL:m-polynomial-ja.html#Algebra_S_MPolynomial>))() 参照。
40
+
41
+ --- Algebra.ResidueClassRing(ring, mod)
42
+ ((<Algebra.ResidueClassRing|URL:residue-class-ring-ja.html#Algebra_S_ResidueClassRing>))() 参照。
43
+
44
+ --- Algebra.AlgebraicExtensionField(field, obj){|x| ... }
45
+ ((<Algebra.AlgebraicExtensionField|URL:residue-class-ring-ja.html#Algebra_S_AlgebraicExtensionField>))() 参照。
46
+
47
+ --- Algebra.MatrixAlgebra(ring, m, n)
48
+ ((<Algebra.MatrixAlgebra|URL:matrix-algebra-ja.html#Algebra_S_MatrixAlgebra>))(ring, m, n) 参照。
49
+
50
+ --- Algebra.Vector(ring, n)
51
+ ((<Algebra.Vector|URL:matrix-algebra-ja.html#Algebra_S_Vector>))(ring, n) 参照。
52
+
53
+ --- Algebra.Covector(ring, n)
54
+ ((<Algebra.Covector|URL:matrix-algebra-ja.html#Algebra_S_Covector>))(ring, n) 参照。
55
+
56
+ --- Algebra.SquareMatrix(ring, size)
57
+ ((<Algebra.SquareMatrix|URL:matrix-algebra-ja.html#Algebra_S_SquareMatrix>))(ring, n) 参照。
58
+
59
+
60
+ =end
@@ -0,0 +1,36 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+ <html xmlns="http://www.w3.org/1999/xhtml">
6
+ <head>
7
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
8
+ <title>doc-ja/algebraic-equation-ja.rd</title>
9
+ <link href="style.css" type="text/css" rel="stylesheet" />
10
+ </head>
11
+ <body>
12
+ <p>[<a href="index-ja.html">index-ja</a>] </p>
13
+ <h1><a name="label-0" id="label-0">AlgebraicEqation</a></h1><!-- RDLabel: "AlgebraicEqation" -->
14
+ <p><em>(代数方程式のためのユーティリティー)</em></p>
15
+ <p>方程式と体のためのファイル</p>
16
+ <h2><a name="label-1" id="label-1">ファイル名:</a></h2><!-- RDLabel: "ファイル名:" -->
17
+ <ul>
18
+ <li><var>algebraic-equation.rb</var></li>
19
+ </ul>
20
+ <h2><a name="label-2" id="label-2">モジュールメソッド:</a></h2><!-- RDLabel: "モジュールメソッド:" -->
21
+ <dl>
22
+ <dt><a name="label-3" id="label-3"><code>minimal_polynomial(<var>element</var>, <var>poly1</var>[, <var>poly2</var>[, <var>poly3</var>...]])</code></a></dt><!-- RDLabel: "minimal_polynomial" -->
23
+ <dd>
24
+ <p><code>poly1, poly2, poly3...</code> を法とした、<var>element</var> の最小多項式
25
+ を求めます。</p>
26
+ <p>例: ルート2 + ルート3 + ルート5 の最小多項式を求める。</p>
27
+ <pre>PQ = MPolynomial(Rational)
28
+ a, b, c = PQ.vars("abc")
29
+ p AlgebraicEquation.minimal_polynomial(a + b + c, a**2-2, b**2-3, c**2-5)
30
+
31
+ #=&gt; x^8 - 40x^6 + 352x^4 - 960x^2 + 576</pre></dd>
32
+ <dt><a name="label-4" id="label-4"><code>symmetric_product</code></a></dt><!-- RDLabel: "symmetric_product" -->
33
+ </dl>
34
+
35
+ </body>
36
+ </html>
@@ -0,0 +1,26 @@
1
+ =begin
2
+ [((<index-ja|URL:index-ja.html>))]
3
+ = AlgebraicEqation
4
+ ((*(代数方程式のためのユーティリティー)*))
5
+
6
+ 方程式と体のためのファイル
7
+
8
+ == ファイル名:
9
+ * ((|algebraic-equation.rb|))
10
+
11
+ == モジュールメソッド:
12
+
13
+ --- minimal_polynomial(element, poly1[, poly2[, poly3...]])
14
+ (({poly1, poly2, poly3...})) を法とした、((|element|)) の最小多項式
15
+ を求めます。
16
+
17
+ 例: ルート2 + ルート3 + ルート5 の最小多項式を求める。
18
+ PQ = MPolynomial(Rational)
19
+ a, b, c = PQ.vars("abc")
20
+ p AlgebraicEquation.minimal_polynomial(a + b + c, a**2-2, b**2-3, c**2-5)
21
+
22
+ #=> x^8 - 40x^6 + 352x^4 - 960x^2 + 576
23
+
24
+ --- symmetric_product
25
+
26
+ =end
@@ -0,0 +1,122 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+ <html xmlns="http://www.w3.org/1999/xhtml">
6
+ <head>
7
+ <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
8
+ <title>doc-ja/algebraic-extension-field-ja.rd</title>
9
+ <link href="style.css" type="text/css" rel="stylesheet" />
10
+ </head>
11
+ <body>
12
+ <p>[<a href="index-ja.html">index-ja</a>] </p>
13
+ <h1><a name="label-0" id="label-0">AlgebraicExtensionField</a></h1><!-- RDLabel: "AlgebraicExtensionField" -->
14
+ <p><em>(代数拡大体)</em></p>
15
+ <p>代数拡大体を表現するクラス</p>
16
+ <h2><a name="label-1" id="label-1">ファイル名:</a></h2><!-- RDLabel: "ファイル名:" -->
17
+ <ul>
18
+ <li><var>algebraic-Extension-feild.rb</var></li>
19
+ </ul>
20
+ <h2><a name="label-2" id="label-2">スーパークラス:</a></h2><!-- RDLabel: "スーパークラス:" -->
21
+ <ul>
22
+ <li><var>ResidueClassRing</var></li>
23
+ </ul>
24
+ <h2><a name="label-3" id="label-3">インクルードしているモジュール:</a></h2><!-- RDLabel: "インクルードしているモジュール:" -->
25
+ <p>なし。</p>
26
+ <h2><a name="label-4" id="label-4">関連するメソッド:</a></h2><!-- RDLabel: "関連するメソッド:" -->
27
+ <dl>
28
+ <dt><a name="label-5" id="label-5"><code>Algebra.AlgebraicExtensionField(<var>field</var>, <var>obj</var>){|<var>x</var>| ... }</code></a></dt><!-- RDLabel: "Algebra.AlgebraicExtensionField" -->
29
+ <dd>
30
+ <a href="#label-7">::create</a> と同じ。</dd>
31
+ </dl>
32
+ <h2><a name="label-6" id="label-6">クラスメソッド:</a></h2><!-- RDLabel: "クラスメソッド:" -->
33
+ <dl>
34
+ <dt><a name="label-7" id="label-7"><code>::create(<var>k</var>, <var>obj</var>){|<var>x</var>| <var>p</var>(<var>x</var>) }</code></a></dt><!-- RDLabel: "::create" -->
35
+ <dd>
36
+ <p>体 <var>k</var> を、<var>obj</var> で表される変数 <var>x</var> の多項式
37
+ <var>p(x)</var> で拡大した環 <var>k[x]/(p(x))</var>を返します。
38
+ この環には、クラスメソッド <a href="#label-9">::var</a>、<a href="#label-11">::def_polys</a>、
39
+ <a href="#label-12">::env_ring</a> が定義されます。</p>
40
+ <p>例: 有理数を方程式 <code>x**2 + x + 1 == 0</code> で拡大した体 F を作る。</p>
41
+ <pre>require "rational"
42
+ require "algebraic-extension-field"
43
+ F = Algebra::AlgebraicExtensionField.create(Rational, "x") {|x| x**2 + x + 1}
44
+ x = F.var
45
+ p( (x-1)** 3 / (x**2 - 1) ) #=&gt; -3x - 3</pre></dd>
46
+ <dt><a name="label-8" id="label-8"><code>::to_ary</code></a></dt><!-- RDLabel: "::to_ary" -->
47
+ <dd>
48
+ <p><code>[self, var]</code> を返します。</p>
49
+ <p>例: 代数拡大体と添加元を同時に定義する</p>
50
+ <pre>require "rational"
51
+ require "algebraic-extension-field"
52
+ F, a = Algebra.AlgebraicExtensionField(Rational, "a") {|a| a**2 + a + 1}</pre></dd>
53
+ <dt><a name="label-9" id="label-9"><code>::var</code></a></dt><!-- RDLabel: "::var" -->
54
+ <dd>
55
+ <a href="#label-7">::create</a> の返り値 <var>k[x]/(p(x))</var> に定義され、
56
+ この剰余環における <var>x</var> で
57
+ 代表される剰余類を返します。</dd>
58
+ <dt><a name="label-10" id="label-10"><code>::modulus</code></a></dt><!-- RDLabel: "::modulus" -->
59
+ <dd>
60
+ <a href="#label-7">::create</a> の返り値 <var>k[x]/(p(x))</var> に定義され、<var>k[x]</var>
61
+ の要素 <var>p(x)</var> を返します。</dd>
62
+ <dt><a name="label-11" id="label-11"><code>::def_polys</code></a></dt><!-- RDLabel: "::def_polys" -->
63
+ <dd>
64
+ <p><a href="#label-7">::create</a> の返り値 <var>k[x]/(p(x))</var> に定義され、
65
+ 長さ <var>n</var> の各 <a href="#label-10">::modulus</a> の配列を返します。
66
+ ここで、自身は、基礎体 <var>k0</var> 上高さ <var>n</var> の
67
+ 再帰的な <var>AlgebraicExtensionField</var> であるとします。</p>
68
+ <p>例: 基礎体を有理数とし、2, 3, 5 の立方根による拡大体を作る</p>
69
+ <pre>require "algebra"
70
+ # K0 == Rational
71
+ K1 = AlgebraicExtensionField(Rational, "x1") { |x|
72
+ x ** 3 - 2
73
+ }
74
+ K2 = AlgebraicExtensionField(K1, "x2") { |y|
75
+ y ** 3 - 3
76
+ }
77
+ K3 = AlgebraicExtensionField(K2, "x3") { |z|
78
+ z ** 3 - 5
79
+ }
80
+
81
+ p K3.def_polys #=&gt; [x1^3 - 2, x2^3 - 3, x3^3 - 5]
82
+
83
+ x1, x2, x3 = K1.var, K2.var, K3.var
84
+ f = x1**2 + 2*x2**2 + 3*x3**2
85
+ f0 = f.abs_lift
86
+
87
+ p f0.type #=&gt; (Polynomial/(Polynomial/(Polynomial/Rational)))
88
+ p f0.type == K3.env_ring #=&gt; true
89
+
90
+ p f #=&gt; 3x3^2 + 2x2^2 + x1^2
91
+ p f0.evaluate(x3.abs_lift, x2.abs_lift, x1.abs_lift)
92
+ #=&gt; x3^2 + 2x2^2 + 3x3^2</pre></dd>
93
+ <dt><a name="label-12" id="label-12"><code>::env_ring</code></a></dt><!-- RDLabel: "::env_ring" -->
94
+ <dd>
95
+ <a href="#label-7">::create</a> の返り値 <var>k[x]/(p(x))</var> に定義され、
96
+ 多変数多項式環 <var>k0[x1, x2,.., xn]</var> を返します。
97
+ ここで、自身は、基礎体 <var>k0</var> 上高さ <var>n</var> の
98
+ 再帰的な <var>AlgebraicExtensionField</var> であるとします。</dd>
99
+ <dt><a name="label-13" id="label-13"><code>::ground</code></a></dt><!-- RDLabel: "::ground" -->
100
+ <dd>
101
+ 剰余環のもとになる多項式環 <var>k[x]</var> を返します。</dd>
102
+ </dl>
103
+ <h2><a name="label-14" id="label-14">メソッド</a></h2><!-- RDLabel: "メソッド" -->
104
+ <dl>
105
+ <dt><a name="label-15" id="label-15"><code>abs_lift</code></a></dt><!-- RDLabel: "abs_lift" -->
106
+ <dd>
107
+ <a href="#label-12">::env_ring</a> すなわち基礎体 <var>k0</var> 上
108
+ の多変数多項式環 <var>k0[x1, x2,.., xn]</var>
109
+ へのリフトを返します。</dd>
110
+ <dt><a name="label-16" id="label-16"><code>[<var>n</var>]</code></a></dt><!-- RDLabel: "[]" -->
111
+ <dd>
112
+ <p><!-- Reference, RDLabel "n" doesn't exist --><em class="label-not-found">n</em><!-- Reference end --> 次の係数を返します。<code>lift[n]</code> と同じです。</p>
113
+ <p>例: Fibonacci 数列</p>
114
+ <pre>require "algebra"
115
+ t = AlgebraicExtensionField(Integral, "t"){|x| x**2-x-1}.var
116
+ (0..10).each do |n|
117
+ p( (t**n)[1] ) #=&gt; 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55
118
+ end</pre></dd>
119
+ </dl>
120
+
121
+ </body>
122
+ </html>
@@ -0,0 +1,118 @@
1
+ =begin
2
+ [((<index-ja|URL:index-ja.html>))]
3
+
4
+ = AlgebraicExtensionField
5
+ ((*(代数拡大体)*))
6
+
7
+ 代数拡大体を表現するクラス
8
+
9
+ == ファイル名:
10
+ * ((|algebraic-Extension-feild.rb|))
11
+
12
+ == スーパークラス:
13
+
14
+ * ((|ResidueClassRing|))
15
+
16
+ == インクルードしているモジュール:
17
+
18
+ なし。
19
+
20
+ == 関連するメソッド:
21
+
22
+ --- Algebra.AlgebraicExtensionField(field, obj){|x| ... }
23
+ ((<::create>)) と同じ。
24
+
25
+ == クラスメソッド:
26
+
27
+ --- ::create(k, obj){|x| p(x) }
28
+ 体 ((|k|)) を、((|obj|)) で表される変数 ((|x|)) の多項式
29
+ ((|p(x)|)) で拡大した環 ((|k[x]/(p(x))|))を返します。
30
+ この環には、クラスメソッド ((<::var>))、((<::def_polys>))、
31
+ ((<::env_ring>)) が定義されます。
32
+
33
+
34
+ 例: 有理数を方程式 (({x**2 + x + 1 == 0})) で拡大した体 F を作る。
35
+ require "rational"
36
+ require "algebraic-extension-field"
37
+ F = Algebra::AlgebraicExtensionField.create(Rational, "x") {|x| x**2 + x + 1}
38
+ x = F.var
39
+ p( (x-1)** 3 / (x**2 - 1) ) #=> -3x - 3
40
+
41
+ --- ::to_ary
42
+ (({[self, var]})) を返します。
43
+
44
+ 例: 代数拡大体と添加元を同時に定義する
45
+ require "rational"
46
+ require "algebraic-extension-field"
47
+ F, a = Algebra.AlgebraicExtensionField(Rational, "a") {|a| a**2 + a + 1}
48
+
49
+ --- ::var
50
+ ((<::create>)) の返り値 ((|k[x]/(p(x))|)) に定義され、
51
+ この剰余環における ((|x|)) で
52
+ 代表される剰余類を返します。
53
+
54
+ --- ::modulus
55
+ ((<::create>)) の返り値 ((|k[x]/(p(x))|)) に定義され、((|k[x]|))
56
+ の要素 ((|p(x)|)) を返します。
57
+
58
+ --- ::def_polys
59
+ ((<::create>)) の返り値 ((|k[x]/(p(x))|)) に定義され、
60
+ 長さ ((|n|)) の各 ((<::modulus>)) の配列を返します。
61
+ ここで、自身は、基礎体 ((|k0|)) 上高さ ((|n|)) の
62
+ 再帰的な ((|AlgebraicExtensionField|)) であるとします。
63
+
64
+
65
+ 例: 基礎体を有理数とし、2, 3, 5 の立方根による拡大体を作る
66
+ require "algebra"
67
+ # K0 == Rational
68
+ K1 = AlgebraicExtensionField(Rational, "x1") { |x|
69
+ x ** 3 - 2
70
+ }
71
+ K2 = AlgebraicExtensionField(K1, "x2") { |y|
72
+ y ** 3 - 3
73
+ }
74
+ K3 = AlgebraicExtensionField(K2, "x3") { |z|
75
+ z ** 3 - 5
76
+ }
77
+
78
+ p K3.def_polys #=> [x1^3 - 2, x2^3 - 3, x3^3 - 5]
79
+
80
+ x1, x2, x3 = K1.var, K2.var, K3.var
81
+ f = x1**2 + 2*x2**2 + 3*x3**2
82
+ f0 = f.abs_lift
83
+
84
+ p f0.type #=> (Polynomial/(Polynomial/(Polynomial/Rational)))
85
+ p f0.type == K3.env_ring #=> true
86
+
87
+ p f #=> 3x3^2 + 2x2^2 + x1^2
88
+ p f0.evaluate(x3.abs_lift, x2.abs_lift, x1.abs_lift)
89
+ #=> x3^2 + 2x2^2 + 3x3^2
90
+
91
+
92
+ --- ::env_ring
93
+ ((<::create>)) の返り値 ((|k[x]/(p(x))|)) に定義され、
94
+ 多変数多項式環 ((|k0[x1, x2,.., xn]|)) を返します。
95
+ ここで、自身は、基礎体 ((|k0|)) 上高さ ((|n|)) の
96
+ 再帰的な ((|AlgebraicExtensionField|)) であるとします。
97
+
98
+ --- ::ground
99
+ 剰余環のもとになる多項式環 ((|k[x]|)) を返します。
100
+
101
+
102
+ == メソッド
103
+ --- abs_lift
104
+ ((<::env_ring>)) すなわち基礎体 ((|k0|)) 上
105
+ の多変数多項式環 ((|k0[x1, x2,.., xn]|))
106
+ へのリフトを返します。
107
+
108
+ --- [](n)
109
+ ((<n>)) 次の係数を返します。(({lift[n]})) と同じです。
110
+
111
+ 例: Fibonacci 数列
112
+ require "algebra"
113
+ t = AlgebraicExtensionField(Integral, "t"){|x| x**2-x-1}.var
114
+ (0..10).each do |n|
115
+ p( (t**n)[1] ) #=> 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55
116
+ end
117
+
118
+ =end