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); |
![]() |
| > |