[Next][Prev] [Right] [Left] [Up] [Index] [Root]

Element Operations

Subsections

Arithmetic

+ a : FldFunRatElt -> FldFunRatElt
- a : FldFunRatElt -> FldFunRatElt

a + b : FldFunRatElt, FldFunRatElt -> FldFunRatElt
a - b : FldFunRatElt, FldFunRatElt -> FldFunRatElt
a * b : FldFunRatElt, FldFunRatElt -> FldFunRatElt
a / b : FldFunRatElt, FldFunRatElt -> FldFunRatElt
a ^ k : FldFunRatElt, RngIntElt -> FldFunRatElt

Equality and Membership

a eq b : FldFunRatElt, FldFunRatElt -> BoolElt
a ne b : FldFunRatElt, FldFunRatElt -> BoolElt

a in F : FldFunRatElt, FldFunRat -> BoolElt
a notin F : FldFunRatElt, FldFunRat -> BoolElt

Numerator, Denominator and Degree

Numerator(f) : FldFunRatElt -> RngElt
Given a rational function f∈K, the field of fractions of R, return the numerator P of f=P/Q as an element of the polynomial ring R.
Denominator(f) : FldFunRatElt -> RngElt
Given a rational function f∈K, the field of fractions of R, return the denominator Q of f=P/Q as an element of the polynomial ring R.
Degree(f) : FldFunRatElt -> RngIntElt
Given a rational function f in a univariate function field, return the degree of f as an integer (the maximum of the degree of the numerator of f and the degree of the denominator of f).
TotalDegree(f) : FldFunRatElt -> RngIntElt
Given a rational function f in a multivariate function field, return the total degree of f as an integer (the total degree of the numerator of f minus the total degree of the denominator of f).
WeightedDegree(f) : FldFunRatElt -> RngIntElt
Given a rational function f in a multivariate function field, return the weighted degree of f as an integer (the weighted degree of the numerator of f minus the weighted degree of the denominator of f).

Predicates on Ring Elements

IsZero(a) : FldFunRatElt -> BoolElt
IsOne(a) : FldFunRatElt -> BoolElt
IsMinusOne(a) : FldFunRatElt -> BoolElt

IsNilpotent(a) : FldFunRatElt -> BoolElt
IsIdempotent(a) : FldFunRatElt -> BoolElt

IsUnit(a) : FldFunRatElt -> BoolElt
IsZeroDivisor(a) : FldFunRatElt -> BoolElt
IsRegular(a) : FldFunRatElt -> BoolElt

Evaluation

Evaluate(f, r) : FldFunRatUElt, RngElt -> FldFunRatUElt
Given a univariate rational function f in F, return the rational function in F obtained by evaluating the indeterminate in r, which must be from (or coercible into) the coefficient ring of the integers of F.
Evaluate(f, v, r) : FldFunRatMElt, RngIntElt, RngElt -> FldFunRatMElt
Given a multivariate rational function f in F, return the rational function in F obtained by evaluating the v-th variable in r, which must be from (or coercible into) the coefficient ring of the integers of F.

Derivative

Derivative(f) : FldFunRatUElt -> FldFunRatUElt
Given a univariate rational function f, return the first derivative of f with respect to its variable.
Derivative(f, k) : FldFunRatUElt, RngIntElt -> FldFunRatUElt
Given a univariate rational function f, return the k-th derivative of f with respect to its variable. k must be non-negative.
Derivative(f, v) : FldFunRatMElt, RngIntElt -> FldFunRatMElt
Given a multivariate rational function f, return the first derivative of f with respect to variable number v.
Derivative(f, v, k) : FldFunRatMElt, RngIntElt, RngIntElt -> FldFunRatMElt
Given a multivariate rational function f, return the k-th derivative of f with respect to variable number v. k must be non-negative.

Partial Fraction Decomposition

PartialFractionDecomposition(f) : FldFunRatUElt -> [ <RngUPolElt, RngIntElt, RngUPolElt> ]
Given a univariate rational function f in F=K(x), return the (unique) complete partial fraction decomposition of f. The decomposition is returned as a (sorted) sequence Q consisting of triples, each of which is of the form <d, k, n> where d is the denominator, k is the multiplicity of the denominator, and n is the corresponding numerator, and also d is irreducible and the degree of n is strictly less than the degree of d. Thus f equals the sum of the nt/(dt)kt, where t ranges over the triples contained in Q. If f is improper (the degree of its numerator is greater than or equal to the degree of its denominator), then the first triple of Q will be of the form <1, 1, q> where q is the quotient of the numerator of f by the denominator of f.
SquarefreePartialFractionDecomposition(f) : FldFunRatUElt -> [ <RngUPolElt, RngIntElt, RngUPolElt> ]
Given a univariate rational function f in F=K(x), return the (unique) complete squarefree partial fraction decomposition of f. The decomposition is returned as a (sorted) sequence Q consisting of triples, each of which is of the form <d, k, n> where d is the denominator, k is the multiplicity of the denominator, and n is the corresponding numerator, and also d is squarefree and the degree of n is strictly less than the degree of d. Thus f equals the sum of the nt/(dt)kt, where t ranges over the triples contained in Q. If f is improper (the degree of its numerator is greater than or equal to the degree of its denominator), then the first triple of Q will be of the form <1, 1, q> where q is the quotient of the numerator of f by the denominator of f.

