| Home | Trees | Indices | Help |
|---|
|
|
object --+
|
structure.sage_object.SageObject --+
|
AlgebraicGenerator
An AlgebraicGenerator represents both an algebraic number alpha and the number field QQ[alpha]. There is a single AlgebraicGenerator representing QQ (with alpha==0). The AlgebraicGenerator class is private, and should not be used directly.
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
|||
|
Inherited from Inherited from |
|||
|
|||
|
Inherited from |
|||
|
|||
Construct an AlgebraicGenerator object. sage: from sage.rings.qqbar import ANRoot, AlgebraicGenerator, qq_generator sage: _.<y> = QQ['y'] sage: x = polygen(QQbar) sage: nf = NumberField(y^2 - y - 1, name='a', check=False) sage: root = ANRoot(x^2 - x - 1, RIF(1, 2)) sage: gen = AlgebraicGenerator(nf, root) sage: gen Number Field in a with defining polynomial y^2 - y - 1 with a in [1.6180339887498946 .. 1.6180339887498950] sage: gen.field() Number Field in a with defining polynomial y^2 - y - 1 sage: gen.is_trivial() False sage: gen.union(qq_generator) is gen True sage: qq_generator.union(gen) is gen True sage: nf = NumberField(y^2 + 1, name='a', check=False) sage: root = ANRoot(x^2 + 1, CIF(0, 1)) sage: x = AlgebraicGenerator(nf, root); x Number Field in a with defining polynomial y^2 + 1 with a in [1.0000000000000000 .. 1.0000000000000000]*I
|
Add customized pickling support.
EXAMPLES:
sage: t = QQbar(sqrt(2)) + QQbar(sqrt(3))
sage: t.exactify()
sage: type(t._descr._generator)
<class 'sage.rings.qqbar.AlgebraicGenerator'>
sage: loads(dumps(t)) == t
True
|
hash(x)
|
Returns true iff this is the trivial generator (alpha == 1), which
does not actually extend the rationals.
EXAMPLES:
sage: from sage.rings.qqbar import qq_generator
sage: qq_generator.is_trivial()
True
|
Given generators alpha and beta, alpha.union(beta) gives a generator
for the number field QQ[alpha][beta].
EXAMPLES:
sage: from sage.rings.qqbar import ANRoot, AlgebraicGenerator, qq_generator
sage: _.<y> = QQ['y']
sage: x = polygen(QQbar)
sage: nf2 = NumberField(y^2 - 2, name='a', check=False)
sage: root2 = ANRoot(x^2 - 2, RIF(1, 2))
sage: gen2 = AlgebraicGenerator(nf2, root2)
sage: gen2
Number Field in a with defining polynomial y^2 - 2 with a in [1.4142135623730949 .. 1.4142135623730952]
sage: nf3 = NumberField(y^2 - 3, name='a', check=False)
sage: root3 = ANRoot(x^2 - 3, RIF(1, 2))
sage: gen3 = AlgebraicGenerator(nf3, root3)
sage: gen3
Number Field in a with defining polynomial y^2 - 3 with a in [1.7320508075688771 .. 1.7320508075688775]
sage: gen2.union(qq_generator) is gen2
True
sage: qq_generator.union(gen3) is gen3
True
sage: gen2.union(gen3)
Number Field in a with defining polynomial y^4 - 4*y^2 + 1 with a in [0.51763809020504147 .. 0.51763809020504159]
|
Given a generator gen and another generator super, where super
is the result of a tree of union() operations where one of the
leaves is gen, gen.super_poly(super) returns a polynomial
expressing the value of gen in terms of the value of super.
(Except that if gen is qq_generator, super_poly() always
returns None.)
EXAMPLES:
sage: from sage.rings.qqbar import AlgebraicGenerator, ANRoot, qq_generator
sage: _.<y> = QQ['y']
sage: x = polygen(QQbar)
sage: nf2 = NumberField(y^2 - 2, name='a', check=False)
sage: root2 = ANRoot(x^2 - 2, RIF(1, 2))
sage: gen2 = AlgebraicGenerator(nf2, root2)
sage: gen2
Number Field in a with defining polynomial y^2 - 2 with a in [1.4142135623730949 .. 1.4142135623730952]
sage: nf3 = NumberField(y^2 - 3, name='a', check=False)
sage: root3 = ANRoot(x^2 - 3, RIF(1, 2))
sage: gen3 = AlgebraicGenerator(nf3, root3)
sage: gen3
Number Field in a with defining polynomial y^2 - 3 with a in [1.7320508075688771 .. 1.7320508075688775]
sage: gen2_3 = gen2.union(gen3)
sage: gen2_3
Number Field in a with defining polynomial y^4 - 4*y^2 + 1 with a in [0.51763809020504147 .. 0.51763809020504159]
sage: qq_generator.super_poly(gen2) is None
True
sage: gen2.super_poly(gen2_3)
-a^3 + 3*a
sage: gen3.super_poly(gen2_3)
-a^2 + 2
|
Takes an algebraic number which is represented as either a rational
or a number field element, and which is in a subfield of the
field generated by this generator. Lifts the number into the
field of this generator, and returns either a Rational or a
NumberFieldElement depending on whether this is the trivial generator.
EXAMPLES:
sage: from sage.rings.qqbar import ANRoot, AlgebraicGenerator, ANExtensionElement, ANRational
sage: _.<y> = QQ['y']
sage: x = polygen(QQbar)
sage: nf2 = NumberField(y^2 - 2, name='a', check=False)
sage: root2 = ANRoot(x^2 - 2, RIF(1, 2))
sage: gen2 = AlgebraicGenerator(nf2, root2)
sage: gen2
Number Field in a with defining polynomial y^2 - 2 with a in [1.4142135623730949 .. 1.4142135623730952]
sage: sqrt2 = ANExtensionElement(gen2, nf2.gen())
sage: nf3 = NumberField(y^2 - 3, name='a', check=False)
sage: root3 = ANRoot(x^2 - 3, RIF(1, 2))
sage: gen3 = AlgebraicGenerator(nf3, root3)
sage: gen3
Number Field in a with defining polynomial y^2 - 3 with a in [1.7320508075688771 .. 1.7320508075688775]
sage: sqrt3 = ANExtensionElement(gen3, nf3.gen())
sage: gen2_3 = gen2.union(gen3)
sage: gen2_3
Number Field in a with defining polynomial y^4 - 4*y^2 + 1 with a in [0.51763809020504147 .. 0.51763809020504159]
sage: gen2_3(sqrt2)
-a^3 + 3*a
sage: gen2_3(ANRational(1/7))
1/7
sage: gen2_3(sqrt3)
-a^2 + 2
|
| Home | Trees | Indices | Help |
|---|
| Generated by Epydoc 3.0beta1 on Thu Jul 17 04:23:58 2008 | http://epydoc.sourceforge.net |