> #ok to post ; > #Yifan Zhang, hw7, 09/29/30 ; > ; > ; > #Q1. ; > GFseq:=proc(f,x,N) local f1,i: > f1:=taylor(f,x=0,N+1): > [seq(coeff(f1,x,i),i=0..N)]: > end: > GFseq(1/(1-x-x^2-x^3),x,30); [1, 1, 2, 4, 7, 13, 24, 44, 81, 149, 274, 504, 927, 1705, 3136, 5768, 10609, 19513, 35890, 66012, 121415, 223317, 410744, 755476, 1389537, 2555757, 4700770, 8646064, 15902591, 29249425, 53798080] ; > #OEIS: A73 Tribonacci numbers: a(n) = a(n-1) + a(n-2) + a(n-3) for n >= 3 with a(0) = a(1) = 0 and a(2) = 1. ; > ; > GFseq(1/(1-x+x^2-x^3),x,30); [1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0] ; > GFseq(exp(-x)/(1-x),x,30); [1, 0, 1/2, 1/3, 3/8, 11/30, 53/144, 103/280, 2119/5760, 16687/45360, 16481/ 44800, 1468457/3991680, 16019531/43545600, 63633137/172972800, 2467007773/ 6706022400, 34361893981/93405312000, 15549624751/42268262400, 8178130767479/ 22230464256000, 138547156531409/376610217984000, 92079694567171/250298560512000 , 4282366656425369/11640679464960000, 72289643288657479/196503623737344000, 6563440628747948887/17841281393295360000, 39299278806015611311/ 106826515449937920000, 9923922230666898717143/26976017466662584320000, 79253545592131482810517/215433472824041472000000, 5934505493938805432851513/ 16131658445064225423360000, 14006262966463963871240459/ 38072970106357874688000000, 461572649528573755888451011/ 1254684545727217532928000000, 116167945043852116348068366947/ 315777214062132212662272000000, 3364864615063302680426807870189/ 9146650338351415815045120000000] ; > ; > ; > ; > #Q2. ; > Rec:=proc(P,n) local L, INI,k,i: > option remember: > > #We first unpack P > L:=P[1]: > INI:=P[2]: > > k:=nops(L): > > if nops(INI)<>k then > print(INI, `should have`, k, `entries `): > RETURN(FAIL): > fi: > > > if n #For this case we use the initial condition, since list in Maple start at index 1, we need to access INI[n+1] > RETURN(INI[n+1]): > else > #We use the definig recurrence > add(L[i]*Rec(P,n-i),i=1..k): > fi: > > end: > SeqRec:=proc(P,N) local n: > [seq(Rec(P,n),n=0..N)]: > end: > evalb(SeqRec([[1,1],[0,1]],30)=GFseq(x/(1-x-x^2),x,30)); true ; > #Both of them are: f(n)=f(n-1)+f(n-2), for f(0)=0 and f(1) = 1. ; > ; > ; > ; > #Q3. ; > #1) a(n) = 3*a(n-1)-5*a(n-2), a(0)=1, a(1)=0 ; > #This is a second-order linear recurrence with constant coefficient [[3,-5], [1,0]]; > ; > #2)a(n) = c1*a(n-1)+c2*a(n-2)+...+ck*a(n-k), c1=1, c2=c3=...=ck=0 ; > #This is a k-th order linear recurrence with constant coefficient [[c1,c2,c3,...,ck], [1,0,0,0,.....,0]]. ; > ; > ; > ;