MathGroup Archive 2006

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

Search the Archive

Re: Re: Question about Reduce

  • To: mathgroup at smc.vnet.net
  • Subject: [mg71305] Re: [mg71294] Re: [mg71272] Question about Reduce
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Tue, 14 Nov 2006 05:06:24 -0500 (EST)
  • References: <200611121148.GAA18697@smc.vnet.net> <200611130534.AAA18444@smc.vnet.net>

On 13 Nov 2006, at 14:34, Andrzej Kozlowski wrote:

>
> *This message was transferred with a trial version of CommuniGate 
> (tm) Pro*
>
> On 12 Nov 2006, at 20:48, dimitris wrote:
>
>> Consider the following simple quadratic equation
>>
>> eq = a*x^2 + b*x + c == 0;
>>
>> Solve[eq, x]
>> {{x -> (-b - Sqrt[b^2 - 4*a*c])/(2*a)}, {x -> (-b + Sqrt[b^2 -
>> 4*a*c])/(2*a)}}
>>
>> For the complete set of solutions we use Reduce
>>
>> Reduce[eq, x]
>> (a != 0 && (x == (-b - Sqrt[b^2 - 4*a*c])/(2*a) || x == (-b + Sqrt 
>> [b^2
>> - 4*a*c])/(2*a))) || (a == 0 && b != 0 && x == -(c/b)) ||  (c == 0
>> && b
>> == 0 && a == 0)
>>
>> The following commnds give the desired results
>>
>> Reduce[eq && b^2 - 4*a*c < 0, x, Reals]
>> False
>>
>> Reduce[eq && a == 0, x]
>> (a == 0 && b != 0 && x == -(c/b)) || (c == 0 && b == 0 && a == 0)
>>
>> Reduce[eq && c == 0 && a == 0, x]
>> (c == 0 && b == 0 && a == 0) || (c == 0 && a == 0 && b != 0 && x  
>> == 0)
>>
>> Howver why the following don't simplify to the double root?
>>
>> Reduce[a*x^2 + b*x + c == 0 && b^2 - 4*ac == 0 && a != 0, x]
>> ac == b^2/4 && a != 0 && (x == (-b - Sqrt[b^2 - 4*a*c])/(2*a) || x ==
>> (-b + Sqrt[b^2 - 4*a*c])/(2*a))
>>
>> Reduce[a*x^2 + b*x + c == 0 && ac == b^2/4 && a != 0, x]
>> ac == b^2/4 && a != 0 && (x == (-b - Sqrt[b^2 - 4*a*c])/(2*a) || x ==
>> (-b + Sqrt[b^2 - 4*a*c])/(2*a))
>>
>> Thanks in advance for any help!
>>
>
> First of all, there is a mistake in  your input; you have "ac"
> instead of "a*c". Secondly, Reduce will not do what you expect to
> because for reasons of performance it does not try to simplify its
> output by using the input as a set of assumptions. Or, to put in in
> another way, it does not do this:
>
>
> Simplify[Reduce[a*x^2 + b*x + c == 0, x], b^2 - 4*a*c == 0 && a != 0]
>
> b + 2*a*x == 0
>
> Andrzej Kozlowski
>

It may be interesting to note that instead of using Simplify as in  
this example, one can in effect "pass the assumption" b^2 - 4*a*c=0  
to Reduce by using GroebnerBasis, e.g. as follows:


Reduce[GroebnerBasis[{a*x^2 + b*x + c, b^2 - 4*a*c}, {c, b, a, x}] ==  
0, x]


(c == 0 && b == 0 && a == 0) || (c == 0 && b == 0 && a != 0 && x ==  
0) ||
   (c != 0 && a == b^2/(4*c) && a != 0 && x == -(b/(2*a)))


Andrzej Kozlowski


  • Prev by Date: GUIKit error on closing window
  • Next by Date: Extend FindRoot
  • Previous by thread: Question about Reduce
  • Next by thread: Re: Question about Reduce