Example FldFunRat_PartialFractionDecomposition (H41E3)

We compute the squarefree and complete (irreducible) partial fraction decompositions of a fraction in Q(t).

> F<t> := FunctionField(RationalField());
> P<x> := IntegerRing(F);
> f := ((t + 1)^8 - 1) / ((t^3 - 1)*(t + 1)^2*(t^2 - 4)^2);
> SD := SquarefreePartialFractionDecomposition(f);
> SD;
[
    <x^4 + 2*x^3 - x - 2, 1, 467/196*x^3 + 1371/196*x^2 + 
        1391/196*x + 234/49>,
    <x^2 - x - 2, 1, -271/196*x + 505/98>,
    <x^2 - x - 2, 2, 271/14*x + 139/7>
]
> // Check appropriate sum equals f:
> &+[F!t[3] / F!t[1]^t[2]: t in SD] eq f;  
> D := PartialFractionDecomposition(f);
> D;
[
    <x - 2, 1, -3683/2646>,
    <x - 2, 2, 410/63>,
    <x - 1, 1, 85/36>,
    <x + 1, 1, 1/108>,
    <x + 1, 2, 1/18>,
    <x + 2, 1, 1/18>,
    <x^2 + x + 1, 1, -5/147*x - 8/147>
]
> // Check appropriate sum equals f:
> &+[F!t[3] / F!t[1]^t[2]: t in D] eq f;  
true
Note that doing the same operation in the function field Z(t) must modify the numerators and denominators to be integral but the result is otherwise the same.

> F<t> := FunctionField(IntegerRing());
> P<x> := IntegerRing(F);
> f := ((t + 1)^8 - 1) / ((t^3 - 1)*(t + 1)^2*(t^2 - 4)^2);
> D := PartialFractionDecomposition(f);
> D;
[
    <2646*x - 5292, 1, -3683>,
    <63*x - 126, 2, 25830>,
    <36*x - 36, 1, 85>,
    <108*x + 108, 1, 1>,
    <18*x + 18, 2, 18>,
    <18*x + 36, 1, 1>,
    <147*x^2 + 147*x + 147, 1, -5*x - 8>
]
> // Check appropriate sum equals f:
> &+[F!t[3] / F!t[1]^t[2]: t in D] eq f;  
true
Finally, we compute the partial fraction decomposition of a fraction in a function field whose coefficient ring is a multivariate function field.

> R<a, b> := FunctionField(IntegerRing(), 2);
> F<t> := FunctionField(R);
> P<x> := IntegerRing(F);
> f := 1 / ((t^2 - a)^2*(t + b)^2*t^3);
> SD := SquarefreePartialFractionDecomposition(f);
> SD;
[
    <x^3 + b*x^2 - a*x - a*b, 1, (-3*a - 2*b^2)/(a^3*b^4)*x^2 + 
        (-a - 2*b^2)/(a^3*b^3)*x + (3*a + 3*b^2)/(a^2*b^4)>,
    <x^3 + b*x^2 - a*x - a*b, 2, (a + b^2)/(a^2*b^3)*x^2 + 
        1/a^2*x + (-a - b^2)/(a*b^3)>,
    <x, 1, (3*a + 2*b^2)/(a^3*b^4)>,
    <x, 2, -2/(a^2*b^3)>,
    <x, 3, 1/(a^2*b^2)>
]
> // Check appropriate sum equals f:
> &+[F!t[3] / F!t[1]^t[2]: t in SD] eq f;  
true
> D := PartialFractionDecomposition(f);
> D;
[
    <x, 1, (3*a + 2*b^2)/(a^3*b^4)>,
    <x, 2, -2/(a^2*b^3)>,
    <x, 3, 1/(a^2*b^2)>,
    <x + b, 1, (-3*a + 7*b^2)/(a^3*b^4 - 3*a^2*b^6 + 3*a*b^8 - 
        b^10)>,
    <x + b, 2, -1/(a^2*b^3 - 2*a*b^5 + b^7)>,
    <x^2 - a, 1, (-3*a^2 - 3*a*b^2 + 2*b^4)/(a^6 - 3*a^5*b^2 + 
        3*a^4*b^4 - a^3*b^6)*x + (6*a*b - 2*b^3)/(a^5 - 3*a^4*b^2
        + 3*a^3*b^4 - a^2*b^6)>,
    <x^2 - a, 2, (a + b^2)/(a^4 - 2*a^3*b^2 + a^2*b^4)*x - 
        2*b/(a^3 - 2*a^2*b^2 + a*b^4)>
]
> // Check appropriate sum equals f:
> &+[F!t[3] / F!t[1]^t[2]: t in D] eq f;  
true

 [Next][Prev] [Right] [Left] [Up] [Index] [Root]

Version: V2.19 of Wed Apr 24 15:09:57 EST 2013