Re: Closed Form solution too much to hope for?
- To: mathgroup at smc.vnet.net
- Subject: [mg66750] Re: Closed Form solution too much to hope for?
- From: "DOD" <dcodea at gmail.com>
- Date: Mon, 29 May 2006 06:05:15 -0400 (EDT)
- References: <e5augm$no4$1@smc.vnet.net><e5btaa$cbv$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Jean-Marc Gulliet wrote: > DOD wrote: > > I don't have a very good idea on the guts of Solve, or what its > > reasonable to expect from mathematica, but here's what I want: T is > > the solution to > > > > d x^n + (1-d) x^2 == c > > > > Where n, d and c are parameters of my model. Now, it's very clear what > > this solution looks like; as we vary d the solution 'slides' from the > > easy-to-solve-in-a-closed-form solutions to > > > > x^n=c > > > > and > > > > x^2=c, > > > > that is, x=c^{1/2} and x=c^{1/n}. So I know what the solution looks > > like, but when I leave it in symbolic form, Solve doesn't like it, and > > says it's fundamentally not algebraic. I presume this is because the > > number of roots depends on n, which isn't given, so Solve panics. But > > I only really care about the real solution between 0 and 1- is there > > any way to get the form of this solution as a function of both n and c? > > > > Thanks for enlighening me. > > > > Dennis > > > > Hi Dennis, > > I am afraid that your intuition is wrong and that closed form solutions > are more complicated that what you think. To explore the full set of > solutions, use *Reduce* and *Assuming*. > Thanks for your reply! I should have also said that c is between 0 and 1 as well, and n>=3. I was basing my confidence in the solution on haveing graphed a bunch of instances of the solution, plugging in for the parameters. I'm going to try and see if I can follow along with the output here- it's one of my problems with Mathematica. > In[1]:= > eqn = d*x^n + (1 - d)*x^2 == c; > > In[2]:= > Table[{i, Assuming[0 <= d <= 1 && n \[Element] Integers && n >= 0 && > c \[Element] Reals, Reduce[eqn /. n -> i, x]]}, {i, 0, 5}] > So here you're telling Reduce relevant info about the parameters, and looking at solutions for for the first few values of n? > Out[2]//OutputForm= > {{0, (d == 1 && c == 1) || > > Sqrt[-c + d] Sqrt[-c + d] > (-1 + d != 0 && (x == -(------------) || x == ------------))}, > Sqrt[-1 + d] Sqrt[-1 + d] > > {1, (d == 1 && x == c) || > > 2 > d - Sqrt[4 c - 4 c d + d ] > (-1 + d != 0 && (x == -------------------------- || > 2 (-1 + d) > > 2 > d + Sqrt[4 c - 4 c d + d ] > x == --------------------------))}, > 2 (-1 + d) > > {2, x == -Sqrt[c] || x == Sqrt[c]}, > > {3, (d == 0 && (x == -Sqrt[c] || x == Sqrt[c])) || > > 2 2 3 > (d != 0 && (x == Root[-c + #1 - d #1 + d #1 & , 1] || > > 2 2 3 > x == Root[-c + #1 - d #1 + d #1 & , 2] || > > 2 2 3 > x == Root[-c + #1 - d #1 + d #1 & , 3]))}, > > {4, (d == 0 && (x == -Sqrt[c] || x == Sqrt[c])) || > > (d != 0 && (x == -( > > 2 > 1 Sqrt[1 - 2 d + 4 c d + d ] > Sqrt[1 - - - --------------------------] > d d > ----------------------------------------) || > Sqrt[2] > > 2 > 1 Sqrt[1 - 2 d + 4 c d + d ] > Sqrt[1 - - - --------------------------] > d d > x == ---------------------------------------- || > Sqrt[2] > > 2 > 1 1 Sqrt[1 - 2 d + 4 c d + d ] > x == -Sqrt[- - --- + --------------------------] || > 2 2 d 2 d > > 2 > 1 1 Sqrt[1 - 2 d + 4 c d + d ] > x == Sqrt[- - --- + --------------------------]))}, > 2 2 d 2 d > > {5, (d == 0 && (x == -Sqrt[c] || x == Sqrt[c])) || > > 2 2 5 > (d != 0 && (x == Root[-c + #1 - d #1 + d #1 & , 1] || > > 2 2 5 > x == Root[-c + #1 - d #1 + d #1 & , 2] || > > 2 2 5 > x == Root[-c + #1 - d #1 + d #1 & , 3] || > > 2 2 5 > x == Root[-c + #1 - d #1 + d #1 & , 4] || > > 2 2 5 > x == Root[-c + #1 - d #1 + d #1 & , 5]))}} > So this gives a 'symbolic' expression for the first 5 solutions when n is 5? > In[3]:= > Assuming[0 <= d <= 1 && n \[Element] Integers && n >= 0 && c \[Element] > Reals, > Reduce[eqn /. d -> 0, x, Reals]] > > Out[3]//OutputForm= > c >= 0 && (x == -Sqrt[c] || x == Sqrt[c]) > So this is the other solution I was referring to. > In[4]:= > Assuming[0 <= d <= 1 && n \[Element] Integers && n >= 0 && c \[Element] > Reals, > Reduce[eqn /. d -> 1, x, Reals]] > > Out[4]//OutputForm= > 1/n > (c == 1 && n == 0 && x > 0) || (n != 0 && c > 0 && x == c ) || > > n > (n > 0 && c == 0 && x == 0) || (c == 1 && n == 0 && x < 0) || > > n 1/n > (- \[Element] Integers && n != 0 && c > 0 && x == -c ) || > 2 > > 1 + n 1/n > ((----- | n) \[Element] Integers && n != 0 && c < 0 && x == -(-c) ) > 2 > I'm not sure how to read this output-is this the various solutions for the x^n = c eqn? > In[5]:= > Table[{i, Assuming[0 <= d <= 1 && n \[Element] Integers && n >= 0 && > c \[Element] Reals, Reduce[eqn /. n -> i, x, Reals]]}, {i, 0, 5}] > > (* I have deleted the output since it is really too long ... *) > So I guess I need to spend some time figuring out *Reduce* and *Assuming*. > Best regards, > Jean-Marc Thanks, Dennis.