|
[Date Index]
[Thread Index]
[Author Index]
Re: Symbolic use of numerical function FindRoot via ?NumericQ
- To: mathgroup at smc.vnet.net
- Subject: [mg48837] Re: Symbolic use of numerical function FindRoot via ?NumericQ
- From: "Peter Pein" <petsie at arcor.de>
- Date: Fri, 18 Jun 2004 02:13:06 -0400 (EDT)
- References: <c9pddv$nuf$1@smc.vnet.net> <ca1dnr$hp5$1@smc.vnet.net> <ca92ag$ck$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
"Mukhtar Bekkali" <mbekkali at iastate.edu> schrieb im Newsbeitrag
news:ca92ag$ck$1 at smc.vnet.net...
> "Peter Pein" <petsie at arcor.de> wrote in message
news:<ca1dnr$hp5$1 at smc.vnet.net>...
> > Hi Michael,
> > calling a function of 4 variables with 2 variables will not work. I've
got
> > difficulties to understand, why you do not solve all the 4 derivatives
in
> > one step? And since x1* and x2* depend on y1 and y2 you have to use the
> > chain rule, when building the derivatives w.r.t. y1 and y2, or did I get
> > sth. wrong?
>
>
> Here is an example that shows why I can't use one step to solve my
> problem:
>
> Support I have g1=(1-(x1-x2)/Q)x1 and g2=((x1-x2)/Q)x2, where Q=y1-y2;
> all four variables belong to closed unit R+ interval. Now if you
> take derivatives of g1 and g2 with respect to Q you would see that
> dg1/dQ>0 and dg2/dQ<0. However, if you maximize g1 and g2 w.r.t. x1
> and x2 respectively then you would find that x1*=(2/3)Q and
> x2*=(1/3)Q. Substituting this into original objective functions
> yields g1=(4/9)Q and g2=(1/9)Q, or both functions are not INCREASING
> functions in Q, or dg2/dQ changes its sign from negative to positive.
> This is due to corner solution.
>
> I know that out of 4 variables one is likely to be corner, namely
> y1=1, and it is y2,x1,x2 that I need to find in two stages.
>
Dear Mukhtar,
sorry for the delayed response (I caught a cold) and for not understanding.
1. are the four vars out of the closed interval [0,1], or the half-open
(0,1] which is implied by R+?
2. why do we have suddenly two functions? (not mentioned in the original
posting (OP))
3. the constraints to the variables have not been mentioned in the OP.
4. I misunderstood your intention. I thought of finding the global maximum
of g.
5. independently of using the compact interval or not, I'm afraid
dg1/dQ=x1(x1-x2)/Q^2 can take any real value, because y1-y2 is element of
(-1,1) (or [-1,1]), which contains zero and x1-x2 can take values between -1
and 1.
6. I don't understand the half sentence concerning increasing functions (is
this a given condition? an assumption?) and why it would be so bad if dg2/dQ
would change its sign? Anyway.
I tried (for the question in the OP) the following code:
g[x1_, x2_, y1_, y2_] := (y1 - (1 + x1 - x2)^2/(1 + (y1 - y2))^2)*x1*y2 +
(y2 - (x1 - x2)/(y1 - y2))^2*x2*y1 (* just as example *)
y10 = 0.3; y20 = 0.7; x10 = 0.123; x20 = 0.567;
onestep[y10_, y20_] := Module[{x1star, x2star},
{x10, x20} = {x1star, x2star} =
{x1, x2} /. FindRoot[
{Derivative[1, 0, 0, 0][g][x1, x2, y10, y20] == 0,
Derivative[0, 1, 0, 0][g][x1, x2, y10, y20] == 0}, {x1, x10},
{x2, x20}];
Print[(ScientificForm[#1, {10, 4}] & ) /@
{x10, x20, y10, y20}];
{y1, y2} /.
FindRoot[{Derivative[0, 0, 1, 0][g][x1star, x2star, y1, y2] == 0,
Derivative[0, 0, 0, 1][g][x1star, x2star, y1, y2] == 0}, {y1, y10},
{y2, y20}]]
FixedPoint[onestep @@ #1 & , {y10, y20}, 30]
which should do what you want.
--
Peter Pein, Berlin
to write to me, start the subject with [
Prev by Date:
Re: Numerical integration inside numerical integration
Next by Date:
Re: Iterate initial conditions
Previous by thread:
Re: Symbolic use of numerical function FindRoot via ?NumericQ
Next by thread:
Re: Eigensystem[] bug in Mathematica 5.0 (fixed in 5.0.1)
|