Limit[Nest[Sqrt[5 + #1] & , 5, n], n -> Infinity]
Nest::intnm : "Non - negative machine - size integer expected at
position 3 in ` ` ".
Limit[Nest[Sqrt[5 + #1] & , 5, n], n -> Infinity]
$VersionNumber
4.0
Needs["Calculus`Limit`"]
Limit[Nest[Sqrt[5 + #]&, 5, n], n -> Infinity]
(1/2)*(1 + Sqrt[21])
N[%]
2.79129
(*Check*)
Table[N[Nest[Sqrt[5 + #1] & , 5, n], 20], {n, 2, 10}]
{2.8569700138728056542,2.8030287215568815242,2.7933901842665806726,2.\
7916644111115112098,2.7913553000489764255,2.7912999301488502752,2.\
7912900118312411350,2.7912882351758732577,2.7912879169257823550}
$VersionNumber
5.2
Needs["Calculus`Limit`"]
Limit::obslt: Functionality previously provided by Limit.m is
superseded by the kernel Limit function. The package Calculus`Limit` is
obsolete.
I believe that Mathematica is behaving correctly in
this example.
Nest and NestList allow you to apply functions a fixed number of times.
In
this sense, the behavior of Ver. 5.X is correct while the behavior of
the
package "Limit" for Ver. 4 is inappropriate.
Often you may want to apply functions until the result no longer
changes.
You can do this using FixedPoint.
In[2]:=
FixedPoint[N[Sqrt[5 + #1] &, 40], N[5, 40]]
Out[2]=
2.791287847477920003294023596864004244492
Note that, the following won't terminate.
In[3]:=
FixedPoint[Sqrt[5 + #1] &, 5]
Out[3]=
$Aborted
because "SameTest" is done symbolically. You may do
In[4]:=
FixedPoint[Sqrt[5 + #1] &, 5.0000000000000000]
Out[4]=
2.791287
though it will take a lot more time if you add more "0"'s to the right
of
5.0000000000000000
This is again because of symbolic "SameTest."
If you do want to symbolically compute the fixed point of the function,
then, as you pointed out, you have to manually solve the equation:
In[5]:=
Solve[x == Sqrt[5 + x]]
Out[5]=
1 + Sqrt[21]
{{x -> ------------}}
2
I have done work on Limit over the past few years so I can comment from
that perspective. While I might have worded the response a bit
differently, I side with Tech Support on this. Let me give a few reasons.
Limit is designed to work on functions defined on a continuum, and known
in a closed form. The function in question satisfies neither requirement.
While it might be possible to find a closed form function that agrees with
it at integers, it is not something that will be done automatically
(indeed, such a function might or might not be what was "intended"). I'll
note that when I tried I was not able to get such a function for this
example using RSolve.
It is true that the Calculus`Limit code had some tricks built in for
handling examples such as this. Neat. (Or, if you are of the right age and
from the English-speaking world, groovy). What it did not have was
consistency or maintainability. The decision to scrap it was not exactly a
difficult call; it was riddled with bugs and simply not fixable.
Bottom line is that the Limit function was not designed or intended to
handle functions defined on only a sequence of points, or to handle
functions not given in explicit closed form. The Calculus`Limit function
had limited (if you will) capabilities in this respect. It is correct to
say that this particular aspect of the package function was not taken on
by the built-in Limit. For examples such as this one gets results exactly
as indicated in the TS response: use Solve to find an exact representation
of the fixed point for the iteration.
Daniel Lichtblau
Wolfram Research
Hi Dimitris,
if you've got the old Limit.m somewhere on your disks, you can Get[] it:
In[1]:=
$VersionNumber
Out[1]=
5.1
In[2]:=
Limit[Nest[Sqrt[5 + #1] & , 5, n], n -> Infinity]
Nest::intnm: ....
Out[2]=
Limit[Nest[Sqrt[5 + #1] & , 5, n], n -> Infinity]
In[3]:=
Get["D:\\Programme\\Wolfram \
Research\\Mathematica\\4.0\\Addons\\StandardPackages\\Calculus\\Limit.m"]
In[4]:=
Limit[Nest[Sqrt[5 + #1] & , 5, n], n -> Infinity]
Out[4]=
(1/2)*(1 + Sqrt[21])
P²
for Symbolics of M. Trott where it is used version 4.0.
Dimitris
Yes, you can use Solve[x == Sqrt[5 + x]] to get the exact solution to
this particular problem.
But how is the user supposed to know what equation to solve?
It is unfortunate that Mathematica is unable to give an exact solution
to the limit of expressions like:
Sqrt[10]
Sqrt[5+Sqrt[10]]
Sqrt[5+ Sqrt[5+Sqrt[10]]]
...
Thanks a lot for yor response.
Your explanation is clear. I got the point!
I really appreciate your assistance
Best Regards
Dimitris
P.S. Thanks also to everyone else that replied me.
Andrzej Kozlowski
Tokyo, Japan
On 28 Nov 2006, at 20:03, bobba...@frii.com wrote:
da...@wolfram.com wrote:
For examples such as this one gets results exactly
as indicated in the TS response: use Solve to find an exact representation
of the fixed point for the iteration.
Daniel Lichtblau
Wolfram Research
Yes, you can use Solve[x == Sqrt[5 + x]] to get the exact solution to