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][[2]]; > 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 which returns in your example {{\[Theta] -> -ArcCos[2/3] + 2 \[Pi] C[1]}, {\[Theta] -> ArcCos[2/3] + 2 \[Pi] C[1]}} Peter