|
From: Richard F. <fa...@be...> - 2014-02-15 16:28:58
|
On 2/15/2014 7:53 AM, Mark wrote: >> On 02/13/2014 01:04 AM, Mark wrote: >>> (%i9) to_poly_solve([sin(x-y)-sin(y)=0,sin(y)=0],[x,y]); >>> Unable to solve >>> (%o9) %solve([sin(y) = 0,-sin(y-x)-sin(y) = 0],[x,y]) > > On 02/13/2014 06:10 AM, Richard Fateman wrote: >> You have not provided a system of polynomial equations. >> You are free to write a new program, say SuperSolve( ....) that does more work > On 02/13/2014 02:14 AM, Barton Willis wrote: >> The limitation is purely the time and effort required for volunteers to improve the equation solving ability of Maxima. > I'm sorry but I somehow seem to miss your points. So please let me > reformulate my questions. Given the two simultaneous equations: > sin(y) = 0 > sin(x-y) = sin(y) > will Maxima solve them using a single input command, calling just a > single one of its built in functions? So far as I can tell, there is no single current built-in function that will solve this problem. Let me ask you an analogous question. Can you make a sandwich with a single piece of bread using your standard method of making a sandwich with two pieces of bread? (My) answer: No. But I can make a sandwich by folding a single piece of bread or cutting it in half, etc. > If so, which built in function? Why must all tasks be solved by a single built-in function? Why not a combination? For example, if you took the inputs, converted them to exponentials you could make some headway. e.g. to_poly_solve(exponentialize([(sin(x-y)-sin(y)=0),sin(y)=0],[exp(-%i*x),exp(-%i*y)]); You now have sets of equations for exp(%i*x) and exp(%i*y). > > We know that these two absolutely trivial eqns. can be solved in several > 'automatic' ways - apart from just reading off their solution anyway - > eg. by i) employing sin()'s periodicity to restrict x and y, ii) > arcsin()-ing both eqns., iii) solving the resulting set of linear eqns. > using Gauss-Seidel > Because of that it is clear that in principle one can go and apply > i)-iii) step-by-step using Maxima. But that's not what I'm looking for. No, apparently what you want is to have a somewhat longer and in some cases slower program that spends some more time looking for trivial solutions. Most people in the past have emphasized the construction of programs that work as nearly as possible on the difficult general cases with substantial efficiency. For example, that's why Gauss-Seidel is NOT used for symbolic systems, but a fraction-free alternative is preferred. Note also that ALL trig equations could be transformed by using exponentialize, not just your trivial ones. Is it a good idea? Apparently the view is that it is not usually a good idea, or else it would be usually done. There's no restriction on writing your own (not-yet-built-in) procedures to follow any set of steps you have in mind. It would probably be a good idea to see how hard it is to specify your steps precisely, test and time them, and see if the time taken is worth the chance of the steps making progress on some collection of problems. There are many many operations possible in Maxima that MIGHT make solve more capable but slower. There's an example of one that can be turned on or off via solveradcan:true. If you actually have 2 pieces of bread you try to make a sandwich by throwing away one piece and folding the other. But maybe that's not what you should do. RJF |