[Date Index]
[Thread Index]
[Author Index]
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/
Prev by Date:
**Re: Detecting unsuccessful computations**
Next by Date:
** Re: Detecting unsuccessful computations**
Previous by thread:
**Re: Simplify[Abs[x],x<0]]**
Next by thread:
**Re: Simplify[Abs[x],x<0]]**
| |