Re: Re: Hold and Equal

*To*: mathgroup at smc.vnet.net*Subject*: [mg73918] Re: [mg73799] [mg73799] Re: Hold and Equal*From*: Murray Eisenberg <murray at math.umass.edu>*Date*: Sat, 3 Mar 2007 01:00:58 -0500 (EST)*Organization*: Mathematics & Statistics, Univ. of Mass./Amherst*References*: <erufqm$s7j$1@smc.vnet.net> <200702271048.FAA24024@smc.vnet.net> <es3ib9$nus$1@smc.vnet.net> <200703021058.FAA02239@smc.vnet.net>*Reply-to*: murray at math.umass.edu

By itself, yes, that works. But not in a sufficiently robust way if I want to call formEquation within, say, a Table expression where there's a parameter n that is part of the first argument to formEquation, as in: Table[formEquation[Integrate[x^n,x],Identity],{n,1,2}] Table[formEquation[(a+b)^n,Expand],{n,1,2} However, the methods suggested by albert in mg 73863 -- using a With construct within Table, or using a replacement for n -- handle this situation nicely. My question seems to have been provocative, and I thank all who responded. Jens-Peer Kuska wrote: > 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 >>> > -- 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

**References**:**Re: Hold and Equal***From:*Jens-Peer Kuska <kuska@informatik.uni-leipzig.de>