Google Группы больше не поддерживают новые публикации и подписки в сети Usenet. Опубликованный ранее контент останется доступен.

Are these bugs fixed in Mathematica 8 ?

11 просмотров
Перейти к первому непрочитанному сообщению

Ted Ersek

не прочитано,
7 дек. 2010 г., 06:47:4507.12.2010
I don't plan on upgrading to Mathematica 8 anytime soon.
Note: I no longer get to use it at work, and I don't use it very much at
home.


Below are some bugs in Mathematica 7 that I reported to Wolfram Research
tech-support,
and I was wondering if they are fixed in version 8.
----------------------------------------------------

In[1]:= SetOptions[ FourierTransform, FourierParameters->{1,1} ];
x[t_,a_,b_] :=
((t+a/2)*UnitStep[t+a/2]-(t-a/2)*UnitStep[t-a/2])*b/(2*a);
Plot[ x[t,20,24], {t,-12,12} ]

(* Graphic not shown *)

In[4]:= FullSimplify[ FourierTransform[x[t,a,b],t,w], And[ 0<a, 0<b,
Element[w,Reals]] ]

Out[4]= ((I/2)*b*E^((I/2)*a*w))/w

It seems to me the previous result should be
2*I*b/(a*w^2)*Sin[a*w/2]+ Pi*b*DiracDelta[w]

Notice the above setting for FourierParameters.

(* -------------------------------------------------- *)

In[5]:= Off[General::ovfl,General::unfl];
SlightlyNegative= -$MinNumber/10;
VeryNegative= -10*$MaxNumber;
BigComplex=($MaxNumber (-0.664-0.747 I))^4;
{SlightlyNegative,VeryNegative,BigComplex}

Out[9]= {Underflow[], Overflow[], Overflow[]}


I agree that the results above lead to underflow and overflow.
However, I was surprised by the result of the next two cells.
Although the next two output cells are mostly by design since the
documentation for Overflow says
"Overflow[] is considered a Real number." The documentation for Underflow
is similar.

In[10]:= {Head[SlightlyNegative], Head[VeryNegative], Head[BigComplex]}

Out[10]= {Real , Real , Real}

In[11]:= { NumericQ[SlightlyNegative], NumberQ[SlightlyNegative],
NumericQ[VeryNegative], NumberQ[VeryNegative] }

Out[11]= {True, True, True, True}

