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).
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 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