Opened 5 years ago
Last modified 5 years ago
#16653 new defect
immediately get all integral/ODE solutions instead of asking for assumption
Reported by: | rws | Owned by: | |
---|---|---|---|
Priority: | critical | Milestone: | sage-6.4 |
Component: | symbolics | Keywords: | assumption, desolve, integrate, maxima |
Cc: | Merged in: | ||
Authors: | Reviewers: | ||
Report Upstream: | N/A | Work issues: | |
Branch: | Commit: | ||
Dependencies: | Stopgaps: |
Description
In #14976 charpent suggests to return lists of results from Maxima integral/ODE computations instead of forcing the user to stop, input an assumption, and calculate again. It would be consistent with the output of solve
which doesn't shy from multiple solutions and returns a list as well in this case. To have the list members as tuple(assumption,solution)
would be natural, and so this modus should be default, and would remove one of the most awkward behaviours of Sage for beginners. It still allows to assume beforehand, and to then get only that solution for the existing assumption. The difference is that, if no assumption exists, there is still immediate output of results.
Change History (4)
comment:1 Changed 5 years ago by
- Component changed from calculus to symbolics
comment:2 Changed 5 years ago by
comment:3 Changed 5 years ago by
Mathematicians don't compromise, software engineers do. "List cut off at 100 entries. To get the whole list, use cutoff=False." The human will happily perform the recognition work for me, of course only in this super-rare case.
comment:4 Changed 5 years ago by
- Milestone changed from sage-6.3 to sage-6.4
So, we'd get something a bit like what Maxima's to_poly_solve returns (that Sage somehow is able to digest in certain cases) or Mathematica's Integrate returns (indigestible by sage). So, we'd divde the problem in two : 1) parse the "assumptions" part of the answer, in order to keep it for further computations. 2) ensuring somehow that the "assumption" list/tree is finite. I have seen Maxima start a list of questions about a parameter (say zeta) known as positive, asking if zeta-1 was positive, zeta-2 was positive, zeta-3 was positive, ... until C-c C-c ("Shut the fuck up and stop that !" in interactive-Maxima).
The first part probably entails a new class of symbolic expressions, which is doable (i has been done by the author of to_poly_solve and by Mathematica's developpers.
The second, I do not know. A human can catch the repetition pattern, may examine the shape of the proposed solution and possibly set-up a secondary computation in order to prove that the recurrence will solve ,say, for some majorant of zeta, which allows to shortcut the loop (and implicitely uses some hypothetical declaration like "zeta is finite").
There are algorithms able to detect a circular (i. e. infinite) list/tree/etc... (i.e. anything represented by dotted pairs, a. k. a. Lisp lists) : ask your friendly local graph theorist or Lisp guru (the species is not quite extinct yet...). The problem is to know when to call them. And there might be tygers...