On 11/23/23 09:21, Waldek Hebisch wrote:
On Thu, Nov 23, 2023 at 08:35:02AM +0800, Qian Yun wrote:
Here are my thoughts:

Couldn't we utilize the same trick used in section 2.8
"Riboo's Algorithm for Real Rational Functions"?

When it works, yes.
 From my observations, most (if not all) rootSum has the
following structure:

rootSum(p(a), a*log(q(a)+f(x))), where p,q are polynomials
and f is a general function.

{
   rootSum(p(a), a*log(q(a)*g(x)+f(x))) can be written as
   rootSum(p(a), a*log(q(a)+f(x)/g(x))+a*log(g(x)))
}

So if p, q have real (this condition can be relaxed?) coefficients, then

rootSum(p(a), a*log(q(a)+f(x))) =
   rootSum(p(a) | real? a, a*log(q(a)+f(x))) +
   rootSum((u,v), 1/2*u*log((A(u,v) + f(x))^2 + B(u,v)^2)) +
   rootSum((u,v), 1/2*v*atan((A(u,v) + f(x))/B(u,v)))

{where u+%i*v is complex root of p(a).  q(u+%i*v)= A(u,v) + %i*B(u,v)}

Not that the summation is over all of v, not limited to positive v.

Trouble here is with A(u,v) and B(u,v).  Already when p is of degree
4 with Galois group S(4) we have trouble: beside right solutions
there are spurious ones and it is hard to separate good ones from
spurious one.

Consider

p := 10*(a^4 + 1) + a

and

rootSum(a*log(x - a), p::SUP(EXPR(INT)))

How you want to find right u, v?  The approach I described
works around difficulty with u, v by working with coefficients
of p.  We still have difficulty with final result, but it is
less problematic: we need to choose positive real root of
a polyniomial.  Note that the polynomial is minimal polynomial
for the answer, so we need to choose this root directly or
indirectly.  But we can avoid trouble with u and v.


In this particular case, B(u, v) = - v, when v is positive, B is
negative.  So for this case, limit when x is +infinity is
  rootSum(-%pi*v, V(v) where v is real and positive)

V(v) can be achieved by resultant:

p := 10*(a^4 + 1) + a
puv := eval(p,a=u+%i*v)
P := real puv
Q := imag puv
V := resultant(univariate(P, second kernels P), univariate(Q, second kernels P))::POLY INT

40960000000*v^16+20480000000*v^12+(-166400000)*v^10+(-17920000000)*v^8+(-86400000)*v^6+2559973000*v^4

countRealRoots V returns 5, which is a 0 (ignore) and 2 positive v and
2 negative v (come in pairs), which is the correct number of v.

This does not scale for more complex B(u, v) though.

- Qian

--
You received this message because you are subscribed to the Google Groups "FriCAS - 
computer algebra system" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/fricas-devel/cf6d71c4-65c2-4d4b-bd7b-99e3794dfa4a%40gmail.com.

Reply via email to