MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

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


  • Next by Date: Combine 2d and 3d plots that has different ranges
  • Next by thread: Re: Hold and Equal