Mathematica 7 represents any overflow as Overflow[], and any underflow as
Underflow[].
As a result any information on the sign[_], and Arg[_] of such a results are
lost.
The documentation doesn't mention that some built-in functions consider any
overflow
or underflow a positive real number :-(
This leads to incorrect results below.

In[12]:= {Sign[VeryNegative], Sign[SlightlyNegative], Sign[BigComplex]}

Out[12]= {1, 1, 1 }


In[13]: Map[0<#&, {SlightlyNegative, VeryNegative, BigComplex} ]

Out[13]= {True, True, True}

In[14]:= Element[BigComplex, Reals]

Out[14]= True

In[15]:= Im[BigComplex]

Out[15]= 0

In[16]:= VeryNegative + Exp[5.0*^323228465]

Out[16]= Overflow[]

In the previous line we are computing Overflow[] + Overflow[].
Even if Mathematica would keep track of the sign of an overflow, it would
not
know which has larger magnitude, so the result should be Indeterminate.


The next result is most outrageous because Exp[1.5*^-323228465] is very
close to 1.


In[16]:= 10^80000 < Exp[1.5*^-323228465]

Out[16]= True

----------------
Ted Ersek

Murray Eisenberg

не прочитано,
8 дек. 2010 г., 06:40:4408.12.2010
Mathematica 8.0.0 results shown below.

On 12/7/2010 6:47 AM, Ted Ersek wrote:
>
> Below are some bugs in Mathematica 7 that I reported to Wolfram Research
> tech-support,
> and I was wondering if they are fixed in version 8.
> ----------------------------------------------------
>
> In[1]:= SetOptions[ FourierTransform, FourierParameters->{1,1} ];
> x[t_,a_,b_] :=
> ((t+a/2)*UnitStep[t+a/2]-(t-a/2)*UnitStep[t-a/2])*b/(2*a);
> Plot[ x[t,20,24], {t,-12,12} ]
>
> (* Graphic not shown *)
>
>
> In[4]:= FullSimplify[ FourierTransform[x[t,a,b],t,w], And[ 0<a, 0<b,
> Element[w,Reals]] ]
>
> Out[4]= ((I/2)*b*E^((I/2)*a*w))/w

(* Mathematica 8 *)
(b*Pi*DiracDelta[w])/2 + (I*b*Sin[(a*w)/2])/(a*w^2)

>
>
> It seems to me the previous result should be
> 2*I*b/(a*w^2)*Sin[a*w/2]+ Pi*b*DiracDelta[w]
>
> Notice the above setting for FourierParameters.
>
> (* -------------------------------------------------- *)
>
> In[5]:= Off[General::ovfl,General::unfl];
> SlightlyNegative= -$MinNumber/10;
> VeryNegative= -10*$MaxNumber;
> BigComplex=($MaxNumber (-0.664-0.747 I))^4;
> {SlightlyNegative,VeryNegative,BigComplex}
>
> Out[9]= {Underflow[], Overflow[], Overflow[]}
>
>
> I agree that the results above lead to underflow and overflow.
> However, I was surprised by the result of the next two cells.
> Although the next two output cells are mostly by design since the
> documentation for Overflow says
> "Overflow[] is considered a Real number." The documentation for Underflow
> is similar.
>
>
> In[10]:= {Head[SlightlyNegative], Head[VeryNegative], Head[BigComplex]}
>
> Out[10]= {Real , Real , Real}
>

(* Mathematica 8: same result *)


>
>
> In[11]:= { NumericQ[SlightlyNegative], NumberQ[SlightlyNegative],
> NumericQ[VeryNegative], NumberQ[VeryNegative] }
>
> Out[11]= {True, True, True, True}

(* Mathematica 8: same result *)

>
> Mathematica 7 represents any overflow as Overflow[], and any underflow as
> Underflow[].
> As a result any information on the sign[_], and Arg[_] of such a results are
> lost.
> The documentation doesn't mention that some built-in functions consider any
> overflow
> or underflow a positive real number :-(
> This leads to incorrect results below.
>
>
> In[12]:= {Sign[VeryNegative], Sign[SlightlyNegative], Sign[BigComplex]}
>
> Out[12]= {1, 1, 1 }
>

(* Mathematica 8 * )
{1, 0, 1}


>
>
> In[13]: Map[0<#&, {SlightlyNegative, VeryNegative, BigComplex} ]
>
> Out[13]= {True, True, True}

(* Mathematica 8: same result *)

>
> In[14]:= Element[BigComplex, Reals]
>
> Out[14]= True
>

(* Mathematica 8: same result *)

>
> In[15]:= Im[BigComplex]
>
> Out[15]= 0
>

(* Mathematica 8: same result *)


>
> In[16]:= VeryNegative + Exp[5.0*^323228465]
>
> Out[16]= Overflow[]
>

(* Mathematica 8: same result *)

>
> In the previous line we are computing Overflow[] + Overflow[].
> Even if Mathematica would keep track of the sign of an overflow, it would
> not
> know which has larger magnitude, so the result should be Indeterminate.
>
>
> The next result is most outrageous because Exp[1.5*^-323228465] is very
> close to 1.
>
>
> In[16]:= 10^80000< Exp[1.5*^-323228465]
>
> Out[16]= True

(* Mathematica 8: same result *)

Note also:

Exp[1.5*^-323228465]
Overflow[]

--
Murray Eisenberg mur...@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

0 новых сообщений