Re: Solving a system of Inequalities
- To: mathgroup at smc.vnet.net
- Subject: [mg39883] Re: [mg39764] Solving a system of Inequalities
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Sun, 9 Mar 2003 05:31:01 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
Even your "toy" system is in fact too complicated for Mathematica to solve in reasonable time, or at least in any time that I can spare. So I think that when you originally wrote that InequalitySolve gave you an answer that was "more complicated than the original problem" you probably made a mistake in the input. I very much doubt that InequalitySolve can produce any answer to the original question in any reasonable time. Moreover, I am not sure what you mean by: "Solving the set of inequatlities by hand allows us to express all variables with dependence on g". Do you mean to say that once we are given the value of g we can determine the bounds for each of the other variables, in a way that is equivalent to the original equations? This seems to be false. To see that, let's first of all simplify your inequalities so that Mathematica can handle them reasonably quickly, say by substituting some arbitrary values for a, b and c. For example, {a, b, c} = {1, 2, 3}; Now, your inequalities take the form: ineqs = And @@ {a + b + c + 4*g > 2*d + 2*e + 2*f, 2*e > b, 2*e > c, a + 2*e > b + c, a + 4*g > 2*d + 2*f, 2*f > a, b + 2*f > a + c, 2*f > c, b + 4*g > 2*d + 2*e, c + 2*d > a + b, 2*d > a, 2*d > b, c + 4*g > 2*e + e*f} 6 + 4*g > 2*d + 2*e + 2*f && 2*e > 2 && 2*e > 3 && 1 + 2*e > 5 && 1 + 4*g > 2*d + 2*f && 2*f > 1 && 2 + 2*f > 4 && 2*f > 3 && 2 + 4*g > 2*d + 2*e && 3 + 2*d > 3 && 2*d > 1 && 2*d > 2 && 3 + 4*g > 2*e + e*f Here are the variables, (the order is chosen deliberately): vars=Reverse[Union[Cases[ineqs,_Symbol,Infinity]]] {g,f,e,d} Let's load in the Experimental context, which contains the fastest functions for this sort of problem: << Experimental` The fastest function for this sort of thing is GenericCylindricalAlgebraicDecomposition GenericCylindricalAlgebraicDecomposition[ineqs, vars][[1]] 1 < g < 7/4 && (3/2 < f < -(5/4) + (1/4)*Sqrt[57 + 64*g] && (2 < e < (1/2)*(1 + 2*f) && 1 < d < (1/2)*(1 - 2*f + 4*g) || (1/2)*(1 + 2*f) < e < (3 + 4*g)/(2 + f) && 1 < d < 1 - e + 2*g) || -(5/4) + (1/4)*Sqrt[57 + 64*g] < f < (1/2)*(-1 + 4*g) && 2 < e < (3 + 4*g)/(2 + f) && 1 < d < (1/2)*(1 - 2*f + 4*g)) || g > 7/4 && (3/2 < f < 2 && (2 < e < (1/2)*(1 + 2*f) && 1 < d < (1/2)*(1 - 2*f + 4*g) || (1/2)*(1 + 2*f) < e < (3 + 4*g)/(2 + f) && 1 < d < 1 - e + 2*g) || 2 < f < (1/5)*(-4 + 8*g) && (2 < e < 5/2 && 1 < d < (1/2)*(1 - 2*f + 4*g) || 5/2 < e < (3 + 4*g)/(2 + f) && 1 < d < 3 - e - f + 2*g) || (1/5)*(-4 + 8*g) < f < (1/2)*(-1 + 4*g) && 2 < e < (3 + 4*g)/(2 + f) && 1 < d < (1/2)*(1 - 2*f + 4*g)) Looking at it carefully you see that you can't express the bounds for the other parameters in terms of g alone. Perhaps I have misunderstood you, but it seems to me that the problem you are trying to solve is much more complex than you seem to realize. Andrzej Kozlowski Yokohama, Japan http://www.mimuw.edu.pl/~akoz/ http://platon.c.u-tokyo.ac.jp/andrzej/ On Sunday, March 9, 2003, at 12:31 am, Christina Chan wrote: > The problem I am working on involves 28 variables in 192 inequalities. > I tried a simpler problem (one that involves 6 variables and 16 > inequalities) using InequalitySolve and it gave me a solution that was > very difficult to comprehend. The sample problem is solving > {a,b,c,d,e,f,g}, from > > c>0, > > b>0, > > a>0, > > a+b+c+4g>2d+2e+2f, > > 2e>b, > > 2e>c > > a+2e>b+c, > > a+4g>2d+2f, > > 2f>a, > > b+2f>a+c, > > 2f>c, > > b+4g>2d+2e, > > c+2d>a+b, > > 2d>a, > > 2d>b, > > c+4g>2e+ef > > Solving the set of inequatlities by hand allows us to express all > variables with dependence on g. Is there a way Mathematica can do > that? > > Christina > > > > >From: Andrzej Kozlowski To: mathgroup at smc.vnet.net > > >To: "Christina Chan" > > >CC: mathgroup at smc.vnet.net > > >Subject: [mg39883] Re: [mg39764] Solving a system of Inequalities > > >Date: Thu, 6 Mar 2003 19:10:09 +0900 > > > > > >Mathematica has in fact a very rich collection of functions for > > >solving algebraic inequalities, but your message makes me doubt that > > >that the kind of solution you seem to expect to get for your system > > >is actually possible. You say that "InequalitySolve gives me a > > >solution that is more complicated than the problem itself". Actually > > >InequalitySolve represents the solution of a system in cylindrical > > >form, which is usually the most convenient for further processing. > > >In general there is nothing simpler available, although in special > > >cases humans rather than computer can find simpler representations. > > >To decide if your case is one of these one would have either to see > > >the full problem or at least a toy problem with the same sort of > > >structure. > > > > > >Andrzej Kozlowski > > >Yokohama, Japan > > >http://www.mimuw.edu.pl/~akoz/ > > >http://platon.c.u-tokyo.ac.jp/andrzej/ > > > > > > > > >On Thursday, March 6, 2003, at 04:36 pm, Christina Chan wrote: > > > > > >>Hi, > > >>I have 192 linear inequalities containing 28 variables and I want > > >>to find the constraints for each of the variables. I am thinking > > >>about solving the system by eiliminating the variables one by one > > >>(similar to the Gaussian Elimination). Is there a way I can do it > > >>with Mathematica? The function InequalitySolve gives me a solution > > >>that is more complicated than the problem itself.Is there any other > > >>functions that might help? Thank you!! > > >> > > >>Christina > > >> > > >> > > >> > > > > > > > > <image.tiff> > > Tired of spam? Get advanced junk mail protection with MSN 8.