       Re: Solve can solve it with some help

• To: mathgroup at smc.vnet.net
• Subject: [mg115384] Re: Solve can solve it with some help
• From: Peter Pein <petsie at dordos.net>
• Date: Mon, 10 Jan 2011 02:34:03 -0500 (EST)
• References: <igbnk8\$hj9\$1@smc.vnet.net>

```On 09.01.2011 08:20, Eduardo Cavazos wrote:
> Hello,
>
> Solve doesn't come up with anything for these two equations:
>
> {
>    0 == 1/2*m*vf^2 + 0 - m*g*(R - R*Cos[\[Theta]]),
>
>    m*vf^2/R == m*g*Cos[\[Theta]]
>    };
> Solve[%, \[Theta]]
>
> If you manually solve one of them for vf, Solve can take care of the
> rest:
>
> 0 == 1/2*m*vf^2 + 0 - m*g*(R - R*Cos[\[Theta]]);
> % /. Solve[m*vf^2/R == m*g*Cos[\[Theta]], vf][];
> Solve[%, \[Theta]]
>
> {{\[Theta] ->  -ArcCos[2/3]}, {\[Theta] ->  ArcCos[2/3]}}
>
> Of course, Reduce can handle the original set. However, Solve is nice
> due to the brevity of output. (Side question: is there a way to extract
> an equation from the results of Reduce based on variable name? Sometimes
> the results from Reduce can be so verbose, it'd be nice to say "extract
> equation for theta".)
>
> My main question: is there a way to get Solve to solve the original set
> of two equations without taking the manual approach?
>
> Ed
>
>
Hi Ed,

to extract a list of rules from a result returned by Reduce, I sometimes
use:

ReduceToRules[red_, var_] :=
Cases[LogicalExpand[red] /. And | Or -> List,
{___, HoldPattern[Equal[var, val_] | Equal[val_, var]], ___} :>
{Rule[var, val]}, 1] // Union