Axiom doesn't seem to do the integral of sin(x^2), but both Maxima and Mathematica (per http://integrals.wolfram.com/ anyway) produce answers. Confirmed by Martin Rubey, and uploaded at his request to IssueTracker. CY axiom integrate(sin(x**2),x)
Type: Union(Expression Integer,...)
However:
Maxima 5.9.1.1cvs http://maxima.sourceforge.net
Using Lisp CMU Common Lisp 19b (19B)
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
This is a development version of Maxima. The function bug_report()
provides bug reporting information.
(%i1) integrate(sin(x**2),x);
(sqrt(2) %i + sqrt(2)) x
(%o1) sqrt(%pi) ((sqrt(2) %i + sqrt(2)) erf(------------------------)
2
(sqrt(2) %i - sqrt(2)) x
+ (sqrt(2) %i - sqrt(2)) erf(------------------------))/8
2
(%i2)
(new) --Bob McElrath?, Fri, 19 Aug 2005 11:13:26 -0500 reply It's worth noting that both Maple and Mathematica produce the FresnelS?
function, which is defined in terms of this integral. However, the
Maxima answer appears to be correct as well.
Note that axiom f := sin(x^2)
Type: Expression Integer
axiom 4*x^3*f - D(f,x) + x*D(f,x,2)
Type: Expression Integer
Thus integration should be "easy"... I browsed the web a little more and came to the conclusion that the Risch algorithm only deals with elementary functions whose integral is elementary, too. "Clearly" (looking at maxima's output or browsing the web),PatternMatchIntegration package. This would not be too difficult, probably.
Martin Although this does not really solve the original problem, I think I found a bug inINTPM. Currently, there is an operation:
pmComplexintegrate(f, x) ==
(rc := splitConstant(f, x)).const ^= 1 =>
(u := pmintegrate(rc.nconst, x)) case "failed" => "failed"
rec := u::ANS
[rc.const * rec.special, rc.const * rec.integrand]
cse := (rec := matcherfei(f, x, true)).which
cse = ERF => [rec.coeff * erf(rec.exponent), 0]
"failed"
It is pretty obvious that the third line should read:
(u := pmComplexintegrate(rc.nconst, x)) case "failed" => "failed"
instead. If we perform this change, we get instead of axiom complexIntegrate(-%i/2*e^(%i*x^2),x)
Type: Expression Complex Integer
the correct answer, same for axiom complexIntegrate(%i/2*e^(-%i*x^2),x)
Type: Expression Complex Integer
For some reason, it still won't do axiom complexIntegrate(sin(x^2),x)
Type: Expression Integer
Curiously, the pattern matcher is not even invoked in this case... Even if we enter the integral as axiom complexIntegrate(-%i/2*e^(%i*x^2)+%i/2*e^(-%i*x^2),x)
Type: Expression Complex Integer
it fails, although in this case the pattern matcher is invoked. It would need to be invoked on each summand seperately, though. Martin There is another issue I don't quite understand. Currently axiom returns the whole integral unevaluated if it does not manage to evaluate it completely. If it were not for the bug #199, the following were an example:axiom integrate(exp(x)/x+exp(-x^2)+1/log(x),x)
Type: Union(Expression Integer,...)
Although axiom produces the intermediate result
rinteg(i, f, x, h, comp) ==
not elem? i => integral(f, x)$F
empty? rest(l := [mkPrimh(f, x, h, comp) for f in expand i]) => first l
l
Does this make sense? Martin partially fixed in FriCAS |


