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_, ∞] &)" 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 >>> >