# $Source: /u/maple/research/lib/DEtools/src/RCS/eigenring,v $ # $Notify: hoeij@sci.kun.nl $ macro( DF=`DEtools/diffop/DF`, x=`DEtools/diffop/x`, eigenring=`DEtools/diffop/eigenring`, endomorphism_charpoly=readlib(`DEtools/diffop/endomorphism_charpoly`), readlibs=readlib(`DEtools/diffop/readlibs`) ): # Input a differential operator L # Output: the eigenring `DEtools/eigenring`:=proc(L,domain) local d,v; option `Copyright (c) 1997 Waterloo Maple Inc. All rights reserved.`; d:=[args]; if indets(d,radical)<>{} then d:=procname(op(subs(readlib(`radnormal/radfield2`)(d,'v'),d))); RETURN(subs(eval(v),d)) fi; d:=`if`(nargs>1 and type(domain,list),domain,_Envdiffopdomain); if nops(d)<>2 then ERROR(`differential algebra not specified`) fi; _Envdiffopdomain:=d; # for the userinfo's in diffop. # load all files used by the eigenring code: readlibs(eigenring): # call the eigenring code subs(DF=d[1],x=d[2], eigenring(subs(d[1]=DF,d[2]=x,L),args[2..nargs])) end: # Input a differential operator L and a differential operator r: V(L) -> V(L) # Output: the characteristic polynomial of this map r. `DEtools/endomorphism_charpoly`:=proc(L,r,domain) local d,v; option `Copyright (c) 1997 Waterloo Maple Inc. All rights reserved.`; d:=[args]; if indets(d,radical)<>{} then d:=procname(op(subs(readlib(`radnormal/radfield2`)(d,'v'),d))); RETURN(subs(eval(v),d)) fi; d:=`if`(nargs>2,domain,_Envdiffopdomain); if nops(d)<>2 then ERROR(`differential algebra not specified`) fi; # call the endomorphism_charpoly code subs(DF=d[1],x=d[2], endomorphism_charpoly(op(subs(d[1]=DF,d[2]=x,[L,r])))) end: #savelib('`DEtools/eigenring`','`DEtools/eigenring.m`'): #savelib('`DEtools/endomorphism_charpoly`','`DEtools/endomorphism_charpoly.m`'):