why ECL says: Error executing code in Maxima: expt: undefined: 0 to a negative exponent
Why the error ECL says: Error executing code in Maxima: expt: undefined: 0 to a negative exponent
shows up in this example? When running the same integral in maxima, no error is given. (it can't integrate it, but no error).
This happens when adding assume
on a variable. Using sagemath 9.3
and maxima 5.44
on Linux
sage: var('x a')
(x, a)
sage: integrate(arcsin(x/a)^(3/2)/(a^2-x^2)^(1/2),x, algorithm="maxima")
integrate(arcsin(x/a)^(3/2)/sqrt(a^2 - x^2), x)
No problem. But now notice what happens when adding assume
.
sage: assume(a>0)
sage: integrate(arcsin(x/a)^(3/2)/(a^2-x^2)^(1/2),x, algorithm="maxima")
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
<ipython-input-4-ac342accae00> in <module>
----> 1 integrate(arcsin(x/a)**(Integer(3)/Integer(2))/(a**Integer(2)-x**Integer(2))**(Integer(1)/Integer(2)),x, algorithm="maxima")
/usr/lib/python3.9/site-packages/sage/misc/functional.py in integral(x, *args, **kwds)
757 """
758 if hasattr(x, 'integral'):
--> 759 return x.integral(*args, **kwds)
760 else:
761 from sage.symbolic.ring import SR
/usr/lib/python3.9/site-packages/sage/symbolic/expression.pyx in sage.symbolic.expression.Expression.integral (build/cythonized/sage/symbolic/expression.cpp:66867)()
12645 R = SR
12646 return R(integral(f, v, a, b, **kwds))
> 12647 return integral(self, *args, **kwds)
12648
12649 integrate = integral
/usr/lib/python3.9/site-packages/sage/symbolic/integration/integral.py in integrate(expression, v, a, b, algorithm, hold)
988 if not integrator:
989 raise ValueError("Unknown algorithm: %s" % algorithm)
--> 990 return integrator(expression, v, a, b)
991 if a is None:
992 return indefinite_integral(expression, v, hold=hold)
/usr/lib/python3.9/site-packages/sage/symbolic/integration/external.py in maxima_integrator(expression, v, a, b)
42 expression = SR(expression)
43 if a is None:
---> 44 result = maxima.sr_integral(expression, v)
45 else:
46 result = maxima.sr_integral(expression, v, a, b)
/usr/lib/python3.9/site-packages/sage/interfaces/maxima_lib.py in sr_integral(self, *args)
787 """
788 try:
--> 789 return max_to_sr(maxima_eval(([max_integrate],[sr_to_max(SR(a)) for a in args])))
790 except RuntimeError as error:
791 s = str(error)
/usr/lib/python3.9/site-packages/sage/libs/ecl.pyx in sage.libs.ecl.EclObject.__call__ (build/cythonized/sage/libs/ecl.c:8632)()
852 """
853 lispargs = EclObject(list(args))
--> 854 return ecl_wrap(ecl_safe_apply(self.obj,(<EclObject>lispargs).obj))
855
856 def __richcmp__(left, right, int op):
/usr/lib/python3.9/site-packages/sage/libs/ecl.pyx in sage.libs.ecl.ecl_safe_apply (build/cythonized/sage/libs/ecl.c:5914)()
363
364 if error != NULL:
--> 365 raise RuntimeError("ECL says: {}".format(
366 ecl_string_to_python(error)))
367 else:
RuntimeError: ECL says: Error executing code in Maxima: expt: undefined: 0 to a negative exponent.
sage:
Now the same thing inside maxima itself causes no problem after adding assume
>maxima
;;; Loading #P"/usr/lib/ecl-20.4.24/sb-bsd-sockets.fas"
;;; Loading #P"/usr/lib/ecl-20.4.24/sockets.fas"
Maxima 5.44.0 http://maxima.sourceforge.net
using Lisp ECL 20.4.24
Distributed under the GNU Public License. See the file COPYING.
Dedicated to the memory of William Schelter.
The function bug_report() provides bug reporting information.
(%i1) integrate(arcsin(x/a)^(3/2)/(a^2-x^2)^(1/2),x)
;
x 3/2
/ arcsin(-)
[ a
(%o1) I ------------- dx
] 2 2
/ sqrt(a - x )
(%i2) assume(a>0);
(%o2) [a > 0]
(%i3) integrate(arcsin(x/a)^(3/2)/(a^2-x^2)^(1/2),x)
;
x 3/2
/ arcsin(-)
[ a
(%o3) I ------------- dx
] 2 2
/ sqrt(a - x )
(%i4)
Why does sagemath gives exception when using assume
but maxima itself does not? Is this a known issue?
Your first example yields
not a result. Do you need to specify the method as maxima? As
yields a result.
Thanks, but the default have changed from maxima to giac in current sagemath (it used to be maxima in earlier versions). I need to test maxima specifically. The default is giac
and with assume
So, yes, I need to use Maxima for this example. I am using sagemath
9.3
withgiac 1 ...
(more)Huh ? From
sage.symbolic.integration.integral.integrate?
:Where is this change of default documented ?
BTW :
...