Re: Re: Re: Hold and Equal

*To*: mathgroup at smc.vnet.net*Subject*: [mg73837] [mg73837] Re: [mg73771] Re: [mg73747] Re: Hold and Equal*From*: "Chris Chiasson" <chris at chiasson.name>*Date*: Fri, 2 Mar 2007 06:18:35 -0500 (EST)*References*: <erufqm$s7j$1@smc.vnet.net> <200702271048.FAA24024@smc.vnet.net>

In[1]:= Attributes@formEquation=List@HoldFirst(*or one could just supply Unevaluated arguments*) Out[1]= {HoldFirst} In[2]:= formEquation[expr_,op_]:=With[{result=op@expr},HoldForm[expr=result]] In[3]:= formEquation[Integrate[x^2,x],Identity] Out[3]= \[Integral]x^2\[DifferentialD]x=x^3/3 On 2/28/07, Murray Eisenberg <murray at math.umass.edu> 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 > > > > > > > > -- > Murray Eisenberg murray 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 > > -- http://chris.chiasson.name/