read desing: # read the Maple code (for Maple 8 and up). with(DEtools): _Envdiffopdomain := [Dx,x]; # An example with only one singularity, which is an apparant singularity. lprint("Example 1:"); L := LCLM(Dx^2-x,Dx^2-x-x^2); Multiply_on_the_left_by := desing(L); DesingularizedOperator := mult(%, L); # finite singularities are gone. # Some more example where all finite singularities are apparant. # lprint("Example 2:"); L := LCLM(Dx^3-x^2,Dx^4-x^2); Multiply_on_the_left_by := desing(L); DesingularizedOperator := mult(%, L); # finite singularities are gone. lprint("Example 3:"); L := LCLM( Dx^3+x, Dx^4-x); Multiply_on_the_left_by := desing(L); DesingularizedOperator := mult(%, L); # finite singularities are gone. lprint("Example 4:"); # This desing implementation always finds a desingularization of minimal # order but is not optimal in the sense that it usually # makes the singularity at x=infinity worse even in the special # case where this is avoidable. For example L := LCLM(Dx-1/(x-1), Dx-3/x); # has a desingularization Dx^4 that is simpler than # the desingularization of the same order found by our implementation: Multiply_on_the_left_by := desing(L); DesingularizedOperator := mult(%,L); lprint("Example 5:"); # An example in the paper: L := Dx^2+1: # has solutions cos(x),sin(x). L := symmetric_product(L, Dx-1/x); # has solutions x*cos(x), x*sin(x). Multiply_on_the_left_by := desing(L); DesingularizedOperator := mult(%,L);