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.