       Re: Finding a function that makes it possible to Solve[] a system of equations

• To: mathgroup at smc.vnet.net
• Subject: [mg114054] Re: Finding a function that makes it possible to Solve[] a system of equations
• From: Daniel Lichtblau <danl at wolfram.com>
• Date: Mon, 22 Nov 2010 07:37:23 -0500 (EST)

```
----- Original Message -----
> From: "Mauricio Esteban Cuak" <cuak2000 at gmail.com>
> To: mathgroup at smc.vnet.net
> Sent: Saturday, November 20, 2010 5:27:53 PM
> Subject: [mg114029] Finding a function that makes it possible to Solve[ ] a system of equations
> Hey MathGroup,
>
> I apologise beforehand since this might turn to be more a mathematical
> query
> than a Mathematica one.
> However, I appreciate any suggestion on the matter.
>
> In:= \$Version
> Out= "7.0 for Mac OS X x86 (64-bit) (February 19, 2009)"
>
>
> This is my setup:
>
>
> f = (g*x + y)^h + d* i[x, y];
> u1 = a*f - x^2;
> u2 = (1 - a)*f - y^2;
>
>
> Where x, y are the variables and {a,h,g,d} are just parameters, with 0
> < a <
> 1, g > 0, d bigger or equal to 0
>
> i[x,y] is the function that I need to specify.
>
> Further, it must be true that
>
>
> i[ x, 0] = 0 & i[ 0, y ] = 0
>
>
> For simplicity I've set
>
>
> h=1;
>
>
> Though if the solution you suggest requires it, h could belong to
> (0,1]
>
> What I need is the analytic solution for {x, y}, hopefully a unique
> real
> solution (I don't mind if there are complex ones) to:
>
>
> sol = Solve[{D[u1, x] == 0, D[u2, y] == 0}, {x, y}];
>
>
> Obviously, I need to specify i[x,y] to do that. I need the function
> i[x,y]
> to grow slower that x^2 or y^2.
>
>
> i[ x, y] = x^(1/2)*y^(1/2) or
>
> i[x,y] = Log[1+x] * Log[1+y ]
>
>
> do the trick but Mathematica can't find an analytic solution.
>
> The only thing that works is i[x,y] = x*y but the problem is that it
> grows
> as fast
>
> as x^2.
>
>
>
>
> ME

This much seems to work. Use the product of square roots for i[x,y], and precompute a Groebner basis.

f = (g*x + y)^h + d*i[x, y];
u1 = a*f - x^2;
u2 = (1 - a)*f - y^2;

i[x_, y_] := x^(1/2)*y^(1/2);
h = 1;

In:= Timing[
sol = Solve[
GroebnerBasis[{D[u1, x], D[u2, y]}, {x, y}] == 0, {x, y}];]

Out= {26.364, Null}

This solution is a large object.

In:= LeafCount[sol]
Out= 186365

In:= Length[sol]
Out= 4

Possibly version 8 will allow you to forego the precomputation, but I have not explicitly tried this. It is also possible that it might be able to represent a solution set using the sum of logs variant you propose for i[x,y].

As for determining forms of i[x,y] that meet your requirements in general, that is indeed a mathematics question. Offhand I'm not sure whether Mathematica can be useful for that purpose.

Daniel Lichtblau
Wolfram Research

```

• Prev by Date: Re: NMinimize -DifferentialEvolution
• Next by Date: Re: Best method to break apart a data set
• Previous by thread: FinancialDerivative Ver 8 (Bug maybe)
• Next by thread: Re: Finding a function that makes it possible to