[Date Index]
[Thread Index]
[Author Index]
Re: A harmless and amusing bug
*To*: mathgroup at smc.vnet.net
*Subject*: [mg76283] Re: A harmless and amusing bug
*From*: dimitris <dimmechan at yahoo.com>
*Date*: Sat, 19 May 2007 04:31:09 -0400 (EDT)
*References*: <f2jtne$cef$1@smc.vnet.net>
I think everything is normal (or quite normal!).
In[23]:=
y = x /. DSolve[Derivative[2][x][t] + 2*Derivative[1][x][t] + x[t] ==
Sin[t], x, t][[1]]
Out[23]=
Function[{t}, C[1]/E^t + (t*C[2])/E^t - Cos[t]/2]
In[24]:=
z = Function[{t}, C[1]/E^t + (t*C[2])/E^t - Cos[t]/2] (*pasted
result*)
Out[24]=
Function[{t}, C[1]/E^t + (t*C[2])/E^t - Cos[t]/2]
In[25]:=
y === z
Out[25]=
False
In[32]:=
LeafCount /@ {y, z}
Out[32]=
{27, 29}
In[33]:=
FullForm /@ {y, z}
Out[33]=
{Function[List[t],Plus[Times[Power[
E,Times[-1,
t]],C[1]],Times[Power[E,Times[-1,t]],t,C[2]],Times[Rational[-1,2],
Cos[t]]]],Function[List[t],Plus[Times[Power[E,Times[-1,t]],C[
1]],Times[Power[E,Times[-1,t]],t,C[2]],Times[-1,Times[Cos[
t],Power[2,-1]]]]]}
The two expressions have different FullForm! So SameQ results in
False.
What I don't understand however is that neither
FullSimplify[y == z]
nor
FullSimplify[y == z, ComplexityFunction -> LeafCount]
returns True as it should be! Something happens here.
Anyway, what is the reason to use paste?
In[34]:=
y1 = x /. DSolve[Derivative[2][x][t] + 2*Derivative[1][x][t] + x[t] ==
Sin[t], x, t][[1]]
Out[34]=
Function[{t}, C[1]/E^t + (t*C[2])/E^t - Cos[t]/2]
In[35]:=
z1 = %
Out[35]=
Function[{t}, C[1]/E^t + (t*C[2])/E^t - Cos[t]/2]
In[36]:=
FullSimplify[y1 == z1]
Out[36]=
True
In[37]:=
y1 === z1
Out[37]=
True
In[38]:=
LeafCount /@ {y1, z1}
Out[38]=
{27, 27}
Dimitris
/ Fred Simons :
> I found this example in a very old notebook of mine and I do not
> remember if this has already been discussed in this group.
>
> The following seems to be a harmless and amusing bug. It happens both in
> Mathematica 5 and in Mathematica 6 under Windows.
>
> Execute the following command:
>
> y = x /. DSolve[x''[t]+ 2 x'[t]+ x[t]==Sin[t], x, t][[1]]
>
> Copy the result, paste it in the following command and execute.
>
> z =pasted result
>
> Obviously, y equals z. However,
>
> SameQ[y,z] --> False
>
> So here we have an example of two different Mathematica expressions with
> the property that on level 1 all subexpressions are equal:
>
> And @@ Table[y[[i]] === z[[i]], {i, 0,2}] --> True
>
> It also is an example of two different expressions that convert to the
> same string:
>
> Equal[ToString /@ {y,z}] --> True
>
> The expression y has more leaves than can be found at level -1, and
> anyway less than the number of leaves of the expression z:
>
> {LeafCount[#], Length[Level[#, {-1}, Heads->True]]}& /@ {y,z} -->
> {{27,25},{29,29}}
>
> Fred Simons
> Eindhoven University of Technology
Prev by Date:
**Re: All permutations of a sequence**
Next by Date:
**Re: Integrate[Log[a]+...+O[a]^n,x]**
Previous by thread:
**Re: A harmless and amusing bug**
Next by thread:
**Re: Re: A harmless and amusing bug**
| |