#1773: piecewise functions and integration / arithmetic do not play well
together
----------------------------+------------------------
Reporter: was | Owner: gfurnish
Type: defect | Status: new
Priority: major | Milestone: sage-7.3
Component: calculus | Resolution:
Keywords: | Merged in:
Authors: | Reviewers:
Report Upstream: N/A | Work issues:
Branch: | Commit:
Dependencies: #14801 | Stopgaps:
----------------------------+------------------------
Changes (by mkoeppe):
* cc: vbraun, slelievre, mkoeppe, eviatarbach, rws (added)
* milestone: sage-6.4 => sage-7.3
Comment:
While all the examples appearing in the comments are fixed with the new
`piecewise` of #14801, the original bug example still fails (but with a
different error message).
Cc'ing #14801's cc list.
{{{
sage: f1(x) = -abs(x) + 1
sage: f2(x) = abs(x - 2) - 1
sage: tri_wave = piecewise([ [(-1,1), f1], [(1,3), f2]])
sage: tri_wave.plot()
Launched png viewer for Graphics object consisting of 1 graphics primitive
sage: integrate(tri_wave(x)^2, x, -1, 3)
---------------------------------------------------------------------------
TypeError Traceback (most recent call
last)
<ipython-input-8-9387c34a513c> in <module>()
----> 1 integrate(tri_wave(x)**Integer(2), x, -Integer(1), Integer(3))
/Users/mkoeppe/cvs/sage/local/lib/python2.7/site-
packages/sage/misc/functional.py in integral(x, *args, **kwds)
663 """
664 if hasattr(x, 'integral'):
--> 665 return x.integral(*args, **kwds)
666 else:
667 from sage.symbolic.ring import SR
/Users/mkoeppe/cvs/sage/src/sage/symbolic/expression.pyx in
sage.symbolic.expression.Expression.integral
(/Users/mkoeppe/cvs/sage/src/build/cythonized/sage/symbolic/expression.cpp:60225)()
11484 R = ring.SR
11485 return R(integral(f, v, a, b, **kwds))
> 11486 return integral(self, *args, **kwds)
11487
11488 integrate = integral
/Users/mkoeppe/cvs/sage/local/lib/python2.7/site-
packages/sage/symbolic/integration/integral.py in integrate(expression, v,
a, b, algorithm, hold)
763 return indefinite_integral(expression, v, hold=hold)
764 else:
--> 765 return definite_integral(expression, v, a, b, hold=hold)
766
767 integral = integrate
/Users/mkoeppe/cvs/sage/src/sage/symbolic/function.pyx in
sage.symbolic.function.BuiltinFunction.__call__
(/Users/mkoeppe/cvs/sage/src/build/cythonized/sage/symbolic/function.cpp:11170)()
970 res = self._evalf_try_(*args)
971 if res is None:
--> 972 res = super(BuiltinFunction, self).__call__(
973 *args, coerce=coerce, hold=hold)
974
/Users/mkoeppe/cvs/sage/src/sage/symbolic/function.pyx in
sage.symbolic.function.Function.__call__
(/Users/mkoeppe/cvs/sage/src/build/cythonized/sage/symbolic/function.cpp:6921)()
481 for i from 0 <= i < len(args):
482 vec.push_back((<Expression>args[i])._gobj)
--> 483 res = g_function_evalv(self._serial, vec, hold)
484 elif self._nargs == 1:
485 res = g_function_eval1(self._serial,
/Users/mkoeppe/cvs/sage/src/sage/symbolic/function.pyx in
sage.symbolic.function.BuiltinFunction._evalf_or_eval_
(/Users/mkoeppe/cvs/sage/src/build/cythonized/sage/symbolic/function.cpp:12417)()
1059 res = self._evalf_try_(*args)
1060 if res is None:
-> 1061 return self._eval0_(*args)
1062 else:
1063 return res
/Users/mkoeppe/cvs/sage/local/lib/python2.7/site-
packages/sage/symbolic/integration/integral.py in _eval_(self, f, x, a, b)
176 for integrator in self.integrators:
177 try:
--> 178 return integrator(*args)
179 except NotImplementedError:
180 pass
/Users/mkoeppe/cvs/sage/local/lib/python2.7/site-
packages/sage/symbolic/integration/external.py in
maxima_integrator(expression, v, a, b)
22 result = maxima.sr_integral(expression,v)
23 else:
---> 24 result = maxima.sr_integral(expression, v, a, b)
25 return result._sage_()
26
/Users/mkoeppe/cvs/sage/local/lib/python2.7/site-
packages/sage/interfaces/maxima_lib.py in sr_integral(self, *args)
796 """
797 try:
--> 798 return
max_to_sr(maxima_eval(([max_integrate],[sr_to_max(SR(a)) for a in args])))
799 except RuntimeError as error:
800 s = str(error)
/Users/mkoeppe/cvs/sage/local/lib/python2.7/site-
packages/sage/interfaces/maxima_lib.py in max_to_sr(expr)
1634 op_max=caar(expr)
1635 if op_max in special_max_to_sage:
-> 1636 return special_max_to_sage[op_max](expr)
1637 if not(op_max in max_op_dict):
1638 op_max_str=maxprint(op_max).python()[1:-1]
/Users/mkoeppe/cvs/sage/local/lib/python2.7/site-
packages/sage/interfaces/maxima_lib.py in dummy_integrate(expr)
1428 integrate(f(x), x, 0, 10)
1429 """
-> 1430 args=[max_to_sr(a) for a in cdr(expr)]
1431 if len(args) == 4 :
1432 return
sage.symbolic.integration.integral.definite_integral(*args,
/Users/mkoeppe/cvs/sage/local/lib/python2.7/site-
packages/sage/interfaces/maxima_lib.py in max_to_sr(expr)
1651 op=max_op_dict[op_max]
1652 max_args=cdr(expr)
-> 1653 args=[max_to_sr(a) for a in max_args]
1654 return op(*args)
1655 elif expr.symbolp():
/Users/mkoeppe/cvs/sage/local/lib/python2.7/site-
packages/sage/interfaces/maxima_lib.py in max_to_sr(expr)
1652 max_args=cdr(expr)
1653 args=[max_to_sr(a) for a in max_args]
-> 1654 return op(*args)
1655 elif expr.symbolp():
1656 if not(expr in max_sym_dict):
TypeError: __call__() takes exactly 2 arguments (3 given)
}}}
--
Ticket URL: <https://trac.sagemath.org/ticket/1773#comment:13>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" 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 https://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.