axiom-developer
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Axiom-developer] [#199 integrate(exp(-x^2)+exp(x)/x,x)]


From: kratt6
Subject: [Axiom-developer] [#199 integrate(exp(-x^2)+exp(x)/x,x)]
Date: Sat, 20 Aug 2005 15:16:20 -0500

Changes 
http://page.axiom-developer.org/zope/mathaction/199IntegrateExpX2ExpXXX/diff
--
The problem is in 'expintegratepoly$INTTR'. There you find the following 
definition::

  -- returns either
  --   (q in GP, a in F)  st p = q' + a, and a=0 or a has no integral in F
  -- or (q in GP, r in GP) st p = q' + r, and r has no integral elem/UP
      expintegratepoly(p, FRDE) ==
        coef0:F := 0
        notelm := answr := 0$GP
        while p ^= 0 repeat
          ans1 := FRDE(n := degree p, a := leadingCoefficient p)
          answr := answr + monomial(ans1.ans, n)
          if ~ans1.sol? then         -- Risch d.e. has no complete solution
               missing := a - ans1.right
               if zero? n then coef0 := missing
                          else notelm := notelm + monomial(missing, n)
          p   := reductum p
        zero? notelm => [answr, coef0]
      [answr, notelm]

In principle, this function takes a polynomial 'p' and tries to integrate every 
coefficient. If it finds an answer, it adds it to 'answr', otherwise to 
'notelm'. Note however, that the constant term of the 'p' will never get added 
to 'notelm', even if it was not possible to integrate it. So maybe the last 
line should read::

      [answr, notelm+monomial(coef0, 0)]

This seems to "work", i.e., the integrals are then returned unevaluated. 
However, I'd rather have axiom to use the linearity of the integral...
Note that

\begin{axiom}
integrate(exp(-x^2)+sin(x),x)
\end{axiom}

is an example for an integral where 'coef0' does not vanish but 'notelm' does. 
So the more drastic change::

          if ~ans1.sol? then         -- Risch d.e. has no complete solution
               missing := a - ans1.right
               if zero? n then coef0 := missing
               notelm := notelm + monomial(missing, n)
          p   := reductum p
        zero? notelm => [answr, coef0]
      [answr, notelm]

is not necessary - but does not produce wrong results either.

By the way, here are some other - strange - manifestation of the same bug:

\begin{axiom}
integrate(exp(-x^2)+1/x,x)
integrate(exp(x)/x+1/x,x)
\end{axiom}

Although $1/x$ is certainly elementary, and so is its integral, the bug 
manifests itself.

Martin
--
forwarded from http://page.axiom-developer.org/zope/mathaction/address@hidden




reply via email to

[Prev in Thread] Current Thread [Next in Thread]