Quotient fields#
- class sage.categories.quotient_fields.QuotientFields(s=None)#
Bases:
sage.categories.category_singleton.Category_singleton
The category of quotient fields over an integral domain
EXAMPLES:
sage: QuotientFields() Category of quotient fields sage: QuotientFields().super_categories() [Category of fields]
- class ElementMethods#
Bases:
object
- denominator()#
Constructor for abstract methods
EXAMPLES:
sage: def f(x): ....: "doc of f" ....: return 1 sage: x = abstract_method(f); x <abstract method f at ...> sage: x.__doc__ 'doc of f' sage: x.__name__ 'f' sage: x.__module__ '__main__'
- derivative(*args)#
The derivative of this rational function, with respect to variables supplied in args.
Multiple variables and iteration counts may be supplied; see documentation for the global derivative() function for more details.
See also
_derivative()
EXAMPLES:
sage: F.<x> = Frac(QQ['x']) sage: (1/x).derivative() -1/x^2
sage: (x+1/x).derivative(x, 2) 2/x^3
sage: F.<x,y> = Frac(QQ['x,y']) sage: (1/(x+y)).derivative(x,y) 2/(x^3 + 3*x^2*y + 3*x*y^2 + y^3)
- factor(*args, **kwds)#
Return the factorization of
self
over the base ring.INPUT:
*args
- Arbitrary arguments suitable over the base ring**kwds
- Arbitrary keyword arguments suitable over the base ring
OUTPUT:
Factorization of
self
over the base ring
EXAMPLES:
sage: K.<x> = QQ[] sage: f = (x^3+x)/(x-3) sage: f.factor() (x - 3)^-1 * x * (x^2 + 1)
Here is an example to show that trac ticket #7868 has been resolved:
sage: R.<x,y> = GF(2)[] sage: f = x*y/(x+y) sage: f.factor() (x + y)^-1 * y * x
- gcd(other)#
Greatest common divisor
Note
In a field, the greatest common divisor is not very informative, as it is only determined up to a unit. But in the fraction field of an integral domain that provides both gcd and lcm, it is possible to be a bit more specific and define the gcd uniquely up to a unit of the base ring (rather than in the fraction field).
AUTHOR:
Simon King (2011-02): See trac ticket #10771
EXAMPLES:
sage: R.<x> = QQ['x'] sage: p = (1+x)^3*(1+2*x^2)/(1-x^5) sage: q = (1+x)^2*(1+3*x^2)/(1-x^4) sage: factor(p) (-2) * (x - 1)^-1 * (x + 1)^3 * (x^2 + 1/2) * (x^4 + x^3 + x^2 + x + 1)^-1 sage: factor(q) (-3) * (x - 1)^-1 * (x + 1) * (x^2 + 1)^-1 * (x^2 + 1/3) sage: gcd(p,q) (x + 1)/(x^7 + x^5 - x^2 - 1) sage: factor(gcd(p,q)) (x - 1)^-1 * (x + 1) * (x^2 + 1)^-1 * (x^4 + x^3 + x^2 + x + 1)^-1 sage: factor(gcd(p,1+x)) (x - 1)^-1 * (x + 1) * (x^4 + x^3 + x^2 + x + 1)^-1 sage: factor(gcd(1+x,q)) (x - 1)^-1 * (x + 1) * (x^2 + 1)^-1
- lcm(other)#
Least common multiple
In a field, the least common multiple is not very informative, as it is only determined up to a unit. But in the fraction field of an integral domain that provides both gcd and lcm, it is reasonable to be a bit more specific and to define the least common multiple so that it restricts to the usual least common multiple in the base ring and is unique up to a unit of the base ring (rather than up to a unit of the fraction field).
The least common multiple is easily described in terms of the prime decomposition. A rational number can be written as a product of primes with integer (positive or negative) powers in a unique way. The least common multiple of two rational numbers \(x\) and \(y\) can then be defined by specifying that the exponent of every prime \(p\) in \(lcm(x,y)\) is the supremum of the exponents of \(p\) in \(x\), and the exponent of \(p\) in \(y\) (where the primes that does not appear in the decomposition of \(x\) or \(y\) are considered to have exponent zero).
AUTHOR:
Simon King (2011-02): See trac ticket #10771
EXAMPLES:
sage: lcm(2/3, 1/5) 2
Indeed \(2/3 = 2^1 3^{-1} 5^0\) and \(1/5 = 2^0 3^0 5^{-1}\), so \(lcm(2/3,1/5)= 2^1 3^0 5^0 = 2\).
sage: lcm(1/3, 1/5) 1 sage: lcm(1/3, 1/6) 1/3
Some more involved examples:
sage: R.<x> = QQ[] sage: p = (1+x)^3*(1+2*x^2)/(1-x^5) sage: q = (1+x)^2*(1+3*x^2)/(1-x^4) sage: factor(p) (-2) * (x - 1)^-1 * (x + 1)^3 * (x^2 + 1/2) * (x^4 + x^3 + x^2 + x + 1)^-1 sage: factor(q) (-3) * (x - 1)^-1 * (x + 1) * (x^2 + 1)^-1 * (x^2 + 1/3) sage: factor(lcm(p,q)) (x - 1)^-1 * (x + 1)^3 * (x^2 + 1/3) * (x^2 + 1/2) sage: factor(lcm(p,1+x)) (x + 1)^3 * (x^2 + 1/2) sage: factor(lcm(1+x,q)) (x + 1) * (x^2 + 1/3)
- numerator()#
Constructor for abstract methods
EXAMPLES:
sage: def f(x): ....: "doc of f" ....: return 1 sage: x = abstract_method(f); x <abstract method f at ...> sage: x.__doc__ 'doc of f' sage: x.__name__ 'f' sage: x.__module__ '__main__'
- partial_fraction_decomposition(decompose_powers=True)#
Decomposes fraction field element into a whole part and a list of fraction field elements over prime power denominators.
The sum will be equal to the original fraction.
INPUT:
- decompose_powers – whether to decompose prime power
denominators as opposed to having a single term for each irreducible factor of the denominator (default: True)
OUTPUT:
Partial fraction decomposition of self over the base ring.
AUTHORS:
Robert Bradshaw (2007-05-31)
EXAMPLES:
sage: S.<t> = QQ[] sage: q = 1/(t+1) + 2/(t+2) + 3/(t-3); q (6*t^2 + 4*t - 6)/(t^3 - 7*t - 6) sage: whole, parts = q.partial_fraction_decomposition(); parts [3/(t - 3), 1/(t + 1), 2/(t + 2)] sage: sum(parts) == q True sage: q = 1/(t^3+1) + 2/(t^2+2) + 3/(t-3)^5 sage: whole, parts = q.partial_fraction_decomposition(); parts [1/3/(t + 1), 3/(t^5 - 15*t^4 + 90*t^3 - 270*t^2 + 405*t - 243), (-1/3*t + 2/3)/(t^2 - t + 1), 2/(t^2 + 2)] sage: sum(parts) == q True sage: q = 2*t / (t + 3)^2 sage: q.partial_fraction_decomposition() (0, [2/(t + 3), -6/(t^2 + 6*t + 9)]) sage: for p in q.partial_fraction_decomposition()[1]: print(p.factor()) (2) * (t + 3)^-1 (-6) * (t + 3)^-2 sage: q.partial_fraction_decomposition(decompose_powers=False) (0, [2*t/(t^2 + 6*t + 9)])
We can decompose over a given algebraic extension:
sage: R.<x> = QQ[sqrt(2)][] sage: r = 1/(x^4+1) sage: r.partial_fraction_decomposition() (0, [(-1/4*sqrt2*x + 1/2)/(x^2 - sqrt2*x + 1), (1/4*sqrt2*x + 1/2)/(x^2 + sqrt2*x + 1)]) sage: R.<x> = QQ[I][] # of QQ[sqrt(-1)] sage: r = 1/(x^4+1) sage: r.partial_fraction_decomposition() (0, [(-1/2*I)/(x^2 - I), 1/2*I/(x^2 + I)])
We can also ask Sage to find the least extension where the denominator factors in linear terms:
sage: R.<x> = QQ[] sage: r = 1/(x^4+2) sage: N = r.denominator().splitting_field('a') sage: N Number Field in a with defining polynomial x^8 - 8*x^6 + 28*x^4 + 16*x^2 + 36 sage: R1.<x1>=N[] sage: r1 = 1/(x1^4+2) sage: r1.partial_fraction_decomposition() (0, [(-1/224*a^6 + 13/448*a^4 - 5/56*a^2 - 25/224)/(x1 - 1/28*a^6 + 13/56*a^4 - 5/7*a^2 - 25/28), (1/224*a^6 - 13/448*a^4 + 5/56*a^2 + 25/224)/(x1 + 1/28*a^6 - 13/56*a^4 + 5/7*a^2 + 25/28), (-5/1344*a^7 + 43/1344*a^5 - 85/672*a^3 - 31/672*a)/(x1 - 5/168*a^7 + 43/168*a^5 - 85/84*a^3 - 31/84*a), (5/1344*a^7 - 43/1344*a^5 + 85/672*a^3 + 31/672*a)/(x1 + 5/168*a^7 - 43/168*a^5 + 85/84*a^3 + 31/84*a)])
Or we may work directly over an algebraically closed field:
sage: R.<x> = QQbar[] sage: r = 1/(x^4+1) sage: r.partial_fraction_decomposition() (0, [(-0.1767766952966369? - 0.1767766952966369?*I)/(x - 0.7071067811865475? - 0.7071067811865475?*I), (-0.1767766952966369? + 0.1767766952966369?*I)/(x - 0.7071067811865475? + 0.7071067811865475?*I), (0.1767766952966369? - 0.1767766952966369?*I)/(x + 0.7071067811865475? - 0.7071067811865475?*I), (0.1767766952966369? + 0.1767766952966369?*I)/(x + 0.7071067811865475? + 0.7071067811865475?*I)])
We do the best we can over inexact fields:
sage: R.<x> = RealField(20)[] sage: q = 1/(x^2 + x + 2)^2 + 1/(x-1); q (x^4 + 2.0000*x^3 + 5.0000*x^2 + 5.0000*x + 3.0000)/(x^5 + x^4 + 3.0000*x^3 - x^2 - 4.0000) sage: whole, parts = q.partial_fraction_decomposition(); parts [1.0000/(x - 1.0000), 1.0000/(x^4 + 2.0000*x^3 + 5.0000*x^2 + 4.0000*x + 4.0000)] sage: sum(parts) (x^4 + 2.0000*x^3 + 5.0000*x^2 + 5.0000*x + 3.0000)/(x^5 + x^4 + 3.0000*x^3 - x^2 - 4.0000)
- xgcd(other)#
Return a triple
(g,s,t)
of elements of that field such thatg
is the greatest common divisor ofself
andother
andg = s*self + t*other
.Note
In a field, the greatest common divisor is not very informative, as it is only determined up to a unit. But in the fraction field of an integral domain that provides both xgcd and lcm, it is possible to be a bit more specific and define the gcd uniquely up to a unit of the base ring (rather than in the fraction field).
EXAMPLES:
sage: QQ(3).xgcd(QQ(2)) (1, 1, -1) sage: QQ(3).xgcd(QQ(1/2)) (1/2, 0, 1) sage: QQ(1/3).xgcd(QQ(2)) (1/3, 1, 0) sage: QQ(3/2).xgcd(QQ(5/2)) (1/2, 2, -1) sage: R.<x> = QQ['x'] sage: p = (1+x)^3*(1+2*x^2)/(1-x^5) sage: q = (1+x)^2*(1+3*x^2)/(1-x^4) sage: factor(p) (-2) * (x - 1)^-1 * (x + 1)^3 * (x^2 + 1/2) * (x^4 + x^3 + x^2 + x + 1)^-1 sage: factor(q) (-3) * (x - 1)^-1 * (x + 1) * (x^2 + 1)^-1 * (x^2 + 1/3) sage: g,s,t = xgcd(p,q) sage: g (x + 1)/(x^7 + x^5 - x^2 - 1) sage: g == s*p + t*q True
An example without a well defined gcd or xgcd on its base ring:
sage: K = QuadraticField(5) sage: O = K.maximal_order() sage: R = PolynomialRing(O, 'x') sage: F = R.fraction_field() sage: x = F.gen(0) sage: x.gcd(x+1) 1 sage: x.xgcd(x+1) (1, 1/x, 0) sage: zero = F.zero() sage: zero.gcd(x) 1 sage: zero.xgcd(x) (1, 0, 1/x) sage: zero.xgcd(zero) (0, 0, 0)
- class ParentMethods#
Bases:
object
- super_categories()#
EXAMPLES:
sage: QuotientFields().super_categories() [Category of fields]