MathGroup Archive 2006

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

Search the Archive

RE: Re: General--Exponential simplifications by default

  • To: mathgroup at smc.vnet.net
  • Subject: [mg69120] RE: [mg69073] Re: General--Exponential simplifications by default
  • From: "Valko, Peter" <valko at pe.tamu.edu>
  • Date: Wed, 30 Aug 2006 06:34:28 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Andrzej:

You tried to convince me that Denominator[] and Numerator[]  evaluates
its argument in a standard way and then they find the positive and
negative powers.
I tried to convince you, that Denominator[] and Numerator[] do something
more: practically intermitting a Simplify[] operation before really
getting to do the real job.
Proof:

If I write 
1/Sqrt[2] 
or I write
Evaluate[1/Sqrt[2]]  
I still get 
1/Sqrt[2] (in input form) or Power[2,Rational[-1,2]] (in full form).

However, when I ask for  
Numerator[1/Sqrt[2]]
I get 
Sqrt[2] (in input form) or Power[2, Rational[1, 2]] (in full form)
so "it is pretty clear" that Numerator[] and Denominator[] are doing
something secret after evaluating the argument and before really finding
the Numerator and Denominator.

Your "solution" suggesting to use
Numerator[Unevaluated[1/Sqrt[2]]]
does something else than just preventing the evaluation of
1/Sqrt[2]
(because we already agreed that the evaluation does not do anything to
the expression 1/Sqrt[2]). 
What it really prevents is the simplification of the unevaluated or the
evaluated expression, because (I guess) an Unevaluated[expression] is
left intact by Simplify[].  


Or am I missing something?




-----Original Message-----
From: Andrzej Kozlowski [mailto:akoz at mimuw.edu.pl] 
To: mathgroup at smc.vnet.net
Subject: [mg69120] Re: [mg69073] Re: General--Exponential simplifications by
default

Pro* The statement about FullForm you are quoting is "true", at best,
only in a "certain sense":
  FullForm does "not affect" evaluation "inside" FullForm, as in:

FullForm[2^2]//InputForm

FullForm[4]

But of course it does affect evaluation "outside" FullForm, as in:


FullForm[2]^2//InputForm


FullForm[2]^2

This is the reason why you also get:


