Generating Functions Jeremy Johnson This lecture provides a brief introduction to generating functions. More information about this important topic can be found in Chapter 7 of Concrete Mathematics by Graham, Knuth, and Patashnik or the book Generatingfunctionology by Wilf. A generating function is a formal power series with integer coefficients. A generating function for a given sequence of integers is simply the function defined by the power series whose coefficients are the integers in the sequence. The corresponding function can be thought of as "generating" the numbers in the sequence. Let NiMmJSJnRzYjJSJuRw==, NiMvJSJuRzsiIiElKWluZmluaXR5Rw== be a sequence of integers. NiMvLSUiR0c2IyUiekctJSRzdW1HNiQqJiYlImdHNiMlIm5HIiIiKUYnRi9GMC9GLzsiIiElKWluZmluaXR5Rw== is the generating function associated with the sequence NiMmJSJnRzYjJSJuRw==. Wilf views the generating function as a clothsline where the term NiMpJSJ6RyUibkc= is the clothing pin holding the coefficient NiMmJSJnRzYjJSJuRw==. Generating functions are a very powerful tool for exploring integer sequences and recurrence relations. The function G(z) allows one to manipulate and argue about the entire sequence at once.
<Text-field style="Heading 1" layout="Heading 1">Example generating functions</Text-field>
<Text-field style="Heading 2" layout="Heading 2">Sequence of ones and related generating functions</Text-field> We begin with the sequence containing all ones. seq(1,i=1..20); NjYiIiJGI0YjRiNGI0YjRiNGI0YjRiNGI0YjRiNGI0YjRiNGI0YjRiNGIw== g1 := 1/(1-z); KiQsJiIiIkYkSSJ6RzYiISIiRic= G1 := series(g1,z,20); K01JInpHNiIiIiIiIiFGJUYlRiUiIiNGJSIiJEYlIiIlRiUiIiZGJSIiJ0YlIiIoRiUiIilGJSIiKkYlIiM1RiUiIzZGJSIjN0YlIiM4RiUiIzlGJSIjOkYlIiM7RiUiIzxGJSIjPUYlIiM+LUkiT0clKnByb3RlY3RlZEc2I0YlIiM/ seq(coeff(G1,z,i),i=0..19); NjYiIiJGI0YjRiNGI0YjRiNGI0YjRiNGI0YjRiNGI0YjRiNGI0YjRiNGIw== seq(diff(g1,z$i)/i!,i=1..10); NiwqJCksJiIiIkYmSSJ6RzYiISIiIiIjRikqJClGJSIiJEYpKiQpRiUiIiVGKSokKUYlIiImRikqJClGJSIiJ0YpKiQpRiUiIihGKSokKUYlIiIpRikqJClGJSIiKkYpKiQpRiUiIzVGKSokKUYlIiM2Rik= map(f->subs(z=0,f),[%]); NywiIiJGI0YjRiNGI0YjRiNGI0YjRiM= A little discursion into Maple operators. D() is the differential operator. It takes a function and returns a function which is the derivative of the input function. The @ notation is used for function composition. f@@i is shorthand composed with itself i times. g := (z) -> 1/(1-z); Zio2I0kiekc2IkYlNiRJKW9wZXJhdG9yR0YlSSZhcnJvd0dGJUYlKiQsJiIiIkYrRiQhIiJGLEYlRiVGJQ== D(g); Zio2I0kiekc2IkYlNiRJKW9wZXJhdG9yR0YlSSZhcnJvd0dGJUYlKiQpLCYiIiJGLEYkISIiIiIjRi1GJUYlRiU= D(g)(0); IiIi D(D(g)); Zio2I0kiekc2IkYlNiRJKW9wZXJhdG9yR0YlSSZhcnJvd0dGJUYlLCQqJiIiIyIiIiksJkYsRixGJCEiIiIiJEYvRixGJUYlRiU= (D @ D)(g); Zio2I0kiekc2IkYlNiRJKW9wZXJhdG9yR0YlSSZhcnJvd0dGJUYlLCQqJiIiIyIiIiksJkYsRixGJCEiIiIiJEYvRixGJUYlRiU= seq((D@@i)(g)(0)/i!,i=1..10); NiwiIiJGI0YjRiNGI0YjRiNGI0YjRiM= Replace z by cz in g1 to obtain a generating function whose coefficients are powers of c. g2 := 1/(1-c*z); KiQsJiIiIkYkKiZJImNHNiJGJEkiekdGJ0YkISIiRik= series(g2,z,20); K01JInpHNiIiIiIiIiFJImNHRiRGJSokKUYnIiIjRiVGKiokKUYnIiIkRiVGLSokKUYnIiIlRiVGMCokKUYnIiImRiVGMyokKUYnIiInRiVGNiokKUYnIiIoRiVGOSokKUYnIiIpRiVGPCokKUYnIiIqRiVGPyokKUYnIiM1RiVGQiokKUYnIiM2RiVGRSokKUYnIiM3RiVGSCokKUYnIiM4RiVGSyokKUYnIiM5RiVGTiokKUYnIiM6RiVGUSokKUYnIiM7RiVGVCokKUYnIiM8RiVGVyokKUYnIiM9RiVGWiokKUYnIiM+RiVGZ24tSSJPRyUqcHJvdGVjdGVkRzYjRiUiIz8= subs(c=2,%); K01JInpHNiIiIiIiIiEiIiNGJSIiJUYnIiIpIiIkIiM7RigiI0siIiYiI2siIiciJEciIiIoIiRjI0YpIiQ3JiIiKiIlQzUiIzUiJVs/IiM2IiUnNCUiIzciJSM+KSIjOCImJVE7IiM5IiZvRiQiIzoiJk9iJ0YrIidzNTgiIzwiJ1dARSIjPSInKUdDJiIjPi1JIk9HJSpwcm90ZWN0ZWRHNiNGJSIjPw== subs(c=-1,%%); K01JInpHNiIiIiIiIiEhIiJGJUYlIiIjRiciIiRGJSIiJUYnIiImRiUiIidGJyIiKEYlIiIpRiciIipGJSIjNUYnIiM2RiUiIzdGJyIjOEYlIiM5RiciIzpGJSIjO0YnIiM8RiUiIz1GJyIjPi1JIk9HJSpwcm90ZWN0ZWRHNiNGJSIjPw== subs(z=z^2,g1); KiQsJiIiIkYkKiQpSSJ6RzYiIiIjRiQhIiJGKg== series(%,z,20); KzlJInpHNiIiIiIiIiFGJSIiI0YlIiIlRiUiIidGJSIiKUYlIiM1RiUiIzdGJSIjOUYlIiM7RiUiIz0tSSJPRyUqcHJvdGVjdGVkRzYjRiUiIz8= subs(z=z^5,g1); KiQsJiIiIkYkKiQpSSJ6RzYiIiImRiQhIiJGKg== series(%,z,20); Ky1JInpHNiIiIiIiIiFGJSIiJkYlIiM1RiUiIzotSSJPRyUqcHJvdGVjdGVkRzYjRiUiIz8= series(g1,z,20); K01JInpHNiIiIiIiIiFGJUYlRiUiIiNGJSIiJEYlIiIlRiUiIiZGJSIiJ0YlIiIoRiUiIilGJSIiKkYlIiM1RiUiIzZGJSIjN0YlIiM4RiUiIzlGJSIjOkYlIiM7RiUiIzxGJSIjPUYlIiM+LUkiT0clKnByb3RlY3RlZEc2I0YlIiM/ diff(%,z); K0tJInpHNiIiIiIiIiEiIiNGJSIiJEYnIiIlRigiIiZGKSIiJ0YqIiIoRisiIilGLCIiKkYtIiM1Ri4iIzZGLyIjN0YwIiM4RjEiIzlGMiIjOkYzIiM7RjQiIzxGNSIjPUY2IiM+RjctSSJPRyUqcHJvdGVjdGVkRzYjRiVGOA== g3 := diff(g1,z); KiQpLCYiIiJGJUkiekc2IiEiIiIiI0Yo series(g3,z,20); K01JInpHNiIiIiIiIiEiIiNGJSIiJEYnIiIlRigiIiZGKSIiJ0YqIiIoRisiIilGLCIiKkYtIiM1Ri4iIzZGLyIjN0YwIiM4RjEiIzlGMiIjOkYzIiM7RjQiIzxGNSIjPUY2IiM+RjciIz9GOC1JIk9HJSpwcm90ZWN0ZWRHNiNGJUY5 series(z*g3,z,20); K0tJInpHNiIiIiJGJSIiI0YmIiIkRiciIiVGKCIiJkYpIiInRioiIihGKyIiKUYsIiIqRi0iIzVGLiIjNkYvIiM3RjAiIzhGMSIjOUYyIiM6RjMiIztGNCIjPEY1IiM9RjYiIz5GNy1JIk9HJSpwcm90ZWN0ZWRHNiNGJSIjPw== g4 := int(g1,z); LCQtSSNsbkc2JCUqcHJvdGVjdGVkR0koX3N5c2xpYkc2IjYjLCYiIiJGK0kiekdGKCEiIkYt series(g4,z,20); K0tJInpHNiIiIiJGJSNGJSIiI0YnI0YlIiIkRikjRiUiIiVGKyNGJSIiJkYtI0YlIiInRi8jRiUiIihGMSNGJSIiKUYzI0YlIiIqRjUjRiUiIzVGNyNGJSIjNkY5I0YlIiM3RjsjRiUiIzhGPSNGJSIjOUY/I0YlIiM6RkEjRiUiIztGQyNGJSIjPEZFI0YlIiM9RkcjRiUiIz5GSS1JIk9HJSpwcm90ZWN0ZWRHNiNGJSIjPw==
<Text-field style="Heading 2" layout="Heading 2">Fibonacci Numbers</Text-field> fib := proc(n) option remember; if n = 0 then return 1; fi; if n = 1 then return 1; fi; return fib(n-1) + fib(n-2); end; Zio2I0kibkc2IkYlNiNJKXJlbWVtYmVyR0YlRiVDJUAkL0YkIiIhTyIiIkAkL0YkRi1GLE8sJi1JJGZpYkdGJTYjLCZGJEYtRi0hIiJGLS1GMzYjLCZGJEYtIiIjRjZGLUYlRiVGJQ== seq(fib(n),n=0..19); NjYiIiJGIyIiIyIiJCIiJiIiKSIjOCIjQCIjTSIjYiIjKikiJFciIiRMIyIkeCQiJDUnIiQoKSoiJShmIiIlJWUjIiUiPSUiJWxu g5 := 1/(1-z-z^2); KiQsKCIiIkYkSSJ6RzYiISIiKiQpRiUiIiNGJEYnRic= series(g5,z,20); K01JInpHNiIiIiIiIiFGJUYlIiIjRiciIiRGKCIiJiIiJSIiKUYpIiM4IiInIiNAIiIoIiNNRisiI2IiIioiIyopIiM1IiRXIiIjNiIkTCMiIzciJHgkRiwiJDUnIiM5IiQoKSoiIzoiJShmIiIjOyIlJWUjIiM8IiUiPSUiIz0iJWxuIiM+LUkiT0clKnByb3RlY3RlZEc2I0YlIiM/
<Text-field style="Heading 2" layout="Heading 2">Counting Binary trees</Text-field> NumBinTrees := proc(n) option remember; local k; if n = 0 then return 1; fi; if n = 1 then return 1; fi; return sum('NumBinTrees(k)*NumBinTrees(n-k-1)',`k`=0..n-1); end; Zio2I0kibkc2IjYjSSJrR0YlNiNJKXJlbWVtYmVyR0YlRiVDJUAkL0YkIiIhTyIiIkAkL0YkRi9GLk8tSSRzdW1HRiU2JC4qJi1JLE51bUJpblRyZWVzR0YlRiZGLy1GOTYjLChGJEYvRichIiJGL0Y9Ri8vRic7Ri0sJkYkRi9GL0Y9RiVGJUYl seq(NumBinTrees(n),n=0..10); Ni0iIiJGIyIiIyIiJiIjOSIjVSIkSyIiJEglIiVJOSIlaVsiJid6Ow== g6 := (1 - sqrt(1-4*z))/(2*z); LCQqKCMiIiIiIiNGJSwmRiVGJSokKSwmRiVGJSomIiIlRiVJInpHNiJGJSEiIkYkRiVGL0YlRi1GL0Yl series(g6,z,20); K0tJInpHNiIiIiIiIiFGJUYlIiIjRiciIiYiIiQiIzkiIiUiI1VGKCIkSyIiIiciJEglIiIoIiVJOSIiKSIlaVsiIioiJid6OyIjNSImJ3llIiM2Iic3ITMjIiM3IicrSHUiIzgiKFNXbiNGKiIoWFtwKiIjOiIpcXdOTiIjOyIqIXpXJ0giIiM8IiorKFF3WiIjPS1JIk9HJSpwcm90ZWN0ZWRHNiNGJSIjPg==
<Text-field style="Heading 2" layout="Heading 2">Counting Partition trees</Text-field> BinToPart:=proc(n,j_in) local L,j,i;L:=[1];j:=j_in; for i from 1 to n-1 do if(j mod 2 = 1)then L:=[1,op(L)]; else L:=subsop(1=L[1]+1,L); fi; j:=floor(j/2); end; L; end; NiM+JSpCaW5Ub1BhcnRHZio2JCUibkclJWpfaW5HNiUlIkxHJSJqRyUiaUc2IkYtQyY+Rio3IyIiIj5GK0YoPyhGLEYxRjEsJkYnRjFGMSEiIiUldHJ1ZUdDJEAlLy0lJG1vZEc2JEYrIiIjRjE+Rio3JEYxLSUjb3BHNiNGKj5GKi0lJ3N1YnNvcEc2JC9GMSwmJkYqNiNGMUYxRjFGMUYqPkYrLSUmZmxvb3JHNiMsJComI0YxRj1GMUYrRjFGMUYqRi1GLUYt CountTrees := proc(root) option remember; local part, count, counts, i, j; if root = 1 then return 1; fi; count := 1; for j from 1 to 2^(root-1)-1 do part := BinToPart(root,j); counts := map(CountTrees,part); count := count + product(counts[i],i=1..nops(counts)); od; return count; end; NiM+JStDb3VudFRyZWVzR2YqNiMlJXJvb3RHNiclJXBhcnRHJSZjb3VudEclJ2NvdW50c0clImlHJSJqRzYjJSlyZW1lbWJlckc2IkMmQCQvRiciIiJPRjQ+RipGND8oRi1GNEY0LCYpIiIjLCZGJ0Y0RjQhIiJGNEY0RjwlJXRydWVHQyU+RiktJSpCaW5Ub1BhcnRHNiRGJ0YtPkYrLSUkbWFwRzYkRiRGKT5GKiwmRipGNC0lKHByb2R1Y3RHNiQmRis2I0YsL0YsO0Y0LSUlbm9wc0c2I0YrRjRPRipGMEYwRjA= seq(CountTrees(n),n=1..15); NjEiIiIiIiMiIiciI0MiJDciIiRvJiIlS0kiJm9uIiImK18qIic7O2IiKC8oW0siKUMpKlE+IipDPS08IiIqJXlNSHIiKydIaid5Vg== g7 := (-1 + sqrt(1-8*z+8*z^2))/(2*(-2+2*z)); NiM+JSNnN0cqJiwmIiIiISIiKiQpLChGJ0YnKiYiIilGJyUiekdGJ0YoKiZGLUYnKUYuIiIjRidGJyNGJ0YxRidGJ0YnLCYiIiVGKComRjRGJ0YuRidGJ0Yo series(g7,z,16); NiMrQyUiekciIiJGJSIiI0YmIiInIiIkIiNDIiIlIiQ3IiIiJiIkbyZGJyIlS0kiIigiJm9uIiIiKSImK18qIiIqIic7O2IiIzUiKC8oW0siIzYiKUMpKlE+IiM3IipDPS08IiIjOCIqJXlNSHIiIzkiKydIaid5ViIjOi0lIk9HNiNGJSIjOw==
<Text-field style="Heading 2" layout="Heading 2">Harmonic Numbers</Text-field> seq(sum(1/i,i=1..n),n=1..20); NjYiIiIjIiIkIiIjIyIjNiIiJyMiI0QiIzcjIiRQIiIjZyMiI1wiIz8jIiRqJCIkUyIjIiRoKCIkIUcjIiVIciIlP0QjIiUiUShGOyMiJjZQKSImP3gjIyImQGcpRkAjIigkKmY5IiInZy5PIyIoTDw8IkZFIyIoZGQ+IkZFIyIoZmxWIyInPzJzIyIpQkE5VSIpU0FENyMiKSxWRjkiKCEzJTMlIyIqKnomSHYjIik/dmZ4IyIpTl4kZSYiKS8mPmIi series(1/(1-z),z,20); K01JInpHNiIiIiIiIiFGJUYlRiUiIiNGJSIiJEYlIiIlRiUiIiZGJSIiJ0YlIiIoRiUiIilGJSIiKkYlIiM1RiUiIzZGJSIjN0YlIiM4RiUiIzlGJSIjOkYlIiM7RiUiIzxGJSIjPUYlIiM+LUkiT0clKnByb3RlY3RlZEc2I0YlIiM/ series(int(1/(1-z),z),z,20); K0tJInpHNiIiIiJGJSNGJSIiI0YnI0YlIiIkRikjRiUiIiVGKyNGJSIiJkYtI0YlIiInRi8jRiUiIihGMSNGJSIiKUYzI0YlIiIqRjUjRiUiIzVGNyNGJSIjNkY5I0YlIiM3RjsjRiUiIzhGPSNGJSIjOUY/I0YlIiM6RkEjRiUiIztGQyNGJSIjPEZFI0YlIiM9RkcjRiUiIz5GSS1JIk9HJSpwcm90ZWN0ZWRHNiNGJSIjPw== Observe what happens when we form the series of the product of these two functions. g8 := 1/(1-z)*int(1/(1-z),z); LCQqJiwmIiIiRiVJInpHNiIhIiJGKC1JI2xuRzYkJSpwcm90ZWN0ZWRHSShfc3lzbGliR0YnNiNGJEYlRig= series(g8,z,20); K0tJInpHNiIiIiJGJSMiIiQiIiNGKCMiIzYiIidGJyMiI0QiIzciIiUjIiRQIiIjZyIiJiMiI1wiIz9GKyMiJGokIiRTIiIiKCMiJGgoIiQhRyIiKSMiJUhyIiU/RCIiKiMiJSJRKEZBIiM1IyImNlApIiY/eCNGKiMiJkBnKUZIRi4jIigkKmY5IiInZy5PIiM4IyIoTDw8IkZNIiM5IyIoZGQ+IkZNIiM6IyIoZmxWIyInPzJzIiM7IyIpQkE5VSIpU0FENyIjPCMiKSxWRjkiKCEzJTMlIiM9IyIqKnomSHYjIik/dmZ4IiM+LUkiT0clKnByb3RlY3RlZEc2I0YlRjY= The coefficients of the product of LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYoLUkjbWlHRiQ2JVEiZkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JKG1mZW5jZWRHRiQ2JC1GIzYjLUYsNiVRInpGJ0YvRjIvRjNRJ25vcm1hbEYnLUkjbW9HRiQ2MFEnJnNkb3Q7RidGPS8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGRS8lKXN0cmV0Y2h5R0ZFLyUqc3ltbWV0cmljR0ZFLyUobGFyZ2VvcEdGRS8lLm1vdmFibGVsaW1pdHNHRkUvJSdhY2NlbnRHRkUvJSVmb3JtR1EmaW5maXhGJy8lJ2xzcGFjZUdRJDBlbUYnLyUncnNwYWNlR0ZXLyUobWluc2l6ZUdRIjFGJy8lKG1heHNpemVHUSlpbmZpbml0eUYnLUYsNiVRImdGJ0YvRjJGNS1GQDYwUSJ+RidGPUZDRkZGSEZKRkxGTkZQL0ZTUSFGJ0ZVRlhGWkZnbg==is equal to the convolution of the coefficients of the series for LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEiZkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JKG1mZW5jZWRHRiQ2JC1GIzYjLUYsNiVRInpGJ0YvRjIvRjNRJ25vcm1hbEYnLUkjbW9HRiQ2MFEifkYnRj0vJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRkUvJSlzdHJldGNoeUdGRS8lKnN5bW1ldHJpY0dGRS8lKGxhcmdlb3BHRkUvJS5tb3ZhYmxlbGltaXRzR0ZFLyUnYWNjZW50R0ZFLyUlZm9ybUdRIUYnLyUnbHNwYWNlR1EkMGVtRicvJSdyc3BhY2VHRlcvJShtaW5zaXplR1EiMUYnLyUobWF4c2l6ZUdRKWluZmluaXR5Ric=and LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEiZ0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JKG1mZW5jZWRHRiQ2JC1GIzYjLUYsNiVRInpGJ0YvRjIvRjNRJ25vcm1hbEYnLUkjbW9HRiQ2MFEiLkYnRj0vJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRkUvJSlzdHJldGNoeUdGRS8lKnN5bW1ldHJpY0dGRS8lKGxhcmdlb3BHRkUvJS5tb3ZhYmxlbGltaXRzR0ZFLyUnYWNjZW50R0ZFLyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUSQwZW1GJy8lJ3JzcGFjZUdGVy8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJw== I.E. the LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUklbXN1cEdGJDYlLUkjbWlHRiQ2JVEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1GIzYjLUYvNiVRI3RoRicvRjNRJmZhbHNlRicvRjZRJ25vcm1hbEYnLyUxc3VwZXJzY3JpcHRzaGlmdEdRIjBGJw== coefficient of the product is equal to LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYnLUkrbXVuZGVyb3ZlckdGJDYnLUkjbW9HRiQ2MFEmJlN1bTtGJy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRicvJSZmZW5jZUdRJnVuc2V0RicvJSpzZXBhcmF0b3JHRjcvJSlzdHJldGNoeUdRJXRydWVGJy8lKnN5bW1ldHJpY0dGNy8lKGxhcmdlb3BHRjwvJS5tb3ZhYmxlbGltaXRzR0Y8LyUnYWNjZW50R0Y3LyUlZm9ybUdRJ3ByZWZpeEYnLyUnbHNwYWNlR1EkMGVtRicvJSdyc3BhY2VHUS50aGlubWF0aHNwYWNlRicvJShtaW5zaXplR1EhRicvJShtYXhzaXplR0ZQLUYjNictSSNtaUdGJDYlUSJpRicvJSdpdGFsaWNHRjwvRjNRJ2l0YWxpY0YnLUYvNjBRIitGJ0YyL0Y2USZmYWxzZUYnL0Y5RltvL0Y7RltvL0Y+RltvL0ZARltvL0ZCRltvL0ZERltvL0ZGUSZpbmZpeEYnL0ZJUTBtZWRpdW1tYXRoc3BhY2VGJy9GTEZlby9GT1EiMUYnL0ZSUSlpbmZpbml0eUYnLUZWNiVRImpGJ0ZZRmVuLUYvNjBRIj1GJ0YyRmpuRlxvRl1vRl5vRl9vRmBvRmFvRmJvL0ZJUS90aGlja21hdGhzcGFjZUYnL0ZMRmJwRmdvRmlvLUZWNiVRImtGJ0ZZRmVuLUYjNiMtRlY2JUZQRllGZW4vJSdhY2NlbnRHRltvLyUsYWNjZW50dW5kZXJHRltvLUklbXN1YkdGJDYlLUZWNiVRImZGJ0ZZRmVuLUYjNiNGVS8lL3N1YnNjcmlwdHNoaWZ0R1EiMEYnLUYvNjBRJyZzZG90O0YnRjJGam5GXG9GXW9GXm9GX29GYG9GYW9GYm9GSC9GTEZKRmdvRmlvLUZgcTYlLUZWNiVRImdGJ0ZZRmVuLUYjNiNGW3BGZ3EtRi82MFEiLkYnRjJGam5GXG9GXW9GXm9GX29GYG9GYW9GYm9GSEZdckZnb0Zpbw== In this case since the coefficients of the series for LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkmbWZyYWNHRiQ2KC1JI21uR0YkNiRRIjFGJy8lLG1hdGh2YXJpYW50R1Enbm9ybWFsRictRiM2JUYuLUkjbW9HRiQ2MFEqJnVtaW51czA7RidGMi8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGPS8lKXN0cmV0Y2h5R0Y9LyUqc3ltbWV0cmljR0Y9LyUobGFyZ2VvcEdGPS8lLm1vdmFibGVsaW1pdHNHRj0vJSdhY2NlbnRHRj0vJSVmb3JtR1EmaW5maXhGJy8lJ2xzcGFjZUdRMG1lZGl1bW1hdGhzcGFjZUYnLyUncnNwYWNlR0ZPLyUobWluc2l6ZUdGMS8lKG1heHNpemVHUSlpbmZpbml0eUYnLUkjbWlHRiQ2JVEiekYnLyUnaXRhbGljR1EldHJ1ZUYnL0YzUSdpdGFsaWNGJy8lLmxpbmV0aGlja25lc3NHUSIxRicvJStkZW5vbWFsaWduR1EnY2VudGVyRicvJSludW1hbGlnbkdGX28vJSliZXZlbGxlZEdGPQ== are all equal to one, the convolution corresponds to adding the first LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYjLUkjbWlHRiQ2JVEia0YnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJw== coefficients of the series for LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYpLUkjbW9HRiQ2MFErJkludGVncmFsO0YnLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJy8lJmZlbmNlR1EmdW5zZXRGJy8lKnNlcGFyYXRvckdGNC8lKXN0cmV0Y2h5R1EldHJ1ZUYnLyUqc3ltbWV0cmljR0Y0LyUobGFyZ2VvcEdGOS8lLm1vdmFibGVsaW1pdHNHRjQvJSdhY2NlbnRHRjQvJSVmb3JtR1EhRicvJSdsc3BhY2VHRkQvJSdyc3BhY2VHRkQvJShtaW5zaXplR0ZELyUobWF4c2l6ZUdGRC1JJm1mcmFjR0YkNigtSSNtbkdGJDYkUSIxRidGLy1GIzYlRlAtRiw2MFEqJnVtaW51czA7RidGLy9GM1EmZmFsc2VGJy9GNkZaL0Y4RlovRjtGWi9GPUZaL0Y/RlovRkFGWi9GQ1EmaW5maXhGJy9GRlEwbWVkaXVtbWF0aHNwYWNlRicvRkhGXm8vRkpGUy9GTFEpaW5maW5pdHlGJy1JI21pR0YkNiVRInpGJy8lJ2l0YWxpY0dGOS9GMFEnaXRhbGljRicvJS5saW5ldGhpY2tuZXNzR1EiMUYnLyUrZGVub21hbGlnbkdRJ2NlbnRlckYnLyUpbnVtYWxpZ25HRmBwLyUpYmV2ZWxsZWRHRlotRiw2MFEifkYnRi9GWUZlbkZmbkZnbkZobkZpbkZqbkZCL0ZGUSQwZW1GJy9GSEZpcEZgb0Zhby1GLDYwUTAmRGlmZmVyZW50aWFsRDtGJ0YvRjJGNS9GOEY0RjovRj1GNEY+RkBGQkZFRkdGSUZLRmNvLUYsNjBRIixGJ0YvRlkvRjZGOUZmbkZnbkZobkZpbkZqbkZbb0ZocC9GSFEzdmVyeXRoaWNrbWF0aHNwYWNlRidGYG9GYW9GZXA=which are the fractions LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYqLUkjbW5HRiQ2JFEiMUYnLyUsbWF0aHZhcmlhbnRHUSdub3JtYWxGJy1JI21vR0YkNjBRIixGJ0YvLyUmZmVuY2VHUSZmYWxzZUYnLyUqc2VwYXJhdG9yR1EldHJ1ZUYnLyUpc3RyZXRjaHlHRjgvJSpzeW1tZXRyaWNHRjgvJShsYXJnZW9wR0Y4LyUubW92YWJsZWxpbWl0c0dGOC8lJ2FjY2VudEdGOC8lJWZvcm1HUSZpbmZpeEYnLyUnbHNwYWNlR1EkMGVtRicvJSdyc3BhY2VHUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGJy8lKG1pbnNpemVHRi4vJShtYXhzaXplR1EpaW5maW5pdHlGJy1JJm1mcmFjR0YkNihGKy1GIzYjLUYsNiRRIjJGJ0YvLyUubGluZXRoaWNrbmVzc0dRIjFGJy8lK2Rlbm9tYWxpZ25HUSdjZW50ZXJGJy8lKW51bWFsaWduR0Zbby8lKWJldmVsbGVkR0Y4RjItRlU2KEYrLUYjNiMtRiw2JFEiM0YnRi9GZm5GaW5GXG9GXm9GMi1GMzYwUSMuLkYnRi9GNi9GOkY4RjxGPkZARkJGRC9GR1EocG9zdGZpeEYnL0ZKUTBtZWRpdW1tYXRoc3BhY2VGJy9GTUZLRk9GUS1GMzYwUSIuRidGL0Y2RmpvRjxGPkZARkJGREZGRklGX3BGT0ZR
<Text-field style="Heading 1" layout="Heading 1">Making Change</Text-field> This section shows how to use generating functions to determine the number of ways to make change for $1 using pennies, nickels, dimes, quarters, and half dollars. First consider the series P, whose nth coefficient is the number of ways to make change for n cents using just pennies. Then consider the series N, whose nth coefficient is the number of ways to make change for n cents using just nickels. P := series(1/(1-z),z,25); K1dJInpHNiIiIiIiIiFGJUYlRiUiIiNGJSIiJEYlIiIlRiUiIiZGJSIiJ0YlIiIoRiUiIilGJSIiKkYlIiM1RiUiIzZGJSIjN0YlIiM4RiUiIzlGJSIjOkYlIiM7RiUiIzxGJSIjPUYlIiM+RiUiIz9GJSIjQEYlIiNBRiUiI0JGJSIjQy1JIk9HJSpwcm90ZWN0ZWRHNiNGJSIjRA== N := series(1/(1-z^5),z,25); Ky9JInpHNiIiIiIiIiFGJSIiJkYlIiM1RiUiIzpGJSIjPy1JIk9HJSpwcm90ZWN0ZWRHNiNGJSIjRA== Multiplying P by N gives a series whose nth coefficient is the number of ways to make change for n cents using nickles and pennies, since the nth coefficient of P*N is NiMtJSRzdW1HNiQqJiYlIlBHNiMlImpHIiIiJiUiTkc2IyUia0dGKy8sJkYqRitGL0YrJSJuRw==. series(P*N,z,25); K1dJInpHNiIiIiIiIiFGJUYlRiUiIiNGJSIiJEYlIiIlRiciIiZGJyIiJ0YnIiIoRiciIilGJyIiKkYoIiM1RigiIzZGKCIjN0YoIiM4RigiIzlGKSIjOkYpIiM7RikiIzxGKSIjPUYpIiM+RioiIz9GKiIjQEYqIiNBRioiI0JGKiIjQy1JIk9HJSpwcm90ZWN0ZWRHNiNGJSIjRA== Continuing in this way, we multiply the series corresponding to the number of ways to make change for n cents using pennies, nickles, dimes, quarters, and half dollars. map(i->(1-z^i),[1,5,10,25,50]); NycsJiIiIkYkSSJ6RzYiISIiLCZGJEYkKiQpRiUiIiZGJEYnLCZGJEYkKiQpRiUiIzVGJEYnLCZGJEYkKiQpRiUiI0RGJEYnLCZGJEYkKiQpRiUiI11GJEYn mul(%[i],i=1..nops(%)); KiwsJiIiIkYkSSJ6RzYiISIiRiQsJkYkRiQqJClGJSIiJkYkRidGJCwmRiRGJCokKUYlIiM1RiRGJ0YkLCZGJEYkKiQpRiUiI0RGJEYnRiQsJkYkRiQqJClGJSIjXUYkRidGJA== f := 1/%; KiwsJiIiIkYkSSJ6RzYiISIiRicsJkYkRiQqJClGJSIiJkYkRidGJywmRiRGJCokKUYlIiM1RiRGJ0YnLCZGJEYkKiQpRiUiI0RGJEYnRicsJkYkRiQqJClGJSIjXUYkRidGJw== series(f,z,20); K01JInpHNiIiIiIiIiFGJUYlRiUiIiNGJSIiJEYlIiIlRiciIiZGJyIiJ0YnIiIoRiciIilGJyIiKkYpIiM1RikiIzZGKSIjN0YpIiM4RikiIzlGKyIjOkYrIiM7RisiIzxGKyIjPUYrIiM+LUkiT0clKnByb3RlY3RlZEc2I0YlIiM/ Now the nth coefficient of this series is the number of ways to make change for n cents using pennies, nickels, dimes, quarters, and half dollars. To check this observe that 15 cents can be made using i) 15 pennies, ii) 1 nickel and 10 pennies, iii) 2 nickels and five pennies, iv) 3 nickels, v) 1 dimes and 5 pennies, vi) 1 dime and 1 nickel. To get the number of ways to make change for $1 simply get the 100th coefficient of the series. coeff(%,z,15); IiIn coeff(series(f,z,101),z,100); IiQjSA== If we allow all possible denominations when creating change, then the number of ways to make change for n cents is the number of partitions of n. This leads to the following generating function for partitions. NiMtJShwcm9kdWN0RzYkKiYiIiJGJywmRidGJyklInpHJSJpRyEiIkYsL0YrO0YnJSlpbmZpbml0eUc= product(1/(1-z^i),i=1..10); KjYsJiIiIkYkSSJ6RzYiISIiRicsJkYkRiQqJClGJSIiI0YkRidGJywmRiRGJCokKUYlIiIkRiRGJ0YnLCZGJEYkKiQpRiUiIiVGJEYnRicsJkYkRiQqJClGJSIiJkYkRidGJywmRiRGJCokKUYlIiInRiRGJ0YnLCZGJEYkKiQpRiUiIihGJEYnRicsJkYkRiQqJClGJSIiKUYkRidGJywmRiRGJCokKUYlIiIqRiRGJ0YnLCZGJEYkKiQpRiUiIzVGJEYnRic= series(%,z,11); KztJInpHNiIiIiIiIiFGJUYlIiIjRiciIiRGKCIiJiIiJSIiKEYpIiM2IiInIiM6RisiI0EiIikiI0kiIioiI1UiIzUtSSJPRyUqcHJvdGVjdGVkRzYjRiVGLA== seq(combinat[numbpart](i),i=1..10); NiwiIiIiIiMiIiQiIiYiIigiIzYiIzoiI0EiI0kiI1U=
<Text-field style="Heading 1" layout="Heading 1">Functional Equations</Text-field> A functional equation for a generating function G(z) is an equation which the function G(z) satisfies. Functional equations can often be derived from properties of the terms of the generating function without knowing a closed form for the coefficients or knowing a closed form for G(z). In many cases, the functional equation can be used to determine a closed form for G(z) and the closed form may be used to determine a closed form for the coefficients of G(z). In cases, where this is not possible, it still may be possible to determine properties of the coefficients of G(z), i.e. the integer sequence in question, such as their asymptotic growth rate.
<Text-field style="Heading 2" layout="Heading 2">Hanoi</Text-field> If a sequence of numbers is defined by a recurrence relation, it is possible to use the recurence relation to derive a functional equation for the corresponding generating function. This example, which counts the number of moves to solve the n disk tower of Hanoi problem provides a simple example. Recall that the tower of Hanoi problem requires moving n different sized disks stacked from largest to smallest from one tower to another using a third tower to temporarily hold disks with the constraint that a larger disk may not be placed on a smaller disk. A recursive solution to the problem is obtained by moving the top n-1 disks to the temporary tower, then moving the largest disk to the destination tower, and finally moving the n-1 disks from the temporary tower to the destination tower. The following procedure counts the number of moves used by this recusive solution. Hanoi := proc(n) if n = 0 then return 0; fi; return 2*Hanoi(n-1) + 1; end; Zio2I0kibkc2IkYlRiVGJUMkQCQvRiQiIiFPRilPLCYqJiIiIyIiIi1JJkhhbm9pR0YlNiMsJkYkRi9GLyEiIkYvRi9GL0YvRiVGJUYl seq(Hanoi(n),n=0..10); Ni0iIiEiIiIiIiQiIigiIzoiI0oiI2oiJEYiIiRiIyIkNiYiJUI1 H := sum('Hanoi(n)*z^n',n=0..20); LEpJInpHNiIiIiIqJiIiJEYlKUYjIiIjRiVGJSomIiIoRiUpRiNGJ0YlRiUqJiIjOkYlKUYjIiIlRiVGJSomIiNKRiUpRiMiIiZGJUYlKiYiI2pGJSlGIyIiJ0YlRiUqJiIkRiJGJSlGI0YrRiVGJSomIiRiI0YlKUYjIiIpRiVGJSomIiQ2JkYlKUYjIiIqRiVGJSomIiVCNUYlKUYjIiM1RiVGJSomIiVaP0YlKUYjIiM2RiVGJSomIiUmNCVGJSlGIyIjN0YlRiUqJiIlIj4pRiUpRiMiIzhGJUYlKiYiJiRRO0YlKUYjIiM5RiVGJSomIiZuRiRGJSlGI0YuRiVGJSomIiZOYidGJSlGIyIjO0YlRiUqJiIncjU4RiUpRiMiIzxGJUYlKiYiJ1ZARUYlKUYjIiM9RiVGJSomIicoR0MmRiUpRiMiIz5GJUYlKiYiKHYmWzVGJSlGIyIjP0YlRiU= It is possible to derive a functional equation for H(z) by summing the recurrence relation. Let NiMvLSUiSEc2IyUiekctJSRTdW1HNiQqJi0lImhHNiMlIm5HIiIiKUYnRi9GMC9GLzsiIiElKWluZmluaXR5Rw==, where h(n) = Hanoi(n). Using the recurrence relation for h(n) and multiplying by NiMpJSJ6RyUibkc= we obtain. h(n)*z^n = 2*z*h(n-1)*z^(n-1) + z^n; LyomLUkiaEc2IjYjSSJuR0YmIiIiKUkiekdGJkYoRiksJioqIiIjRilGK0YpLUYlNiMsJkYoRilGKSEiIkYpKUYrRjFGKUYpRipGKQ== Summing this equation from n = 1 to infinity (we must start with n = 1 otherwise h(n-1) would have negative indices) we get Sum(h(n)*z^n, n=1..infinity) = 2*z*Sum(h(n),n=0..infinity) + Sum(z^n,n=1..infinity); Ly1JJFN1bUc2JCUqcHJvdGVjdGVkR0koX3N5c2xpYkc2IjYkKiYtSSJoR0YoNiNJIm5HRigiIiIpSSJ6R0YoRi5GLy9GLjtGL0kpaW5maW5pdHlHRiYsJiooIiIjRi9GMUYvLUYkNiRGKy9GLjsiIiFGNEYvRi8tRiQ2JEYwRjJGLw== Since h(0) = 0 and NiMvLSUkc3VtRzYkKSUiekclIm5HL0YpOyIiISUpaW5maW5pdHlHKiYiIiJGLywmRi9GL0YoISIiRjE= this implies unassign('H'); H(z) = 2*z*H(z) + 1/(1-z) - 1; Ly1JIkhHNiI2I0kiekdGJSwoKigiIiMiIiJGJ0YrRiNGK0YrKiQsJkYrRitGJyEiIkYuRitGK0Yu Now we can solve for H(z) to find a closed form for the generating function. h := solve(%,H(z)); KiZJInpHNiIiIiIsKEYlRiUqJiIiJEYlRiNGJSEiIiomIiIjRiUpRiNGK0YlRiVGKQ== H := series(h,z,20); K0tJInpHNiIiIiJGJSIiJCIiIyIiKEYmIiM6IiIlIiNKIiImIiNqIiInIiRGIkYoIiRiIyIiKSIkNiYiIioiJUI1IiM1IiVaPyIjNiIlJjQlIiM3IiUiPikiIzgiJiRROyIjOSImbkYkRikiJk5iJyIjOyIncjU4IiM8IidWQEUiIz0iJyhHQyYiIz4tSSJPRyUqcHJvdGVjdGVkRzYjRiUiIz8= Verify that H(z) satisfies the functional equation that was derived. G1 := series(1/(1-z),z); KzFJInpHNiIiIiIiIiFGJUYlRiUiIiNGJSIiJEYlIiIlRiUiIiYtSSJPRyUqcHJvdGVjdGVkRzYjRiUiIic= series(2*z*H+G1-1,z,10); Ky9JInpHNiIiIiJGJSIiJCIiIyIiKEYmIiM6IiIlIiNKIiImLUkiT0clKnByb3RlY3RlZEc2I0YlIiIn
<Text-field style="Heading 2" layout="Heading 2">Fibonacci</Text-field> The Fibonacci recurrence is used as a second example. Recall the fibonacci numbers satisfy the recurrenc relation LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEhRicvJSdpdGFsaWNHUSV0cnVlRicvJSxtYXRodmFyaWFudEdRJ2l0YWxpY0YnLUYjNictRiw2JkYuRi8vJTBmb250X3N0eWxlX25hbWVHUSdOb3JtYWxGJ0YyLUYjNiUtRiw2JVEiZkYnRi9GMi1JI21vR0YkNjBRMCZBcHBseUZ1bmN0aW9uO0YnL0YzUSdub3JtYWxGJy8lJmZlbmNlR1EmZmFsc2VGJy8lKnNlcGFyYXRvckdGSS8lKXN0cmV0Y2h5R0ZJLyUqc3ltbWV0cmljR0ZJLyUobGFyZ2VvcEdGSS8lLm1vdmFibGVsaW1pdHNHRkkvJSdhY2NlbnRHRkkvJSVmb3JtR1EmaW5maXhGJy8lJ2xzcGFjZUdRJDBlbUYnLyUncnNwYWNlR0Zlbi8lKG1pbnNpemVHUSIxRicvJShtYXhzaXplR1EpaW5maW5pdHlGJy1JKG1mZW5jZWRHRiQ2JC1GIzYjLUYsNiVRIm5GJ0YvRjJGRS1GQjYwUSI9RidGRUZHRkpGTEZORlBGUkZURlYvRlpRL3RoaWNrbWF0aHNwYWNlRicvRmduRmpvRmhuRltvLUYjNidGNy1GIzYlRj5GQS1GX282JC1GIzYlRjctRiM2JUZjby1GQjYwUSgmbWludXM7RidGRUZHRkpGTEZORlBGUkZURlYvRlpRMG1lZGl1bW1hdGhzcGFjZUYnL0ZnbkZqcEZobkZbby1JI21uR0YkNiRGam5GRUY3RkUtRkI2MFEiK0YnRkVGR0ZKRkxGTkZQRlJGVEZWRmlwRltxRmhuRltvLUYjNiVGPkZBLUZfbzYkLUYjNiVGNy1GIzYlRmNvRmZwLUZdcTYkUSIyRidGRUY3RkVGN0Y3Ris= for LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYlLUkjbWlHRiQ2JVEibkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JI21vR0YkNjBRIj5GJy9GM1Enbm9ybWFsRicvJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRj0vJSlzdHJldGNoeUdGPS8lKnN5bW1ldHJpY0dGPS8lKGxhcmdlb3BHRj0vJS5tb3ZhYmxlbGltaXRzR0Y9LyUnYWNjZW50R0Y9LyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYnLyUncnNwYWNlR0ZPLyUobWluc2l6ZUdRIjFGJy8lKG1heHNpemVHUSlpbmZpbml0eUYnLUkjbW5HRiQ2JEZURjk= with the base case LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYsLUkjbWlHRiQ2JVEiZkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JKG1mZW5jZWRHRiQ2JC1GIzYjLUkjbW5HRiQ2JFEiMEYnL0YzUSdub3JtYWxGJ0Y+LUkjbW9HRiQ2MFEiPUYnRj4vJSZmZW5jZUdRJmZhbHNlRicvJSpzZXBhcmF0b3JHRkYvJSlzdHJldGNoeUdGRi8lKnN5bW1ldHJpY0dGRi8lKGxhcmdlb3BHRkYvJS5tb3ZhYmxlbGltaXRzR0ZGLyUnYWNjZW50R0ZGLyUlZm9ybUdRJmluZml4RicvJSdsc3BhY2VHUS90aGlja21hdGhzcGFjZUYnLyUncnNwYWNlR0ZYLyUobWluc2l6ZUdRIjFGJy8lKG1heHNpemVHUSlpbmZpbml0eUYnLUY7NiRGZ25GPi1GQTYwUSIsRidGPkZEL0ZIRjFGSUZLRk1GT0ZRRlMvRldRJDBlbUYnL0ZaUTN2ZXJ5dGhpY2ttYXRoc3BhY2VGJ0ZlbkZobi1GQTYwUSJ+RidGPkZERkdGSUZLRk1GT0ZRL0ZUUSFGJ0Zhby9GWkZib0ZlbkZobkYrLUY2NiQtRiM2I0Zbb0Y+RkBGW28=. Let NiMvLSUiRkc2IyUiekctJSRzdW1HNiQqJi0lImZHNiMlIm5HIiIiKUYnRi9GMC9GLzsiIiElKWluZmluaXR5Rw==. A functional equation for LUklbXJvd0c2Iy9JK21vZHVsZW5hbWVHNiJJLFR5cGVzZXR0aW5nR0koX3N5c2xpYkdGJzYkLUkjbWlHRiQ2JVEiRkYnLyUnaXRhbGljR1EldHJ1ZUYnLyUsbWF0aHZhcmlhbnRHUSdpdGFsaWNGJy1JKG1mZW5jZWRHRiQ2JC1GIzYjLUYsNiVRInpGJ0YvRjIvRjNRJ25vcm1hbEYn can be obtained using the recurrence relation. Simply multiply the recurrence by NiMpJSJ6RyUibkc= and sum. It is necessary to account for the base case. unassign('f'); unassign('n'); f(n) = f(n-1) + f(n-2); Ly1JImZHNiI2I0kibkdGJSwmLUYkNiMsJkYnIiIiISIiRixGLC1GJDYjLCZGJ0YsISIjRixGLA== f(n)*z^n = z*f(n-1)*z^(n-1) + z^2*f(n-2)*z^(n-2); LyomLUkiZkc2IjYjSSJuR0YmIiIiKUkiekdGJkYoRiksJiooRitGKS1GJTYjLCZGKEYpISIiRilGKSlGK0YwRilGKSooRisiIiMtRiU2IywmRihGKSEiI0YpRikpRitGN0YpRik= Sum(f(n)*z^n,n=2..infinity) = z*Sum(f(n),n=1..infinity) + z^2*Sum(f(n),n=0..infinity);