algebra 0.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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