{Numerator[#],Denominator[#]}&@FullForm[2/3]//InputForm


{FullForm[2/3], 1}

which I think makes pretty clear what happened also in your example.

Andrzej Kozlowski



On 29 Aug 2006, at 08:26, p-valko at tamu.edu wrote:

> Thanks and basically I agree. However, a funny side effect is the
> following:
>
> Denominator[Exp[x] /. x -> -2 ]
> gives
> E^2
>
> but
>
> Denominator[FullForm[Exp[x]] /. x -> -2 ] gives
> 1
>
> In other words, wrapping the FullForm around an expression changes its

> "meaning".
> This contradicts the statement that
>>> FullForm acts as a "wrapper", which affects printing, but not 
>>> evaluation.<<
> Or am I missing something?
>
>
>
> Andrzej Kozlowski wrote:
>> I do not consider any of these examples "a contradiction". What needs

>> to be understood is the difference between certain Mathematica 
>> expressions before and after they are evaluated. In the case of your 
>> examples consider:
>>
>>
>> Numerator[Unevaluated[Exp[-x]]]
>>
>> E^(-x)
>>
>> vs
>>
>> Numerator[Exp[-x]]
>>
>> 1
>>
>>
>> Numerator[Unevaluated[1/Sqrt[2]]]
>>
>> 1
>>
>> vs
>>
>> Numerator[1/Sqrt[2]]
>>
>> Sqrt[2]
>>
>> The cause of the apparent problem is that Numerator does not hold its

>> argument, so whiteout Unevaluated you are getting the numerator of 
>> the whatever your expression evaluates to, not of your actual input.
>> TO get the latter you simply need to use Unevaluated.  This is no 
>> different from:
>>
>>
>> Numerator[3/6]
>>
>> 1
>>
>> Numerator[Unevaluated[3/6]]
>>
>> 3
>>
>> If this is not a contradiction than neither are the other examples.
>> Understanding the process of evaluation is perhaps the most important

>> thing when using functional languages (not just Mathematica, the same

>> sort of things occur, perhaps in an even more striking way,  in 
>> languages like Lisp ).
>>
>> Andrzej Kozlowski
>>
>>
>>
>> On 27 Aug 2006, at 07:24, p-valko at tamu.edu wrote:
>>
>>> Daniel,
>>> Could you tell me why the contradiction?:
>>>
>>> In[14]:=Exp[-x]//InputForm
>>> Out[14]//InputForm=E^(-x)
>>>
>>> In[15]:=Numerator[Exp[-x]]//InputForm
>>> Out[15]//InputForm=1
>>>
>>> Mathematica automatically turns it into Power[E, Times[-1, x]], but 
>>> the user beleives that the exponent is in the numerator.
>>> What you see is not what you get!
>>>
>>>
>>> My favorite contradiction is the following:
>>>
>>> In[24]:=Numerator[1/Sqrt[2]]//InputForm
>>> Out[24]//InputForm=Sqrt[2]
>>>
>>> In[25]:=Denominator[1/Sqrt[2]]//InputForm
>>> Out[25]//InputForm=2
>>>
>>> I think "Numerator" and "Denominator" should not be allowed to do 
>>> whatever they want. Too much liberty here...
>>>
>>> Peter
>>>
>>>
>>> Daniel Lichtblau wrote:
>>>> guillaume_evin at yahoo.fr wrote:
>>>>> Hi !
>>>>>
>>>>> I want to avoid simplifications when Mathematica integrates 
>>>>> expressions with exponential terms. For example, I have :
>>>>>
>>>>> In[8]=      Espcond[y_] = Integrate[x*Densx[x, y], {x, 0,
>>>>> Infinity}, Assumptions -> alpha > 0]
>>>>> Out[8]=      E^(-2eta y)(-theta + E^(eta y)(2+theta))/(2alpha)
>>>>>
>>>>> I do not want to have a factorization by E^(-2eta y). More 
>>>>> precisely I would like to have the following result:
>>>>> Out[8]=      (-theta E^(-2eta y)+ E^(-eta y)(2+theta))/(2alpha)
>>>>>
>>>>> I guess there is a way to tackle this problem with 
>>>>> "ComplexityFunction" and "Simplify", but I tried different things 
>>>>> such as "ComplexityFunction -> (Count[{#1}, Exp_, &#8734;] &)" in 
>>>>> the "Simplify" function but no change appears.
>>>>>
>>>>> Is someone could give me some tricks on how tu use the 
>>>>> "ComplexityFunction" ?
>>>>>
>>>>> Thank you in advance.
>>>>>
>>>>> Guillaume
>>>>>
>>>>> Link to the forum page for this post:
>>>>> http://www.mathematica-users.org/webMathematica/wiki/wiki.jsp?
>>>>> pageName=Special:Forum_ViewTopic&pid=12974#p12974
>>>>> Posted through http://www.mathematica-users.org [[postId=12974]]
>>>>
>>>>
>>>> Could Collect with respect to powers of the exponential.
>>>>
>>>> In[59]:= ee = E^(-2eta*y)*(-theta + E^(eta*y)(2+theta))/(2*alpha);
>>>>
>>>> In[60]:= InputForm[Collect[ee, Exp[eta*y]]] Out[60]//InputForm=
>>>> -theta/(2*alpha*E^(2*eta*y)) + (2 + theta)/(2*alpha*E^(eta*y))
>>>>
>>>> Daniel Lichtblau
>>>> Wolfram Research
>>>
>


  • Prev by Date: Re: RE: Re: General--Difficulties in Understanding Mathematica Syntax
  • Next by Date: Re: Re: General--Exponential simplifications by default
  • Previous by thread: Re: General--Exponential simplifications by default
  • Next by thread: Re: Re: General--Exponential simplifications by default