       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>

```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

```

• Prev by Date: Re: Re: Re: Hold and Equal
• Next by Date: Cases to Select : Erratum [Wrong Sublist]
• Previous by thread: Re: Hold and Equal
• Next by thread: Re: Re: Re: Hold and Equal