Module: Algebra
- Defined in:
- lib/algebra/factors.rb,
lib/algebra.rb,
lib/algebra/powers.rb,
lib/algebra/m-index.rb,
lib/algebra/version.rb,
lib/algebra/annihilate.rb,
lib/algebra/finite-map.rb,
lib/algebra/finite-set.rb,
lib/algebra/polynomial.rb,
lib/algebra/jordan-form.rb,
lib/algebra/finite-group.rb,
lib/algebra/galois-group.rb,
lib/algebra/m-polynomial.rb,
lib/algebra/chinese-rem-th.rb,
lib/algebra/euclidian-ring.rb,
lib/algebra/groebner-basis.rb,
lib/algebra/linear-algebra.rb,
lib/algebra/localized-ring.rb,
lib/algebra/matrix-algebra.rb,
lib/algebra/splitting-field.rb,
lib/algebra/algebraic-parser.rb,
lib/algebra/algebraic-system.rb,
lib/algebra/m-polynomial-gcd.rb,
lib/algebra/permutation-group.rb,
lib/algebra/polynomial-factor.rb,
lib/algebra/algebraic-equation.rb,
lib/algebra/elementary-divisor.rb,
lib/algebra/residue-class-ring.rb,
lib/algebra/m-polynomial-factor.rb,
lib/algebra/gaussian-elimination.rb,
lib/algebra/groebner-basis-coeff.rb,
lib/algebra/polynomial-converter.rb,
lib/algebra/polynomial-factor-zp.rb,
lib/algebra/polynomial-factor-alg.rb,
lib/algebra/polynomial-factor-int.rb,
lib/algebra/m-polynomial-factor-zp.rb,
lib/algebra/matrix-algebra-triplet.rb,
lib/algebra/m-polynomial-factor-int.rb,
lib/algebra/algebraic-extension-field.rb
Overview
require “algebra/combinatorial”
Defined Under Namespace
Modules: AlgebraBase, AlgebraCreator, AlgebraicEquation, ChineseRemainderTheorem, ElementaryDivisor, EuclidianRing, Galois, GaussianElimination, Groebner, InnerProductSpace, MPolynomialConvertTo, MPolynomialConverter, MPolynomialFactorization, OperatorDomain, Orthogonalization, PolynomialConvertTo, PolynomialConverter, PolynomialFactorization, Powers, SplittingField
Classes: AlgebraicExtensionField, AlgebraicParser, Covector, Factors, Group, JordanForm, LocalizedRing, MIndex, MPolynomial, Map, MatrixAlgebra, MatrixAlgebraQuint, MatrixAlgebraTriplet, Permutation, PermutationGroup, Polynomial, QuotientGroup, ResidueClassRing, Scalar, Set, SquareMatrix, Vector
Constant Summary
collapse
- VERSION =
"0.2.3"
Class Method Summary
collapse
-
.AlgebraicExtensionField(field, var = 'x', &b) ⇒ Object
-
.Covector(ground, size) ⇒ Object
-
.LocalizedRing(ring) ⇒ Object
-
.MatrixAlgebra(ground, rsize, csize) ⇒ Object
-
.MinimalDecompositionField(f, *a) ⇒ Object
for backward compatibility.
-
.MPolynomial(ground, *vars) ⇒ Object
-
.MRationalFunctionField(field, *objs) ⇒ Object
-
.Polynomial(ground = Integer, *variables) ⇒ Object
-
.QuadraticExtensionField(field, var_obj = nil) ⇒ Object
experimental ###################.
-
.RationalFunctionField(field, obj) ⇒ Object
-
.ResidueClassRing(klass, mod) ⇒ Object
-
.Root(field, a = nil, deg = 2, cs = nil, &b) ⇒ Object
-
.Sqrt(field, a, _name = nil) ⇒ Object
-
.SquareMatrix(ground, size) ⇒ Object
-
.Vector(ground, size) ⇒ Object
Class Method Details
.AlgebraicExtensionField(field, var = 'x', &b) ⇒ Object
12
13
14
|
# File 'lib/algebra/algebraic-extension-field.rb', line 12
def AlgebraicExtensionField(field, var = 'x', &b)
AlgebraicExtensionField.create(field, var, &b)
end
|
.Covector(ground, size) ⇒ Object
41
42
43
|
# File 'lib/algebra/matrix-algebra.rb', line 41
def Covector(ground, size)
Covector.create(ground, size)
end
|
.LocalizedRing(ring) ⇒ Object
11
12
13
|
# File 'lib/algebra/localized-ring.rb', line 11
def LocalizedRing(ring)
LocalizedRing.create(ring)
end
|
.MatrixAlgebra(ground, rsize, csize) ⇒ Object
29
30
31
|
# File 'lib/algebra/matrix-algebra.rb', line 29
def MatrixAlgebra(ground, rsize, csize)
MatrixAlgebra.create(ground, rsize, csize)
end
|
.MinimalDecompositionField(f, *a) ⇒ Object
for backward compatibility
99
100
101
|
# File 'lib/algebra/splitting-field.rb', line 99
def MinimalDecompositionField(f, *a)
f.decompose(*a)
end
|
.MPolynomial(ground, *vars) ⇒ Object
12
13
14
|
# File 'lib/algebra/m-polynomial.rb', line 12
def MPolynomial(ground, *vars)
Algebra::MPolynomial.create(ground, *vars)
end
|
.MRationalFunctionField(field, *objs) ⇒ Object
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/algebra/localized-ring.rb', line 28
def MRationalFunctionField(field, *objs)
require 'algebra/m-polynomial'
k = LocalizedRing(MPolynomial(field, *objs))
def k.vars(*vs)
ground.vars(*vs).map { |v| self[v] }
end
def k.to_ary
[self, *vars]
end
k.reducible = false
k
end
|
.Polynomial(ground = Integer, *variables) ⇒ Object
11
12
13
|
# File 'lib/algebra/polynomial.rb', line 11
def Polynomial(ground = Integer, *variables)
Polynomial.create(ground, *variables)
end
|
.QuadraticExtensionField(field, var_obj = nil) ⇒ Object
experimental ###################
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
# File 'lib/algebra/algebraic-extension-field.rb', line 66
def QuadraticExtensionField(field, var_obj = nil)
poly_ring = Algebra.Polynomial(field, 'x')
modulus = yield(poly_ring.var)
unless modulus.deg == 2
raise 'give deg 2 polynomial to QuadraticicExtensionField.'
end
fact = modulus.factorize
if o = fact.find { |x| x[0].deg == 1 }
b = o[0][0]
a = o[0][1]
c = b / a
return [field, - c, c]
end
c = modulus[0]
b = modulus[1]
a = modulus[2]
a2 = a * 2
b0 = a2.zero? ? b : (b / a2)
c1 = c / a - b0**2
cs = (-c1).to_s
r = 'r'
var_obj ||= r + (/^\d+$/ !~ cs ? '(' + cs + ')' : cs)
klass, v = AlgebraicExtensionField(field, var_obj) { |x| x**2 + c1 }
r1 = v - b0
r2 = - v - b0
[klass, r1, r2]
end
|
.RationalFunctionField(field, obj) ⇒ Object
15
16
17
18
19
20
21
22
23
24
25
26
|
# File 'lib/algebra/localized-ring.rb', line 15
def RationalFunctionField(field, obj)
require 'algebra/polynomial'
k = LocalizedRing(Polynomial(field, obj))
def k.var
self[ground.var]
end
def k.to_ary
[self, var]
end
k
end
|
.ResidueClassRing(klass, mod) ⇒ Object
12
13
14
|
# File 'lib/algebra/residue-class-ring.rb', line 12
def ResidueClassRing(klass, mod)
ResidueClassRing.create(klass, mod)
end
|
.Root(field, a = nil, deg = 2, cs = nil, &b) ⇒ Object
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
|
# File 'lib/algebra/algebraic-extension-field.rb', line 105
def Root(field, a = nil, deg = 2, cs = nil, &b)
r, x = Polynomial(field)
if b
f = yield(x)
as = a ? a.to_s : f.to_s
else
f = x**deg - a
as = a.to_s
end
r = deg == 2 ? 'r' : "r[#{deg}]"
cs ||= r + (/^\d+$/ !~ as ? '(' + as + ')' : as)
k = f.splitting_field(nil, cs)
[k.field, *k.roots]
end
|
.Sqrt(field, a, _name = nil) ⇒ Object
99
100
101
|
# File 'lib/algebra/algebraic-extension-field.rb', line 99
def Sqrt(field, a, _name = nil)
QuadraticExtensionField(field, nil) { |x| x**2 - a }
end
|
.SquareMatrix(ground, size) ⇒ Object
33
34
35
|
# File 'lib/algebra/matrix-algebra.rb', line 33
def SquareMatrix(ground, size)
SquareMatrix.create(ground, size)
end
|
.Vector(ground, size) ⇒ Object
37
38
39
|
# File 'lib/algebra/matrix-algebra.rb', line 37
def Vector(ground, size)
Vector.create(ground, size)
end
|