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.
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.
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).
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).
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).
Return the numerator or denominator of f with respect to the ring of integers R of the rational function field F containing f. The ring R may be a polynomial ring or a valuation ring.
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.
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.
Given a multivariate rational function f in F return the result of evaluating the v-th variable at the v-th element of the sequence S which should be a sequence of elements coercible into the coefficient ring of the integers of F.
The following function provides an inverse operation to composing rational functions.
All: BoolElt Default: true
Given a rational function f defined over a field k, return all complete decompositions [f1, ..., fr] of f such that f(t) = fr( ... (f1(t)). These decompositions are found, as explained in [ACvHS17], by computing the subfield lattice of k(t)/k(f), which in turn, is found by first computing the principal subfields of this extension and then computing all intersections of principal subfields. These intersections are computed by joining partitions.The routines in this package are those developed by Peter Fleischmann and Jonas Szutkoski.
> k:=GF(3); > F<t>:=FunctionField(k); > f:=(t^10 + 2*t^8 + 2*t^4 + t^2)/(t^12 + 2*t^6 + 1); > Decomposition(f); [ [ t^2, t/(t^2 + 1), (2*t^3 + t^2 + 2*t)/(t^3 + 2) ], [ t/(t^2 + 2), t^2, t/(t^3 + 1) ], [ t/(t^2 + 1), t^3 + 2*t, t^2 ], [ t/(t^2 + 1), t^2 + t, t^3 + t^2 ], [ t/(t^2 + 1), t^2 + 2*t, t^3 + t^2 ], [ t/(t^2 + 1), t^2, t^3 + t^2 + t ] ] > Decomposition(f : All := false); [ [ t^2, t/(t^2 + 1), (2*t^3 + t^2 + 2*t)/(t^3 + 2) ] ] > Evaluate($1[1][3], Evaluate($1[1][2], $1[1][1])) eq f; true
Given a univariate rational function f, return the first derivative of f with respect to its variable.
Given a univariate rational function f, return the k-th derivative of f with respect to its variable. k must be non-negative.
Given a multivariate rational function f, return the first derivative of f with respect to variable number v.
Given a multivariate rational function f, return the k-th derivative of f with respect to variable number v. k must be non-negative.
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.
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.
> 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; trueNote 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; trueFinally, 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