#Sowmya Srinivasan hw17.txt 27 March 2014 #SIrec(L,Ini,f,m,n) inputs lists L,Ini, expression f in variable m, and n , #and outputs solution to #a(n)=L[1]*a(n-1)+L[2]*a(n-2)+ ... + L[-1]*a(n-nops(L))+f(n) SIrec:=proc(L,Ini,f,m,n) local i: option remember: if nops(L)<>nops(Ini) then print(Ini, L, `should be lists of the SAME length `): RETURN(FAIL): fi: if n<0 then 0: elif nnops(Ini)+nops(Fini) then RETURN(FAIL): fi: var:={seq(a[i],i=0..N)}: eq:={seq(a[i]=Ini[i+1],i=0..nops(Ini)-1), seq(a[N-i]=Fini[i+1],i=0..nops(Fini)-1)}: eq:= eq union {seq(a[i]-add(L[j]*a[i-j],j=1..nops(L))-subs(n=i,f), i=nops(L)..N)}: var:=solve(eq,var): if var=NULL then RETURN(FAIL): else subs(var,[seq(a[i],i=0..N)]): fi: end: