Re: [sage-devel] Re: should hard integrals be evaluated numericaly if they fail to be evaluated?
On Wed, Mar 17, 2010 at 10:47 PM, Nick Alexander ncalexan...@gmail.com wrote: At the time I worked with this code, which was several months ago, there was no public interface for crawling the structures. Testing for whether one was looking at a sage value (meaning something with a parent) versus a function application versus a derivative was really hard. When you have one very general expr class, how else do you determine if you're looking at an indefinite integral? (Or an addition, for that matter?) You can traverse the structure with operator and operands. For example, everything in sage.symbolic.expression_conversions just walks the structure and does stuff based on that. --Mike -- To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org
Re: [sage-devel] Re: should hard integrals be evaluated numericaly if they fail to be evaluated?
On 17-Mar-10, at 10:18 AM, Mike Hansen wrote: On Wed, Mar 17, 2010 at 5:21 AM, Pablo Angulo pablo.ang...@uam.es wrote: Sorry to come back to this (two weeks) old topic, but what do you think about raising an exception whenever a symbolic integral (or any symbolic computation) fails? Otherwise, is there a simple way to distinguish a succesful integration from failed ones that are just indicated (e.g., integrate(e^(x*sin(x)), x))? You can check whether or not you get an unevaluated integral like this: sage: f = integrate(x^2, x) sage: isinstance(f.operator(), sage.symbolic.integration.integral.IndefiniteIntegral) False sage: f 1/3*x^3 sage: f = integrate(e^(x*sin(x)), x) sage: isinstance(f.operator(), sage.symbolic.integration.integral.IndefiniteIntegral) True sage: f integrate(e^(x*sin(x)), x) Using isinstance is such a strong code smell. Maybe we should add some interrogation routines, is_definite_integral/ is_indefinite_integral/...? Nick -- To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org
Re: [sage-devel] Re: should hard integrals be evaluated numericaly if they fail to be evaluated?
On 17-Mar-10, at 10:12 PM, Jason Grout wrote: On 03/17/2010 11:40 AM, Nick Alexander wrote: On 17-Mar-10, at 10:18 AM, Mike Hansen wrote: On Wed, Mar 17, 2010 at 5:21 AM, Pablo Angulo pablo.ang...@uam.es wrote: Sorry to come back to this (two weeks) old topic, but what do you think about raising an exception whenever a symbolic integral (or any symbolic computation) fails? Otherwise, is there a simple way to distinguish a succesful integration from failed ones that are just indicated (e.g., integrate(e^(x*sin(x)), x))? You can check whether or not you get an unevaluated integral like this: sage: f = integrate(x^2, x) sage: isinstance(f.operator(), sage.symbolic.integration.integral.IndefiniteIntegral) False sage: f 1/3*x^3 sage: f = integrate(e^(x*sin(x)), x) sage: isinstance(f.operator(), sage.symbolic.integration.integral.IndefiniteIntegral) True sage: f integrate(e^(x*sin(x)), x) Using isinstance is such a strong code smell. Maybe we should add some interrogation routines, is_definite_integral/ is_indefinite_integral/...? Are you saying every symbolic expression should have an is_indefinite_integral method? That seems a little clumsy to me; I must be misunderstanding what you are proposing. What other interrogation methods should be added if that is what you are proposing. Obviously a person could get carried away, adding an is_addition, for example. At the time I worked with this code, which was several months ago, there was no public interface for crawling the structures. Testing for whether one was looking at a sage value (meaning something with a parent) versus a function application versus a derivative was really hard. When you have one very general expr class, how else do you determine if you're looking at an indefinite integral? (Or an addition, for that matter?) Nick -- To post to this group, send an email to sage-devel@googlegroups.com To unsubscribe from this group, send an email to sage-devel+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org