algebra 0.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +53 -0
- data/.travis.yml +7 -0
- data/CODE_OF_CONDUCT.md +49 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +28 -0
- data/LICENSE.txt +21 -0
- data/README-ja.txt +60 -0
- data/README.md +61 -0
- data/Rakefile +43 -0
- data/algebra.gemspec +33 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/doc-ja/README-ja.html +69 -0
- data/doc-ja/README-ja.rd +60 -0
- data/doc-ja/README.html +0 -0
- data/doc-ja/README.rd +0 -0
- data/doc-ja/algebra-ja.html +66 -0
- data/doc-ja/algebra-ja.rd +60 -0
- data/doc-ja/algebraic-equation-ja.html +36 -0
- data/doc-ja/algebraic-equation-ja.rd +26 -0
- data/doc-ja/algebraic-extension-field-ja.html +122 -0
- data/doc-ja/algebraic-extension-field-ja.rd +118 -0
- data/doc-ja/algebraic-parser-ja.html +87 -0
- data/doc-ja/algebraic-parser-ja.rd +95 -0
- data/doc-ja/changes.html +161 -0
- data/doc-ja/changes.rd +119 -0
- data/doc-ja/elementary-divisor-ja.html +56 -0
- data/doc-ja/elementary-divisor-ja.rd +45 -0
- data/doc-ja/euclidian-ring-ja.html +78 -0
- data/doc-ja/euclidian-ring-ja.rd +69 -0
- data/doc-ja/finite-group-ja.html +285 -0
- data/doc-ja/finite-group-ja.rd +276 -0
- data/doc-ja/finite-map-ja.html +224 -0
- data/doc-ja/finite-map-ja.rd +227 -0
- data/doc-ja/finite-set-ja.html +393 -0
- data/doc-ja/finite-set-ja.rd +408 -0
- data/doc-ja/index-ja.html +113 -0
- data/doc-ja/index-ja.rd +112 -0
- data/doc-ja/jordan-form-ja.html +106 -0
- data/doc-ja/jordan-form-ja.rd +99 -0
- data/doc-ja/localized-ring-ja.html +121 -0
- data/doc-ja/localized-ring-ja.rd +131 -0
- data/doc-ja/m-polynomial-ja.html +542 -0
- data/doc-ja/m-polynomial-ja.rd +596 -0
- data/doc-ja/matrix-algebra-ja.html +686 -0
- data/doc-ja/matrix-algebra-ja.rd +727 -0
- data/doc-ja/matrix-algebra-triplet-ja.html +124 -0
- data/doc-ja/matrix-algebra-triplet-ja.rd +129 -0
- data/doc-ja/permutation-group-ja.html +159 -0
- data/doc-ja/permutation-group-ja.rd +151 -0
- data/doc-ja/polynomial-converter-ja.html +64 -0
- data/doc-ja/polynomial-converter-ja.rd +54 -0
- data/doc-ja/polynomial-ja.html +446 -0
- data/doc-ja/polynomial-ja.rd +473 -0
- data/doc-ja/residue-class-ring-ja.html +112 -0
- data/doc-ja/residue-class-ring-ja.rd +113 -0
- data/doc-ja/sample-algebraic-equation01.rb.v.rd +11 -0
- data/doc-ja/sample-algebraic-equation02.rb.v.rd +11 -0
- data/doc-ja/sample-algebraic-root01.rb.v.rd +20 -0
- data/doc-ja/sample-algebraicfield01.rb.v.rd +26 -0
- data/doc-ja/sample-algebraicfield02.rb.v.rd +15 -0
- data/doc-ja/sample-cayleyhamilton01.rb.v.rd +14 -0
- data/doc-ja/sample-diagonalization01.rb.v.rd +48 -0
- data/doc-ja/sample-divmod01.rb.v.rd +17 -0
- data/doc-ja/sample-elementary-divisor01.rb.v.rd +48 -0
- data/doc-ja/sample-factorize01.rb.v.rd +11 -0
- data/doc-ja/sample-factorize02.rb.v.rd +13 -0
- data/doc-ja/sample-factorize03.rb.v.rd +14 -0
- data/doc-ja/sample-factorize04.rb.v.rd +14 -0
- data/doc-ja/sample-factorize05.rb.v.rd +53 -0
- data/doc-ja/sample-galois-group01.rb.v.rd +27 -0
- data/doc-ja/sample-gaussian-elimination01.rb.v.rd +19 -0
- data/doc-ja/sample-geometry01.rb.v.rd +33 -0
- data/doc-ja/sample-geometry02.rb.v.rd +34 -0
- data/doc-ja/sample-geometry03.rb.v.rd +45 -0
- data/doc-ja/sample-geometry04.rb.v.rd +33 -0
- data/doc-ja/sample-geometry07.rb.v.rd +62 -0
- data/doc-ja/sample-groebner01.rb.v.rd +13 -0
- data/doc-ja/sample-groebner02.rb.v.rd +18 -0
- data/doc-ja/sample-groebner03.rb.v.rd +19 -0
- data/doc-ja/sample-group01.rb.v.rd +21 -0
- data/doc-ja/sample-jordan-form01.rb.v.rd +56 -0
- data/doc-ja/sample-jordanform01.rb.v.rd +55 -0
- data/doc-ja/sample-lagrange-multiplier01.rb.v.rd +35 -0
- data/doc-ja/sample-m-factorize01.rb.v.rd +15 -0
- data/doc-ja/sample-m-factorize02.rb.v.rd +12 -0
- data/doc-ja/sample-m-polynomial01.rb.v.rd +10 -0
- data/doc-ja/sample-map01.rb.v.rd +9 -0
- data/doc-ja/sample-polynomial01.rb.v.rd +9 -0
- data/doc-ja/sample-polynomial02.rb.v.rd +11 -0
- data/doc-ja/sample-primefield01.rb.v.rd +13 -0
- data/doc-ja/sample-quotientfield01.rb.v.rd +11 -0
- data/doc-ja/sample-quotientfield02.rb.v.rd +18 -0
- data/doc-ja/sample-quotientfield03.rb.v.rd +16 -0
- data/doc-ja/sample-quotientfield04.rb.v.rd +16 -0
- data/doc-ja/sample-set01.rb.v.rd +18 -0
- data/doc-ja/sample-splitting-field01.rb.v.rd +19 -0
- data/doc-ja/samples-ja.html +885 -0
- data/doc-ja/samples-ja.rd +221 -0
- data/doc-ja/style.css +85 -0
- data/doc-ja/todo.html +20 -0
- data/doc-ja/todo.rd +9 -0
- data/lib/algebra.rb +36 -0
- data/lib/algebra/algebraic-equation.rb +56 -0
- data/lib/algebra/algebraic-extension-field.rb +135 -0
- data/lib/algebra/algebraic-parser.rb +160 -0
- data/lib/algebra/algebraic-system.rb +224 -0
- data/lib/algebra/annihilate.rb +52 -0
- data/lib/algebra/array-supplement.rb +53 -0
- data/lib/algebra/auto-require.rb +84 -0
- data/lib/algebra/chinese-rem-th.rb +135 -0
- data/lib/algebra/combinatorial.rb +145 -0
- data/lib/algebra/elementary-divisor.rb +193 -0
- data/lib/algebra/euclidian-ring.rb +161 -0
- data/lib/algebra/factors.rb +305 -0
- data/lib/algebra/finite-group.rb +374 -0
- data/lib/algebra/finite-map.rb +201 -0
- data/lib/algebra/finite-set.rb +456 -0
- data/lib/algebra/galois-group.rb +129 -0
- data/lib/algebra/gaussian-elimination.rb +385 -0
- data/lib/algebra/groebner-basis-coeff.rb +228 -0
- data/lib/algebra/groebner-basis.rb +197 -0
- data/lib/algebra/import-module-single-thread.rb +86 -0
- data/lib/algebra/import-module.rb +491 -0
- data/lib/algebra/jordan-form.rb +114 -0
- data/lib/algebra/linear-algebra.rb +143 -0
- data/lib/algebra/localized-ring.rb +294 -0
- data/lib/algebra/m-index.rb +282 -0
- data/lib/algebra/m-polynomial-factor-int.rb +186 -0
- data/lib/algebra/m-polynomial-factor-zp.rb +114 -0
- data/lib/algebra/m-polynomial-factor.rb +315 -0
- data/lib/algebra/m-polynomial-gcd.rb +40 -0
- data/lib/algebra/m-polynomial.rb +875 -0
- data/lib/algebra/matrix-algebra-triplet.rb +292 -0
- data/lib/algebra/matrix-algebra.rb +929 -0
- data/lib/algebra/numeric-supplement.rb +123 -0
- data/lib/algebra/permutation-group.rb +257 -0
- data/lib/algebra/polynomial-converter.rb +193 -0
- data/lib/algebra/polynomial-factor-alg.rb +148 -0
- data/lib/algebra/polynomial-factor-int.rb +252 -0
- data/lib/algebra/polynomial-factor-zp.rb +165 -0
- data/lib/algebra/polynomial-factor.rb +140 -0
- data/lib/algebra/polynomial.rb +592 -0
- data/lib/algebra/powers.rb +31 -0
- data/lib/algebra/prime-gen.rb +32 -0
- data/lib/algebra/rational.rb +81 -0
- data/lib/algebra/residue-class-ring.rb +219 -0
- data/lib/algebra/sets-system.rb +43 -0
- data/lib/algebra/splitting-field.rb +103 -0
- data/lib/algebra/version.rb +3 -0
- data/sample/Makefile +10 -0
- data/sample/do-testscripts.rb +100 -0
- data/sample/sample-algebraic-equation01.rb +6 -0
- data/sample/sample-algebraic-equation02.rb +6 -0
- data/sample/sample-algebraic-root01.rb +15 -0
- data/sample/sample-algebraicfield01.rb +21 -0
- data/sample/sample-algebraicfield02.rb +10 -0
- data/sample/sample-cayleyhamilton01.rb +9 -0
- data/sample/sample-diagonalization01.rb +43 -0
- data/sample/sample-divmod01.rb +12 -0
- data/sample/sample-elementary-divisor01.rb +43 -0
- data/sample/sample-factorize01.rb +6 -0
- data/sample/sample-factorize02.rb +8 -0
- data/sample/sample-factorize03.rb +9 -0
- data/sample/sample-factorize04.rb +9 -0
- data/sample/sample-factorize05.rb +48 -0
- data/sample/sample-galois-group01.rb +22 -0
- data/sample/sample-gaussian-elimination01.rb +14 -0
- data/sample/sample-geometry01.rb +28 -0
- data/sample/sample-geometry02.rb +29 -0
- data/sample/sample-geometry03.rb +40 -0
- data/sample/sample-geometry04.rb +28 -0
- data/sample/sample-geometry07.rb +58 -0
- data/sample/sample-groebner01.rb +8 -0
- data/sample/sample-groebner02.rb +13 -0
- data/sample/sample-groebner03.rb +14 -0
- data/sample/sample-group01.rb +16 -0
- data/sample/sample-jordan-form01.rb +51 -0
- data/sample/sample-lagrange-multiplier01.rb +30 -0
- data/sample/sample-m-factorize01.rb +10 -0
- data/sample/sample-m-factorize02.rb +7 -0
- data/sample/sample-m-polynomial01.rb +5 -0
- data/sample/sample-map01.rb +4 -0
- data/sample/sample-polynomial01.rb +4 -0
- data/sample/sample-polynomial02.rb +6 -0
- data/sample/sample-primefield01.rb +8 -0
- data/sample/sample-quotientfield01.rb +6 -0
- data/sample/sample-quotientfield02.rb +13 -0
- data/sample/sample-quotientfield03.rb +11 -0
- data/sample/sample-quotientfield04.rb +11 -0
- data/sample/sample-set01.rb +13 -0
- data/sample/sample-splitting-field01.rb +14 -0
- data/sample/test-00-cayley-hamilton.rb +76 -0
- data/sample/test-00-groebner-basis.rb +274 -0
- data/sample/test-00-polynomial-factor-alg.rb +89 -0
- data/sample/test-00.list +4 -0
- data/sample/time-trial.rb +65 -0
- metadata +373 -0
data/doc-ja/README-ja.rd
ADDED
@@ -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
|
data/doc-ja/README.html
ADDED
File without changes
|
data/doc-ja/README.rd
ADDED
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
|
+
#=> 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) ) #=> -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 #=> [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 #=> (Polynomial/(Polynomial/(Polynomial/Rational)))
|
88
|
+
p f0.type == K3.env_ring #=> true
|
89
|
+
|
90
|
+
p f #=> 3x3^2 + 2x2^2 + x1^2
|
91
|
+
p f0.evaluate(x3.abs_lift, x2.abs_lift, x1.abs_lift)
|
92
|
+
#=> 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] ) #=> 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
|