login  home  contents  what's new  discussion  bug reports help  links  subscribe  changes  refresh  edit

# Edit detail for Symbolic Integration revision 5 of 12

 1 2 3 4 5 6 7 8 9 10 11 12 Editor: test1 Time: 2013/06/24 19:18:54 GMT+0 Note:

changed:
-  AXIOM Examples
Risch-Bronstein-Trager algorithm (Risch algorithm in short) is a complete algorithom
for integration in terms of elementary functions.  The algorithm either finds elementary integral
or proves that there is none.  Existence of elementary integral is relatively
rare, so given random elementary function probably does not have elementary
integral.  FriCAS implementation of Risch algorithm is probably the
"most complete" existing implementation.  Unfortunatly "most complete" does
not mean complete, some parts are still unimplemented.  Unlike some other
systems FriCAS will not give you unevaluated result when hitting unimplemented
part.  Instead, it signals error with message indicating that given integral
requires unimplemented part.  So when FriCAS returns unevaluated result
almost surely there is on elementary integral.  Almost surely, because
as all programs FriCAS may have bugs...

FriCAS in fact implements extension of Risch algorithm which extends class of integrands
to some Liouvillian functions and for integration in terms of Ei, Si, Ci, li and
polylog.  While there is complete extended algorithm current FriCAS implementation
contains considerable gaps.  Nevertheless, FriCAS can handle a lot of examples
involving special functions that no other system can handle.

Additionaly to Risch integrator FriCAS contains releativlu weak pattern matching
integrator which can generate a few special function -- in addition to  Ei, Si, Ci, li
it also can generate erf, fresnelC and fresnelS.  However, if integral really requires
elliptic functions then the best thing which FriCAS can do is to prove that integral
is nonelementary.

FriCAS Examples

Unevaluated result means that FriCAS proved that result is not elementary and can not
find nonelementary result.

In this case FriCAS neither can compute elementry result nor can it prove that result is not elementary,
is it gives up with error message indicating that the handling this integral requires unimplemented
part of Bronstein-Trager algorithm.

changed:
-    That seems strange given the claims about the "completeness" of
-    Axiom's integration algorithm! But to be fair, Maple also returns
-    this integral unevaluated.
Again, this integral needs unimplemented part of Bronstein-Trager algorithm.

This time FriCAS can prove that result is nonelementary (it needs elliptic functions).

This one fails due to too weak limit:

integrate(x^6*exp(-x^2/2)/sqrt(%pi*2),x)

changed:
-Subject: integrate(exp(x)/x^2)
-Message-ID: <20050825055753-0500@page.axiom-developer.org>
-
-Axiom does not perform the integration (while it perform the integration of exp(x)/x ), but the integration can be given in terms of Ei(x)
-
-integrate(exp(x)/x^2,x)  -->  Ei(x)-exp(x)/x

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


Errors in symbolic integration

Risch-Bronstein-Trager algorithm (Risch algorithm in short) is a complete algorithom for integration in terms of elementary functions. The algorithm either finds elementary integral or proves that there is none. Existence of elementary integral is relatively rare, so given random elementary function probably does not have elementary integral. FriCAS? implementation of Risch algorithm is probably the "most complete" existing implementation. Unfortunatly "most complete" does not mean complete, some parts are still unimplemented. Unlike some other systems FriCAS? will not give you unevaluated result when hitting unimplemented part. Instead, it signals error with message indicating that given integral requires unimplemented part. So when FriCAS? returns unevaluated result almost surely there is on elementary integral. Almost surely, because as all programs FriCAS? may have bugs...

FriCAS? in fact implements extension of Risch algorithm which extends class of integrands to some Liouvillian functions and for integration in terms of Ei, Si, Ci, li and polylog. While there is complete extended algorithm current FriCAS? implementation contains considerable gaps. Nevertheless, FriCAS? can handle a lot of examples involving special functions that no other system can handle.

Additionaly to Risch integrator FriCAS? contains releativlu weak pattern matching integrator which can generate a few special function -- in addition to Ei, Si, Ci, li it also can generate erf, fresnelC and fresnelS. However, if integral really requires elliptic functions then the best thing which FriCAS? can do is to prove that integral is nonelementary.

FriCAS? Examples

1)

fricas
integrate(sin(x)+sqrt(1-x^3),x)
 (1)
Type: Union(Expression(Integer),...)

Unevaluated result means that FriCAS? proved that result is not elementary and can not find nonelementary result.

 int(sin(x)+sqrt(1-x^3),x); reduce

2)

fricas
integrate(sqrt(1-log(sin(x)^2)),x)
>> Error detected within library code:
integrate: implementation incomplete (constant residues)

In this case FriCAS? neither can compute elementry result nor can it prove that result is not elementary, is it gives up with error message indicating that the handling this integral requires unimplemented part of Bronstein-Trager algorithm.

 int(sqrt(1-log(sin(x)^2)),x); reduce

3)

fricas
integrate(sqrt(sin(1/x)),x)
>> Error detected within library code:
integrate: implementation incomplete (constant residues)

Again, this integral needs unimplemented part of Bronstein-Trager algorithm.

 int(sqrt(sin(1/x)),x); reduce

4)

fricas
integrate(sqrt(sin(x)),x)
 (2)
Type: Union(Expression(Integer),...)

This time FriCAS? can prove that result is nonelementary (it needs elliptic functions).

 int(sqrt(sin(x)),x); reduce

For this Maple 9 gives the following result:

 (3)

And Mathematica 4 gives:

 (4)

symbolic integration
Tue, 22 Mar 2005 11:48:00 -0600 reply
fricas
integrate(exp(-x^2),x)
 (5)
Type: Union(Expression(Integer),...)
Errorfunction
Wed, 23 Mar 2005 08:23:21 -0600 reply
fricas
integrate(exp(-x^2/2)/sqrt(%pi*2),x=%minusInfinity..%plusInfinity)
 (6)
Type: Union(f1: OrderedCompletion?(Expression(Integer)),...)

fricas
integrate(x,x)
 (7)
Type: Polynomial(Fraction(Integer))

This one fails due to too weak limit:

fricas
integrate(x^6*exp(-x^2/2)/sqrt(%pi*2),x=%minusInfinity..%plusInfinity)
 (8)
Type: Union(f1: OrderedCompletion?(Expression(Integer)),...)
fricas
integrate(x^6*exp(-x^2/2)/sqrt(%pi*2),x)
 (9)
Type: Union(Expression(Integer),...)

 (10)

... --unknown, Thu, 25 Aug 2005 05:57:53 -0500 reply
fricas
integrate(exp(x)/x^2,x)
 (11)
Type: Union(Expression(Integer),...)

fricas
integrate(sqrt(x), x)
 (12)
Type: Union(Expression(Integer),...)

fricas
integrate(a*x,x)
 (13)
Type: Polynomial(Fraction(Integer))