MathGroup Archive 2009

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

Search the Archive

Re: Solve and the order of variables to solve for (v7.0)

  • To: mathgroup at smc.vnet.net
  • Subject: [mg105071] Re: [mg105041] Solve and the order of variables to solve for (v7.0)
  • From: Bob Hanlon <hanlonr at cox.net>
  • Date: Fri, 20 Nov 2009 06:37:19 -0500 (EST)
  • Reply-to: hanlonr at cox.net

$Version

7.0 for Mac OS X x86 (64-bit) (February 19, 2009)

costsHome[yh_, yht_] :=
  w (yh^2 + 10/100 yh yht + 110/100 yht^2);
costsFor[yf_, yft_] :=
  wt (110/100 yf^2 + 10/100 yf yft + yft^2);

profitHome[\[Epsilon]_, pht_, ph_] :=
  \[Epsilon] pht yht + ph yh - 
   costsHome[yh, yht];
profitFor[\[Epsilon]_, pf_, pft_] :=
  
  1/\[Epsilon] pf yf + pft yft - costsFor[yf, yft];

res = Solve[{
     D[profitHome[\[Epsilon], pht, ph], yh] == 0,
     D[profitHome[\[Epsilon], pht, ph], yht] == 0,
     D[profitFor[\[Epsilon], pf, pft], yf] == 0,
     D[profitFor[\[Epsilon], pf, pft], yft] == 0},
    {yh, yht, yf, yft}][[1]];

First /@ res

{yh,yht,yf,yft}

To force a specified order

desiredOrder = {yf, yh, yft, yht};

res2 = SortBy[res, 
   Position[desiredOrder, #[[1]]][[1, 1]] &];

desiredOrder == First /@ res2

True

Or slightly more compactly

res3 = SortBy[res, 
   Position[desiredOrder, #[[1]]] &];

desiredOrder == First /@ res3

True


Bob Hanlon

---- kristoph <kristophs.post at web.de> wrote: 

=============
Hi,

consider the following problem:

costsHome[yh_, yht_] := w (yh^2 + 10/100 yh yht + 110/100 yht^2);
costsFor[yf_, yft_] := wt (110/100 yf^2 + 10/100 yf yft + yft^2);

profitHome[\[Epsilon]_, pht_, ph_] := \[Epsilon] pht yht + ph yh -
   costsHome[yh, yht];
profitFor[\[Epsilon]_, pf_, pft_] :=
  1/\[Epsilon] pf yf + pft yft - costsFor[yf, yft];

res = Solve[{D[profitHome[\[Epsilon], pht, ph], yh] == 0,
   D[profitHome[\[Epsilon], pht, ph], yht] == 0,
   D[profitFor[\[Epsilon], pf, pft], yf] == 0,
   D[profitFor[\[Epsilon], pf, pft], yft] == 0}, {yh, yht, yf, yft}]

The list of results I get is sorted not in the way I would like to
have it, i.e. yh, yht, yf and yft.

How do I always the the list to be the way I want it?

The order even changes if I let

costsHome[yh_, yht_] := w (yh^2 + yht^2);
costsFor[yf_, yft_] := wt (yf^2 + yft^2);

Does anybody know why? Thanks in advance.




  • Prev by Date: Re: Dynamic Control of Graphics
  • Next by Date: Re: Re: Re: Undo in Mathematica
  • Previous by thread: Re: Solve and the order of variables to solve for (v7.0)
  • Next by thread: Re: How to instruct Math to take a certain (e.g. real) type of