Re: Hold and Equal
- To: mathgroup at smc.vnet.net
- Subject: [mg73799] Re: Hold and Equal
- From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
- Date: Thu, 1 Mar 2007 06:04:18 -0500 (EST)
- Organization: Uni Leipzig
- References: <erufqm$s7j$1@smc.vnet.net> <200702271048.FAA24024@smc.vnet.net> <es3ib9$nus$1@smc.vnet.net>
- Reply-to: kuska at informatik.uni-leipzig.de
Hi, and SetAttributes[formEquation, HoldFirst] formEquation[expr_, op_] := HoldForm[expr = z] /. z -> op[expr] will work as expected. Regards Jens Murray Eisenberg wrote: > Aha! I believe this approach _almost_ allows me to accomplish what I > was REALLY trying to accomplish. It certainly works in the example I > gave. If I encapsulate this in a function... > > formEquation[expr_, op_]:= HoldForm[expr=z]/.z\[Rule]op[expr] > > ... then > > formEquation[(a+b)^2,Identity] > > will produce exactly what I want. > > However, if I try something like the example I was really after (which I > didn't mention in my original post, since I gave something simpler), it > works in the direct version... > > HoldForm[Integrate[x^2,x] = z] /. z\[Rule]Integrate[x^2,x] > > but not with the encapsulating function: > > formEquation[Integrate[x^2, x], Identity] > > The latter produces the equation > > x^3/3 = x^3/2 > > whereas I want the left-hand side to be the unevaluated integral expression. > > You can tell I'm struggling with Hold! (One of the "last frontiers" in > my Mathematica education.) > > bghiggins at ucdavis.edu wrote: >> Murray, >> >> Try this >> >> >> HoldForm[(a + b)^2 = z] /. z -> Expand[(a + b)^2] >> >> >> (a + b)^2 = a^2 + 2*a*b + b^2 >> >> Cheers, >> >> Brian >> >> >> >> On Feb 26, 3:20 am, Murray Eisenberg <mur... at math.umass.edu> wrote: >>> How can I produce in an Output cell (under program control) an >>> expression like the following, >>> >>> (a+b)^2 = a^2+ 2 a b + b^2 >>> >>> where instead of the usual Equal (==) I get a Set (=), as in traditional >>> math notation? I want to input the unexpanded (a+b)^2 and have the >>> expansion done automatically. >>> >>> Of course, I can try something like the following: >>> >>> (a+b)^2 == Expand[(a+b)^2]) >>> >>> So how do I convert the == to =? Of course >>> >>> ((a + b)^2 == Expand[(a + b)^2]) /. Equal -> Set >>> >>> gives a Set::write error. And >>> >>> (Hold[(a + b)^2 == Expand[(a + b)^2]]) /. Equal -> Set >>> >>> doesn't actually evaluate the Expand part and leaves the "Hold" wrapper. >>> >>> -- >>> Murray Eisenberg mur... at math.umass.edu >>> Mathematics & Statistics Dept. >>> Lederle Graduate Research Tower phone 413 549-1020 (H) >>> University of Massachusetts 413 545-2859 (W) >>> 710 North Pleasant Street fax 413 545-1801 >>> Amherst, MA 01003-9305 >> >> >