Maple Conversion Command

138 Views Asked by At

I am aware Maple has many commands of the form convert(a,b), where $a$ is usually an expression and $b$ can be a lot of different things, such as parfrac.

I've been doing some practice questions, and I'm stumped on this one: If I wanted to convert $\dfrac{1}{2x^3+x^2+2x}$ into $\dfrac{1}{2x}+\dfrac{-\frac{1}{4}+I\frac{\sqrt{15}}{60}}{x+\frac{1}{4}-I\frac{\sqrt{15}}{4}}+\dfrac{-\frac{1}{4}-I\frac{\sqrt{15}}{60}}{x+\frac{1}{4}+I\frac{\sqrt{15}}{4}}$, what would $b$ be in convert(a,b)? ( I know $a$ is obviously the expression.)

I is the imaginary unit in Maple.

2

There are 2 best solutions below

1
On BEST ANSWER

Use this one instead:

[> f := 1/(2*x^3+x^2+2*x):
 convert(f, parfrac, complex):
 evalf(%);

         (-.25+0.65e-1*I)/(x+.25-.97*I)+.50/x+(-.25-0.65e-1*I)/(x+.25+.97*I)
0
On

You asked about an exact symbolic (ie. not floating point) form as the result.

Below are two approaches. The first is to subsequently apply the identify command to an answer (containing floats) obtained by using the complex option to the convert call. Such an approach often will not work on more involved results.

The second approach below involves trying to figure out a factorization and thus the extension field which may be supplied as another optional argument to the convert call. This is followed by a minor rearrangement in order to get 1 as the coefficient of the leading terms of the polynomials in the denominators, similar to how you cast it.

restart:

a:=1/(2*x^3+x^2+2*x):

# One way...

sort(identify(convert(a,parfrac,complex)));

          1    1    (1/2)  (1/2)      1    1    (1/2)  (1/2) 
        - - - -- I 3      5         - - + -- I 3      5      
   1      4   60                      4   60                 
  --- + ------------------------- + -------------------------
  2 x       1   1    (1/2)  (1/2)       1   1    (1/2)  (1/2)
        x + - + - I 3      5        x + - - - I 3      5     
            4   4                       4   4                

# Another (somewhat successful) way...

A:=denom(a);

                          /   2        \
                        x \2 x  + x + 2/

Q:=map(radnormal,
       convert(a, parfrac,
               {I} union indets([solve(A/x^(ldegree(A)))],radical)
               )
       );

                  (1/2)                            (1/2)     
        -15 + I 15              1         15 + I 15          
   ------------------------- + --- - ------------------------
      /     (1/2)          \   2 x      /    (1/2)          \
   15 \-I 15      + 4 x + 1/         15 \I 15      + 4 x + 1/

sort(add(subs(R=(numer(1/t)/lcoeff(numer(1/t))),
              S=denom(1/t)/lcoeff(numer(1/t)),
              S/R),
         t in Q));

                1    1     (1/2)      1    1     (1/2) 
              - - + -- I 15         - - - -- I 15      
         1      4   60                4   60           
        --- + ------------------- + -------------------
        2 x       1     (1/2)   1       1     (1/2)   1
              x - - I 15      + -   x + - I 15      + -
                  4             4       4             4