Examples 2.8, 2.9, 2.10, and 2.12 (Puiseux Expansions of Rooted Binary and 3-Ary Trees)
with(gfun):
> |
> | # Enter the algebraic equations for the generating functions under consideration
P2 := z*y^2-y+1; P3 := z*y^3-y+1; |
(1) |
> | # There are two Puiseix series solutions to the equation for binary trees
algeqtoseries(P2,z,y,5); |
(2) |
> | # There are three Puiseix series solutions to the equation for 3-ary trees
# By default, the RootOf data structure is used to encode algebraic quantities algeqtoseries(P3,z,y,5); |
(3) |
> | # The allvalues command can be used to represent these expansions explicitly
allvalues(algeqtoseries(P3,z,y,5)); |
(4) |
> | # Compute expansions in t = 1-4z around the singular point z=1/4
allvalues(algeqtoseries(subs(z=(1-t)/4,P2),t,y,5)); |
(5) |
> | # The algebraic curves defined by the algebraic equation for binary trees have singularities at the origin and z=1/4
{solve(discrim(P2,y))}, {solve(lcoeff(P2,y))}; |
(6) |
> | # There is a branch going to infinity at 0 and two branches colliding at 1/4
plots[implicitplot](P2,z=-2..2,y=-4..4, numpoints=10^4); |
> | # The algebraic curves defined by the algebraic equation for 3-ary trees have singularities at the origin and z=4/27
{solve(discrim(P3,y))}, {solve(lcoeff(P3,y))}; |
(7) |
> | # There are branches going to infinity at 0 and two branches colliding at 1/4
# (One can also imagine two branches colliding "at infinity" as z goes to 0) plots[implicitplot](P3,z=-1..1,y=-4..4, numpoints=10^4); |
> |