Re: Simplify[Abs[x],x<0]]
- To: mathgroup at smc.vnet.net
- Subject: [mg39332] Re: [mg39303] Simplify[Abs[x],x<0]]
- From: Andrzej Kozlowski <andrzej at platon.c.u-tokyo.ac.jp>
- Date: Tue, 11 Feb 2003 04:47:05 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
In fact the following ComplexityFunction, (which I have used on this list before to deal with similar problems), works quite well: Simplify[Abs[x], x < 0, ComplexityFunction -> (StringLength[ToString[TraditionalForm[#]]] & )] -x The only problem is that it penalizes functions with long names, like KroneckerDelta. If one could deal with that problem I think it would be the ideal choice for the default ComplexityFZunction in Simplify. Andrzej Kozlowski On Tuesday, February 11, 2003, at 07:23 AM, Andrzej Kozlowski wrote: > Yes, but although I have known this for years, I kept getting deceived > by this silly point. WOuld it not however be easier if the default > ComplexityFunction in Mathematica reflected more closely the "visible" > number of characters rather then the Mathematica FullForm? > (LeafCount). > It should be possible to create a "VisibleCharacterLength" function > that would do that. > > A. > > On Tuesday, February 11, 2003, at 12:47 AM, Adam Strzebonski wrote: > >> This is an issue of deciding what is simpler. With the default >> ComplexityFunction -x is not simpler than Abs[x]. Simplify's >> built in complexity measure is based on FullForm of expressions, >> rather than on the size of printed output. >> >> In[1]:= LeafCount/@{-x, Abs[x]} >> Out[1]= {3, 2} >> >> In[2]:= -x // FullForm >> Out[2]//FullForm= Times[-1, x] >> >> In[3]:= Abs[x] // FullForm >> Out[3]//FullForm= Abs[x] >> >> With a ComplexityFunction attributing additional weight to Abs >> Simplify will transform Abs[x] to -x. >> >> In[4]:= f=1000 Count[#, _Abs, {0, Infinity}]+LeafCount[#]&; >> >> In[5]:= Simplify[ Abs[x] , x<0, ComplexityFunction -> f ] >> Out[5]= -x >> >> Best Regards, >> >> Adam Strzebonski >> Wolfram Research >> >> Andrzej Kozlowski wrote: >>> Almost certainly an oversight. However, if you replace Abs by >>> something equivalent, things work as they should, e.g: >>> Simplify[Sqrt[x*Conjugate[x]], x < 0] >>> -x >>> or >>> Simplify[Sqrt[Im[x]^2 + Re[x]^2], x < 0] >>> -x >>> etc. >>> On Monday, February 10, 2003, at 03:07 PM, Uri Zwick wrote: >>>> Hi, >>>> >>>> Simplify[ Abs[x] , x>0 ] returns x. >>>> But, Simplify[ Abs[x] , x<0] returns Abs[x], and not -x. >>>> >>>> Why is that? >>>> >>>> Uri >>>> >>>> >>>> >>>> >>> Andrzej Kozlowski >>> Yokohama, Japan >>> http://www.mimuw.edu.pl/~akoz/ >>> http://platon.c.u-tokyo.ac.jp/andrzej/ >> >> >> >> >> > Andrzej Kozlowski > Yokohama, Japan > http://www.mimuw.edu.pl/~akoz/ > http://platon.c.u-tokyo.ac.jp/andrzej/ > > Andrzej Kozlowski Yokohama, Japan http://www.mimuw.edu.pl/~akoz/ http://platon.c.u-tokyo.ac.jp/andrzej/