MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Closed Form solution too much to hope for?

On 28 May 2006, at 10:03, 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}.

This is clearly not true. Suppose A is a solution of the first  
equation, i.e. A^n==c and B of the second, i.e. B^2==C. Then it is  
not true that d A + (1-d) B is a solution of d x^n + (1-d) x^2 == c.

> 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?

No. Basically you are looking at a transcendental equation and the  
only "closed form solutions" such equations sometimes have are given  
in terms of various special functions, which themselves are usually  
defined as solutions of certain equations etc. There are no such  
functions that apply to this case.

In any case your analysis of the geometry of the solution set is  
wrong. Even if you are interested only in solutions between 0 and 1  
such solutions will exist only for certain c (between 0 and 1). To  
see that consider the family of curves given by two parametric  

x==t^n and y== t^2. When t is between 0 and 1 these curves lie  
entirely in the unit square 0<=x<=1, 0<=y<=1. Here is a graph of  
these curves for values of n between 1 and 20:

g = Show[Table[ParametricPlot[{t^n, t^2}, {t, 0, 1}, DisplayFunction - 
 > Identity], {n, 1, 20}],
     DisplayFunction -> $DisplayFunction, PlotRange -> All];

We look at the intersection of these curves with straight lines of  
the form:

d x + (1-d) y == c. Assuming that d != 1 we can write them as in the  
form y(c - d*x)/(1 - d). Here is a function that for a given c  
produces a family of such lines corresponding to values of d sliding  
from 0 towards 1:

h[c_] := Table[Plot[(c - d*x)/(1 - d), {x, 0, 1}, PlotStyle ->  
RGBColor[1, 0, 0],
     DisplayFunction -> Identity], {d, 0, 0.9, 0.05}]

You can see now what happens for c between 0 and 1, for example c=0.3:

Show[g, h[0.3],
   DisplayFunction -> $DisplayFunction, PlotRange -> {{0, 1}, {0, 1}}]

For a fixed n, the solutions are just the intersections between the  
straight lines and the curves. As long as d stays between 0 and 1 you  
will always get a unique solution for each n. On the other hand, for  
c outside the interval 0<=c<=1  and 0<=d <= 1 we get no solutions:

Show[g, h[2], DisplayFunction -> $DisplayFunction, PlotRange -> {{
     0, 1}, {0, 1}}]

Show[g, h[-1], DisplayFunction -> $DisplayFunction, PlotRange -> {{
     0, 1}, {0, 1}}]

All of the above can be proved by using Reduce instead of pictures.

If d is not constrained to lie between 0 and 1 the set of solutions  
is harder to describe. For certain values of d and certain n you may  
get 2 solutions in the rectangle, for others no solution at all.  All  
of this can be illustrated graphically and computed numerically. For  
a given d, and a range of values of n, say between 1 and 20, you can  
construct an interpolating function that will give you approximate  
solutions as functions of n and c. Here is a a quick and rough way to  
do this. Suppose

d = 0.5;

We first construct a family of InterpolatingFunctions f[c] as follows:

f[c_?NumericQ] := Interpolation[Table[{n, x /. FindRoot[d x^n + (1 -  
d) x^2 == c, {x, 0.5}]}, {n, 1, 20}]]

And now , we construct an InterpolatingFunction of two variables as  

F = FunctionInterpolation[f[c][n], {n, 1, 20}, {c, 0, 1}]

Now for a given 1<= n<=20 , say n=11 and a given 0<=c<1, say c = 0.7  
we can find an approaximate solution simply by evaluatign



Let's check using the given value of d:

d*p^11 + (1 - d)*p^2 - 0.7


which is not too bad.

Andrzej Kozlowski

Tokyo, Japan

  • Prev by Date: Re: Closed Form solution too much to hope for?
  • Next by Date: Re: x/x
  • Previous by thread: Closed Form solution too much to hope for?
  • Next by thread: Re: Closed Form solution too much to hope for?