Abramov's algorithm

From testwiki
Jump to navigation Jump to search

In mathematics, particularly in computer algebra, Abramov's algorithm computes all rational solutions of a linear recurrence equation with polynomial coefficients. The algorithm was published by Sergei A. Abramov in 1989.[1][2]

Universal denominator

The main concept in Abramov's algorithm is a universal denominator. Let 𝕂 be a field of characteristic zero. The dispersion dis(p,q) of two polynomials p,qβˆˆπ•‚[n] is defined asdis(p,q)=max{kβˆˆβ„•:deg(gcd(p(n),q(n+k)))β‰₯1}βˆͺ{βˆ’1},where β„• denotes the set of non-negative integers. Therefore the dispersion is the maximum kβˆˆβ„• such that the polynomial p and the k-times shifted polynomial q have a common factor. It is βˆ’1 if such a k does not exist. The dispersion can be computed as the largest non-negative integer root of the resultant resn(p(n),q(n+k))βˆˆπ•‚[k].[3][4] Let βˆ‘k=0rpk(n)y(n+k)=f(n) be a recurrence equation of order r with polynomial coefficients pkβˆˆπ•‚[n], polynomial right-hand side fβˆˆπ•‚[n] and rational sequence solution y(n)βˆˆπ•‚(n). It is possible to write y(n)=p(n)/q(n) for two relatively prime polynomials p,qβˆˆπ•‚[n]. Let D=dis(pr(nβˆ’r),p0(n)) andu(n)=gcd([p0(n+D)]D+1_,[pr(nβˆ’r)]D+1_)where [p(n)]k_=p(n)p(nβˆ’1)β‹―p(nβˆ’k+1) denotes the falling factorial of a function. Then q(n) divides u(n). So the polynomial u(n) can be used as a denominator for all rational solutions y(n) and hence it is called a universal denominator.[5]

Algorithm

Let again βˆ‘k=0rpk(n)y(n+k)=f(n) be a recurrence equation with polynomial coefficients and u(n) a universal denominator. After substituting y(n)=z(n)/u(n) for an unknown polynomial z(n)βˆˆπ•‚[n] and setting β„“(n)=lcm(u(n),,u(n+r)) the recurrence equation is equivalent toβˆ‘k=0rpk(n)z(n+k)u(n+k)β„“(n)=f(n)β„“(n).As the u(n+k) cancel this is a linear recurrence equation with polynomial coefficients which can be solved for an unknown polynomial solution z(n). There are algorithms to find polynomial solutions. The solutions for z(n) can then be used again to compute the rational solutions y(n)=z(n)/u(n).[2]

algorithm rational_solutions is
    input: Linear recurrence equation βˆ‘k=0rpk(n)y(n+k)=f(n),pk,fβˆˆπ•‚[n],p0,prβ‰ 0.
    output: The general rational solution y if there are any solutions, otherwise false.

    D=disp(pr(nβˆ’r),p0(n))
    u(n)=gcd([p0(n+D)]D+1_,[pr(nβˆ’r)]D+1_)
    β„“(n)=lcm(u(n),,u(n+r))
    Solve βˆ‘k=0rpk(n)z(n+k)u(n+k)β„“(n)=f(n)β„“(n) for general polynomial solution z(n)
    if solution z(n) exists then
        return general solution y(n)=z(n)/u(n)
    else
        return false
    end if

Example

The homogeneous recurrence equation of order 1(nβˆ’1)y(n)+(βˆ’nβˆ’1)y(n+1)=0over β„š has a rational solution. It can be computed by considering the dispersionD=dis(p1(nβˆ’1),p0(n))=disp(βˆ’n,nβˆ’1)=1.This yields the following universal denominator:u(n)=gcd([p0(n+1)]2_,[pr(nβˆ’1)]2_)=(nβˆ’1)nandβ„“(n)=lcm(u(n),u(n+1))=(nβˆ’1)n(n+1).Multiplying the original recurrence equation with β„“(n) and substituting y(n)=z(n)/u(n) leads to(nβˆ’1)(n+1)z(n)+(βˆ’nβˆ’1)(nβˆ’1)z(n+1)=0.This equation has the polynomial solution z(n)=c for an arbitrary constant cβˆˆβ„š. Using y(n)=z(n)/u(n) the general rational solution isy(n)=c(nβˆ’1)nfor arbitrary cβˆˆβ„š.

References

WikiProject Mathematics on Wikidata