Re: Re: cannot solve *trivial* equation
- To: mathgroup at smc.vnet.net
- Subject: [mg34426] Re: [mg34391] Re: [mg34380] cannot solve *trivial* equation
- From: Andrzej Kozlowski <andrzej at platon.c.u-tokyo.ac.jp>
- Date: Sun, 19 May 2002 04:14:47 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
On Saturday, May 18, 2002, at 08:04 PM, DrBob wrote:
>
> The confusing factor here is whether A and Q are parameters or
> variables. If they're variables, there's no reason Solve shouldn't
> solve the equations simultaneously for S. If they're parameters, it
> can't, since it can't assume the freedom to make A and Q have the right
> relationship to each other. Telling Solve to solve for or eliminate a
> symbol causes it to be treated as a variable, and not a parameter.
I don't find it confusing. Variables are what is passed as the second
(or second and third) argument to Solve. The rest are parameters.
Anyway, I explained this in my reply to the original questioner, which
has not yet appeared on the MathGroup, but will presumably at the same
time as this posting.
> Reduce[eqns,S]
>
> The result is not a substitution rule, however.
it is easy to make it one:
ToRules[Reduce[{A == S + Q, Q == 2*S}, S]]
Out[7]=
{2*A -> 3*Q, S -> Q/2}
>
> -----Original Message-----
> From: Andrzej Kozlowski [mailto:andrzej at platon.c.u-tokyo.ac.jp]
To: mathgroup at smc.vnet.net
> Sent: Saturday, May 18, 2002 2:51 AM
> Subject: [mg34426] [mg34391] Re: [mg34380] cannot solve *trivial* equation
>
> On Friday, May 17, 2002, at 07:31 PM, Marco Manfredini wrote:
> Hi,
>
> I just tried a friend's Mathematica 4.0.0.0:
>
> Solve[{A == S + Q, Q == 2*S}, A]
>
> => {A->3*S}
>
> Solve[{A == S + Q, Q == 2*S}, S]
>
> => {}
>
> Can somebody explain this to me? (ie. "bug","you stupid")
>
> Marco
>
>
>
>
>
>
>
>
> Read the documentation, you stupid. (Sorry, but you yourself asked for
> it).
> Solve only finds generic solutions, that is those that hold without any
> restrictions on the parameters. But in your case there are no such
> solutions: take A=Q=1 and you get incompatible equations. In other
> words you need restrictions on the parameters. The function to use in
> such cases is Reduce:
>
> In[1]:=
> Reduce[{A == S + Q, Q == 2*S}, S]
>
> Out[1]=
> 2*A == 3*Q && S == Q/2
>
> This tells you that a solution, S=Q/2 exists only if the condition
> 2*A == 3*Q is satisifed. That is why Solve did not find a generic
> solution, there aren't any.
>
> Andrzej
>
> PS. You didn't really think that a bug of this kind would have survived
> long enough for you to discover it, did you?
>
Andrzej Kozlowski
Toyama International University
JAPAN
http://platon.c.u-tokyo.ac.jp/andrzej/