someone wrote:
>
> At some point we should start documenting what part of Risch
> and which extensions are implemented in one central place.
> And also under what circumstances it failes, where the
> gaps and missing bits are.
>
Theoretically situation is clear:
- transcendental part of Risch is considered implemented
- in algebraic part we have errors in places corresponding
to unimplemeted parts. Search for things like FAIL.
Notably, current integrator can not determine logarithmic
part, polynomial part nor solve RDE in general case
of algebraics depending on tanscendental.
In partucular integrator is supposed to return unevaluated
integral only when it is nonelementary.
In practice we have:
(255) -> integrate(sqrt(tan(x)^2 + 2*tan(x) + 2), x)
x +-----------------------+
++ | 2
(255) | \|tan(%A) + 2tan(%A) + 2 d%A
++
Type: Union(Expression(Integer),...)
but the integral is elementary. The problem is caused by
factoring over rationals, while we should factor over appropriate
algebraice extension.
Also:
(258) -> t1 := exp(x)
x
(258) %e
Type: Expression(Integer)
(259) -> t2 := exp(1/(1 + t1))
1
-------
x
%e + 1
(259) %e
Type: Expression(Integer)
(260) -> t3 := log(x*t2)
1
-------
x
%e + 1
(260) log(x %e )
Type: Expression(Integer)
(261) -> integrate(D(t3^2 -2*(1/(1+t1))*t3, x), x)
(261)
INTSIGN
,
x
,
1
--------
%A
%A 3 %A 2 %A %e + 1 %A 2
(2(%e ) + 6(%e ) + 6%e + 2)log(%A %e ) - 2(%e )
+
%A
(2%A - 4)%e - 2
/
%A 3 %A 2 %A
%A (%e ) + 3%A (%e ) + 3%A %e + %A
*
d%A
Type: Union(Expression(Integer),...)
This one is caused by integrator assuming that the integral can
be done using existing logarithms from base field. Elementary
integral can always be done using logarithms from base field,
but if one insists of using specific logarithms, then
logarithms from extensions may help. In particular, above
integrator discards 't3' as useless in integrating '1/x' but
in fact 't3' is needed:
(263) -> D(t3, x) - D(t2,x)/t2
1
(263) -
x
Type: Expression(Integer)
The things above may be considered bugs, but fixing them requires
writing new routines. I have fixed a few bugs in rdeef related
to Bronstein "weakly normalized" condition but I think that
it still has problem, because it makes assumption which
currently is not valid (we need extra code elsewere to
make sure it holds). Other suspect place (related to bug
above) is limited integration routine -- it seems to make
too strong assumption on how logs may appear in an integral.
We have partial implementation for extension of Risch algorithm
to fields containing primitives. Missing part is parametric
integration routine -- currently this is done by 'lfextlimint'
but the method is a hack which only works in simple cases.
We need more general routine.
Uniplemented part of 'li' routine are somewhat like bugs above:
we should factor taking into account algebraics, we should
arrange logs in special way (condition is the same as
needed for routine responsible for "weakly normalized").
The 'Ei' routine has the same problems like 'li'. Extra
missing part is handling of 'Ei(f)' where top transcendental
in 'f' does not appear in denominator of f'/f. The
exponential case of 'polylog' routine has similar problems
like 'li' and extra one due to possibility of terms like
'(f1+f2)/(exp(k*f1)exp(f2) - 1)' with |k| > 1, where 'f1' contains
top transcenental (currently the routine may miss corresponding
polylog terms).
--
Waldek Hebisch
[email protected]
--
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 post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/fricas-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.