The post Integration error by Ajit Kumar reports a wrong integration result. I did some experiments and think there is an error in the integrate function - see attachment. The sign of the result should not change if you change what is essentially a constant factor.
Albrecht Mueller
2013-05-08
As you can see in the attatchment, the error affects at least two versions of Maxima: 5.19.2 and 5.28.0-2.
Aleksas
2013-05-16
Problem. Find the volume of the intersection of the cylinder with x^2+y^2=a*x and the sphere x^2+y^2+z^2<=a^2.
See: W.Ledermann
Multiple Integrals - Page 64 - Google Books Result
books.google.lt/books?id=g1A9AAAAIAAJ
Example 14 (Viviani's Problem). Find the part of the sphere x2 + y2 + z2 < a2 which lies inside the vertical (unlimited) cylinder which intersects the (x, v)-plane in ...
(%i1) assume(a>0,sin(phi)>0,cos(phi)>0);
(%o1) [a>0,sin(phi)>0,cos(phi)>0]
Wrong:
(%i2) V=4integrate(integrate(sqrt(a^2-r^2)r,r, 0,acos(phi)),phi,0,%pi/2);
(%o2) V=(2(3%pi+4)a^3)/9
Correct:
(%i3) V=4'integrate(integrate(sqrt(a^2-r^2)r,r, 0,acos(phi)),phi,0,%pi/2);
(%o3) V=4integrate((sqrt(a^2-a^2cos(phi)^2)(a^2cos(phi)^2-a^2))/3+a^3/3,phi,0,%pi/2)
(%i4) trigsimp(%);
(%o4) V=(4integrate(a^3-a^3sin(phi)^3,phi,0,%pi/2))/3
(%i5) ev(%, nouns);
(%o5) V=(2(3%pi-4)a^3)/9
Where is the mistake?
best
Aleksas D
Robert Dodier
2013-06-17
Douglas Davis
2013-08-08
I have had similar issues with integrations of trigonometric functions to find the average magnitude. The simplest error I could generate was
integrate(sqrt(cos(x)+1), x, -%pi, %pi);
gives 0 which should be 2*sqrt(2);
I tried various assume statements to no avail.
Albrecht Mueller
2013-08-09
Using your example, I did some experiments, especially considering the equivalence cos(x) + 1 = 2(cos(x/2))^2, thus sqrt(cos(x) + 1) = sqrt(2)*abs(cos(x/2)).
I tried indefinite integration using the "integrate" and the "risch" function.
Neither "integrate" nor "risch" were able to integrate sqrt(2)*abs(cos(x/2)).
risch(sqrt(cos(x) + 1),x) = risch(sqrt(2)*cos(x/2), x) = integrate(sqrt(2)*cos(x/2), x) = 2^(3/2)*sin(x/2).
The result of risch(sqrt(cos(x) + 1),x) is wrong as it gives the integral of sqrt(2)*cos(x/2) and not of sqrt(2)*abs(cos(x/2)).
integrate(sqrt(cos(x) + 1),x) gives (2^(3/2)*sin(x))/((cos(x)+1)*sqrt(sin(x)^2/(cos(x)+1)^2+1)) which I cannot reduce to the result of the other integrations.
integrate(sqrt(2)*cos(x/2), x, -%pi, %pi) gives 2^(5/2). I think this is correct, as cos(x/2) is not negative between -%pi and %pi.
integrate(sqrt(cos(x) + 1), x, 0, %pi) asks "Is cos(x)-1.0 positive or negative?". I entered both "p" and "n". In both cases the result was 2^(3/2).
integrate(sqrt(cos(x) + 1), x, -%pi, 0) gave -2^(3/2), however. Due to the symmetry of cos this should be the same result as before.
Trying to do the definite integration "by hand":
lambda([x], (2^(3/2)*sin(x))/((cos(x)+1)*sqrt(sin(x)^2/(cos(x)+1)^2+1)))(-%pi);
This results in:
Division by 0
#0: lambda([x],2^(3/2)*sin(x)/((cos(x)+1)*sqrt(sin(x)^2/(cos(x)+1)^2+1)))(x=-%pi)
-- an error. To debug this try debugmode(true);
or
expt: undefined: 0 to a negative exponent.
#0: lambda([x],2^(3/2)*sin(x)/((cos(x)+1)*sqrt(sin(x)^2/(cos(x)+1)^2+1)))(x=-%pi)
-- an error. To debug this try: debugmode(true);
I tried this with:
Maxima version: 5.19.2
Maxima build date: 8:55 8/31/2009
host type: i686-pc-mingw32
lisp-implementation-type: GNU Common Lisp (GCL)
lisp-implementation-version: GCL 2.6.8
and with:
build_info("5.28.0-2","2012-08-27 23:16:48","i686-pc-mingw32","GNU Common Lisp (GCL)","GCL 2.6.8")
Albrecht Mueller
2013-10-05
This problem came up again, see http://sourceforge.net/p/wxmaxima/discussion/435775/thread/186869a1
Therefore I did some further analysis.
Maximas solution of
integrate(sqrt(1+cos(x)),x)
is, after some simplification (radcan, trigreduce, factor)
2 * sin(x) / sqrt(cos(x)+1)
This solution has singularities at (2n + 1)%pi, where n is an integer. The solution is not continuous:
limit(2 * sin(x) / sqrt(cos(x)+1), x, %pi, minus);
evaluates to 2 ^(3/2) while
limit(2 * sin(x) / sqrt(cos(x)+1), x, %pi, plus);
evaluates to - 2 ^(3/2)
I think the correct solution is something like
2 * sin(x) / sqrt(cos(x) + 1) + 4*sqrt(2)*floor((x+%pi)/(2*%pi))
or (in order to avoid singularities)
2*sqrt(2)*sin(x/2)*(1-2*mod(floor((x+%pi)/(2*%pi)),2)) + 4*sqrt(2)*floor((x+%pi)/(2*%pi))
Maxima should come up with this sort of solution. When calculating definite integrals, Maxima should check if there are any singularities (denominator is zero, cot(0), etc) in the integration range, and issue a warning, if it detects this kind of problems.
Albrecht Mueller
2013-11-17
There is a package to handle piecewise continuous functions: pw.mac by Richard Hennessy which seems to contain code that could be useful to implement a better support of this kind of situations. For more details see thread how to calculate integrate(abs(sin(x)), x, 0, %pi);.