Re: Closed Form solution too much to hope for?
- To: mathgroup at smc.vnet.net
- Subject: [mg66756] Re: [mg66721] Closed Form solution too much to hope for?
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Mon, 29 May 2006 06:05:37 -0400 (EDT)
- References: <200605280103.VAA23357@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
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 equations: 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 follows: 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 p=F[11,0.7] 0.941296 Let's check using the given value of d: d*p^11 + (1 - d)*p^2 - 0.7 0.00003282660762082834 which is not too bad. Andrzej Kozlowski Tokyo, Japan
- References:
- Closed Form solution too much to hope for?
- From: "DOD" <dcodea@gmail.com>
- Closed Form solution too much to hope for?