Re: Solve and the order of variables to solve for (v7.0)
- To: mathgroup at smc.vnet.net
- Subject: [mg105068] Re: [mg105041] Solve and the order of variables to solve for (v7.0)
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Thu, 19 Nov 2009 07:25:28 -0500 (EST)
- References: <200911191021.FAA14496@smc.vnet.net>
The simplest way is 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}, Sort -> False] but it may have a cost. Solve chooses an ordering of the variables that it believes will be the most efficient and the answer is returned in this particular order. Probably Solve is going to be more often right than wrong so setting the Sort option to False may give you poorer performance (but it may also not). The alternative is to let Solve choose its own ordering and then sort the answers to put them in the order you want them to be. It's easy enough to program this but I don't think it is worth bothering about unless you find that the simple solution above seriously damages performance. Andrzej Kozlowski On 19 Nov 2009, at 19:21, kristoph 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. >
- References:
- Solve and the order of variables to solve for (v7.0)
- From: kristoph <kristophs.post@web.de>
- Solve and the order of variables to solve for (v7.0)