integrate results that are different from using maxima
Update
Thanks to comment below by @rburing, it turned out to be the following setting load(abs_integrate)
which sagemath is applying before calling Maxima that is causing this problem.
Maxima 5.41.0 http://maxima.sourceforge.net using Lisp ECL 16.1.2
(%i1) domain:complex;
(%o1) complex
(%i2) display2d : false;
(%o2) false
(%i3) integrate (x*sqrt (cos (b*x + a)), x);
(%o3) 'integrate(x*sqrt(cos(b*x+a)),x)
(%i4) load(abs_integrate);
ARRSTORE: use_fast_arrays=false; allocate a new property hash table for $INTABLE2
(%o4) "/usr/share/maxima/5.41.0/share/contrib/integration/abs_integrate.mac"
(%i5) integrate (x*sqrt (cos (b*x + a)), x);
(%o5) (((1260*(b*x+a)*sin((5*(b*x+a))/2)+504*cos((5*(b*x+a))/2)
+2100*(b*x+a)*sin((3*(b*x+a))/2)
+1400*cos((3*(b*x+a))/2))
*false
-225*sin((7*(b*x+a))/2)+315*sin((5*(b*x+a))/2)+525*sin((3*(b*x+a))/2)
-1575*sin((b*x+a)/2))
/(1575*2^(5/2))
-(a*((6*sin((5*(b*x+a))/2)+10*sin((3*(b*x+a))/2))*false
-5*sin((3*(b*x+a))/2)+15*sin((b*x+a)/2)))
/(15*2^(3/2)))
/b^2
(%i6)
Therefore the question now becomes this: How could one tell Maxima, from inside SageMath to reverse the effect of the command load(abs_integrate)
, since this is causing wrong antiderivatives to be generated in these cases. And what is the reason SageMath selected to set these settings before calling Maxima?
Or is there a way a user can control these settings that SageMath is issuing under the cover before using Maxima integrate?
ps. I do not know where the word false
came from in the above antiderivative. This seems like a bug in Maxima, as it does not show in SageMath result.
Original question
Hello;
I was going to make a bug entry on this, but thought to first check with the experts here, as I have a feeling I am missing something basic or making some mistake as I am newbie in SageMath and Maxima as well.
I am getting number of wrong antiderivatives from Sagemath intergate, using default algorithm (which should be Maxima), compared to using Maxima itself for same integral.
Using Maxima (and making sure to set domain to complex first), Maxima returns unevaluated for the same command, which is actually is the correct result, since these integrals are supposed to be non integrable and meant to test to see if CAS can determine this. However, sagemath, does return an antiderivative from Maxima.
Could someone please explain how sagemath managed to return such results, and from where it obtained it since Maxima itself does not return this result? In addition, I verified the SageMath result, and they all fail the verification I did.
Here are few examples of many I have:
Example 1
SageMath version 8.3.rc1, Release Date: 2018-07-14
sage: var('x e a b f c d m');
sage: integrate ((d*sin (f*x + e) + c)^(3/2)*(b*sin (f*x + e) + a)^m, x)
1/9*(c^3*sin(9/2*f*x + 9/2*e) - 3*c^3*sin(3/2*f*x + 3/2*e))*2^(-m - 5/2)/f
The above is clearly wrong, since the anti dropped/missing the parameters d,a,b
in the integrand.
in Maxima
Maxima 5.41.0 http://maxima.sourceforge.net
using Lisp ECL 16.1.2
(%i1) domain:complex$
(%i2) domain;
(%o2) complex
(%i3) integrate ((d*sin (f*x + e) + c)^(3/2)*(b*sin (f*x + e) + a)^m, x);
/
[ m 3/2
(%o3) I (b sin(f x + e) + a) (d sin(f x + e) + c) dx
]
/
Example 2
sage: integrate(sqrt(d*sin (f*x + e) + c)*(b*sin (f*x + e) + a)^m, x,algorithm="maxima")
1/3*(c*sin(3/2*f*x + 3/2*e) - 3*c*sin(1/2*f*x + 1/2*e))*2^(-m - 3/2)/f
The above is clearly wrong, since the anti dropped/missing the parameters d,a,b
in the integrand.
Using Maxima
(%i7) integrate (sqrt (d*sin (f*x + e) + c)*(b*sin (f*x + e) + a)^m, x);
/
[ m
(%o7) I (b sin(f x + e) + a) sqrt(d sin(f x + e) + c) dx
]
/
The above is the correct result, since this integral is supposed to be non integrable.
Example 3
sage: integrate (x*sqrt (cos (b*x + a)), x,algorithm="maxima")
1/840*(70*sqrt(2)*a*(sin(3/2*b*x + 3/2*a) - 3*sin(1/2*b*x + 1/2*a)) - sqrt(2)*(15*sin(7/2*b*x + 7/2*a) - 21*sin(5/2*b*x + 5/2*a) - 35*sin(3/2*b*x + 3/2*a) + 105*sin(1/2*b*x + 1/2*a)))/b^2
The above result did not verify by differentiating the antiderivative.
Using Maxima
(%i9) integrate (x*sqrt (cos (b*x + a)), x);
/
[
(%o9) I x sqrt(cos(b x + a)) dx
]
/
The above is the correct result, since this integral is supposed to be non integrable.
example 4
sage: integrate(x*cos(b*x + a)^(3/2), x, algorithm="maxima")
1/349920*(243*sqrt(2)*a*(3*sin(15/2*b*x + 15/2*a) + 5*sin(9/2*b*x + 9/2*a) - 30*sin(3/2*b*x + 3/2*a)) - 20*sqrt(2)*(2*(81*(b*x + a)^2 - 8)*cos(9/2*b*x + 9/2*a) - 162*(9*(b*x + a)^2 - 8)*cos(3/2*b*x + 3/2*a) + 9*(27*(b*x + a)^3 - 8*b*x - 8*a)*sin(9/2*b*x + 9/2*a) - 243*(3*(b*x + a)^3 - 8*b*x - 8*a)*sin(3/2*b*x + 3/2*a)))/b^2
The above result did not verify by differentiating the antiderivative.
Using Maxima
(%i10) integrate(x*cos(b*x + a)^(3/2), x);
/
[ 3/2
(%o10) I x cos(b x + a) dx
]
/
The above is the correct result, since this integral is supposed to be non integrable.
Example 5
sage: integrate(cos (x)^(3/2)/x^3, x, algorithm="maxima")
-9/512*sqrt(2)*(25*gamma(-2, 15/2*I*x) + 9*gamma(-2, 9/2*I*x) - 2*gamma(-2, 3/2*I*x) - 2*gamma(-2, -3/2*I*x) + 9*gamma(-2, -9/2*I*x) + 25*gamma(-2, -15/2*I*x))
The above result did not verify by differentiating the antiderivative.
Maxima:
(%i11) integrate (cos (x)^(3/2)/x^3, x);
/ 3/2
[ cos(x)
(%o11) I --------- dx
] 3
/ x
The above is the correct result, since this integral is supposed to be non integrable.
Example 6
sage: integrate(cos(d*x + c)^(7/3)/sqrt(b*cos(d*x + c) + a), x,algorithm="maxima")
1/6366178138320*2^(1/6)*(61213251330*cos(13/2*d*x + 13/2*c) - 72342933390*cos(11/2*d*x + 11/2*c) - 82321269030*cos(29/6*d*x + 29/6*c) + 140430400110*cos(17/6*d*x + 17/6*c) - 217028800170*cos(11/6*d*x + 11/6*c) - 341045257410*cos(7/6*d*x + 7/6*c) + 23405066685*sin(17/2*d*x + 17/2*c) - 26525742243*sin(15/2*d*x + 15/2*c) - 29113619535*sin(41/6*d*x + 41/6*c) + 41160634515*sin(29/6*d*x + 29/6*c) - 44209570405*sin(9/2*d*x + 9/2*c) - 51898191345*sin(23/6*d*x + 23/6*c) + 56840876235*sin(7/2*d*x + 7/2*c) - 62824126365*sin(19/6*d*x + 19/6*c) + 70215200055*sin(17/6*d*x + 17/6*c) + 1193658400935*sin(1/6*d*x + 1/6*c))/(a*d)
The above result did not verify by differentiating the antiderivative.
Maxima:
(%i12) integrate (cos (d*x + c)^(7/3)/sqrt (b*cos (d*x + c) + a), x);
/ 7/3
[ cos(d x + c)
(%o12) I ------------------------ dx
] sqrt(b cos(d x + c) + a)
/
The above is the correct result, since this integral is supposed to be non integrable.
Example 7
sage: integrate(cos(d*x + c)^(2/3)/sqrt(b*cos(d*x + c) + a), x,algorithm="maxima")
-1/54264*2^(5/6)*(1071*cos(19/6*d*x + 19/6*c) + 1197*cos(17/6*d*x + 17/6*c) - 2261*cos(3/2*d*x + 3/2*c) - 2907*cos(7/6*d*x + 7/6*c) + 6783*cos(1/2*d*x + 1/2*c) + 20349*cos(1/6*d*x + 1/6*c))/(a*d)
The above result did not verify by differentiating the antiderivative.
Maxima:
(%i13) integrate (cos (d*x + c)^(2/3)/sqrt (b*cos (d*x + c) + a), x);
/ 2/3
[ cos(d x + c)
(%o13) I ------------------------ dx
] sqrt(b cos(d x + c) + a)
/
The above is the correct result, since this integral is supposed to be non integrable.
Example 8
sage: var('B A f x e b a c m')
(B, A, f, x, e, b, a, c, m)
sage: integrate((B*cos(f*x+e)+A)*(b*cos(f*x+e)+a)^(3/2)*(c*cos(f*x+e))^m,x)
1/3465*(385*(a^3*c^m*sin(9/2*f*x + 9/2*e) - 3*a^3*c^m*sin(3/2*f*x + 3/2*e))*2^(-m - 5/2)*A + 4*(231*a^3*sin(15/2*f*x + 15/2*e) + 630*a^3*sin(11/2*f*x + 11/2*e) - 770*a^3*sin(9/2*f*x + 9/2*e) + 495*a^3*sin(7/2*f*x + 7/2*e) - 2079*a^3*sin(5/2*f*x + 5/2*e) + 1155*a^3*sin(3/2*f*x + 3/2*e))*2^(-m - 13/2)*B)/f
The above result did not verify by differentiating the antiderivative.
Maxima:
(%i15) integrate((B*cos(f*x+e)+A)*(b*cos(f*x+e)+a)^(3/2)*(c*cos(f*x+e))^m,x);
/
[ m 3/2
(%o15) I (c cos(f x + e)) (B cos(f x + e) + A) (b cos(f x + e) + a) dx
]
/
The above is the correct result, since this integral is supposed to be non integrable.
Example 9
sage: integrate((B*cos(f*x+e)+A)*sqrt(b*cos(f*x+e)+a)*(c*cos(f*x+e))^m,x)
1/315*(105*(a*c^m*sin(3/2*f*x + 3/2*e) - 3*a*c^m*sin(1/2*f*x + 1/2*e))*2^(-m - 3/2)*A + (35*a*sin(9/2*f*x + 9/2*e) - 90*a*sin(7/2*f*x + 7/2*e) + 189*a*sin(5/2*f*x + 5/2*e) - 315*a*sin(3/2*f*x + 3/2*e) + 315*a*sin(1/2*f*x + 1/2*e))*2^(-m - 7/2)*B)/f
The above result did not verify by differentiating the antiderivative.
Maxima:
(%i16) integrate((B*cos(f*x+e)+A)*sqrt(b*cos(f*x+e)+a)*(c*cos(f*x+e))^m,x);
/
[ m
(%o16) I (c cos(f x + e)) (B cos(f x + e) + A) sqrt(b cos(f x + e) + a) dx
]
/
The above is the correct result, since this integral is supposed to be non integrable.
Example 10
sage: integrate((B*cos(f*x+e)+A)*(b*cos(f*x+e)+a)^(3/2)*(c*sec(f*x+e))^m,x)
-1/2520*sqrt(2)*(35*2^m*A^3*a*sin(9/2*f*x + 9/2*e) + 630*(A^3*B - A^3*a)*2^m*log(cos(1/2*f*x + 1/2*e)^2 + sin(1/2*f*x + 1/2*e)^2 + 2*sin(1/2*f*x + 1/2*e) + 1) - 630*(A^3*B - A^3*a)*2^m*log(cos(1/2*f*x + 1/2*e)^2 + sin(1/2*f*x + 1/2*e)^2 - 2*sin(1/2*f*x + 1/2*e) + 1) + 45*(2*A^3*B - A^3*a)*2^m*sin(7/2*f*x + 7/2*e) - 63*(2*A^3*B - 3*A^3*a)*2^m*sin(5/2*f*x + 5/2*e) + 105*(4*A^3*B - 5*A^3*a)*2^m*sin(3/2*f*x + 3/2*e) - 630*(4*A^3*B - 3*A^3*a)*2^m*sin(1/2*f*x + 1/2*e))/f
The above result did not verify by differentiating the antiderivative.
Maxima:
(%i17) integrate((B*cos(f*x+e)+A)*(b*cos(f*x+e)+a)^(3/2)*(c*sec(f*x+e))^m,x);
/
[ 3/2 m
(%o17) I (B cos(f x + e) + A) (b cos(f x + e) + a) (c sec(f x + e)) dx
]
/
The above is the correct result, since this integral is supposed to be non integrable.
Example 11
sage: integrate((B*cos(f*x+e)+A)*sqrt(b*cos(f*x+e)+a)*(c*sec(f*x+e))^m,x)
1/40*(20*sqrt(2)*(2^m*a*c^m*log(cos(1/2*f*x + 1/2*e)^2 + sin(1/2*f*x + 1/2*e)^2 + 2*sin(1/2*f*x + 1/2*e) + 1) - 2^m*a*c^m*log(cos(1/2*f*x + 1/2*e)^2 + sin(1/2*f*x + 1/2*e)^2 - 2*sin(1/2*f*x + 1/2*e) + 1) - 2^(m + 1)*a*c^m*sin(1/2*f*x + 1/2*e))*A + sqrt(2)*(5*2^(m + 2)*a*log(cos(1/2*f*x + 1/2*e)^2 + sin(1/2*f*x + 1/2*e)^2 + 2*sin(1/2*f*x + 1/2*e) + 1) - 5*2^(m + 2)*a*log(cos(1/2*f*x + 1/2*e)^2 + sin(1/2*f*x + 1/2*e)^2 - 2*sin(1/2*f*x + 1/2*e) + 1) - 2^(m + 1)*a*sin(5/2*f*x + 5/2*e) + 5*2^(m + 1)*a*sin(3/2*f*x + 3/2*e) - 15*2^(m + 2)*a*sin(1/2*f*x + 1/2*e))*B)/f
The above result did not verify by differentiating the antiderivative.
Maxima:
(%i18) integrate((B*cos(f*x+e)+A)*sqrt(b*cos(f*x+e)+a)*(c*sec(f*x+e))^m,x);
/
[ m
(%o18) I (B cos(f x + e) + A) sqrt(b cos(f x + e) + a) (c sec(f x + e)) dx
]
/
The above is the correct result, since this integral is supposed to be non integrable.
Sage sets some Maxima settings before passing
integrate
(or any) calls to Maxima, e.g.This could account for the discrepancy.