Ask Your Question

Revision history [back]

For reference, I am using Sage 6.3.beta5, in the command-line, on my computer, so the error messages might look slightly different than those you see. (You didn't specify what version of Sage you were using, or whether you were using Sage on your computer, in command-line, in the Sage notebook, on SageMathCloud, ...)

sage: version()
'Sage Version 6.3.beta5, Release Date: 2014-07-01'

When you are tracking an error, it helps to simplify the expression.

sage: limit(n*2n,n=infinity)
sage: limit(n*2n,n=infinity)
  File "<ipython-input-1-82ece3d42612>", line 1
    limit(n*2n,n=infinity)
             ^
SyntaxError: invalid syntax

The arrow is pointing to the error. In this case, the syntax error is in 2n, which you should type as 2*n.

Going further,

sage: limit(n!,n=infinity)
  File "<ipython-input-3-b3d491dc965e>", line 1
    limit(n!,n=infinity)
           ^
SyntaxError: invalid syntax

shows you that n! is not recognised. Use factorial(n).

Also, if you do:

sage: limit(n,n=oo)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-ed612516482f> in <module>()
----> 1 limit(n,n=oo)

/Applications/sage-6.3.beta5/local/lib/python2.7/site-packages/sage/calculus/calculus.pyc in limit(ex, dir, taylor, algorithm, **argv)
   1224     """
   1225     if not isinstance(ex, Expression):
-> 1226         ex = SR(ex)
   1227 
   1228     if len(argv) != 1:

/Applications/sage-6.3.beta5/local/lib/python2.7/site-packages/sage/structure/parent.so in sage.structure.parent.Parent.__call__ (build/cythonized/sage/structure/parent.c:8902)()

/Applications/sage-6.3.beta5/local/lib/python2.7/site-packages/sage/structure/coerce_maps.so in sage.structure.coerce_maps.DefaultConvertMap_unique._call_ (build/cythonized/sage/structure/coerce_maps.c:4203)()

/Applications/sage-6.3.beta5/local/lib/python2.7/site-packages/sage/structure/coerce_maps.so in sage.structure.coerce_maps.DefaultConvertMap_unique._call_ (build/cythonized/sage/structure/coerce_maps.c:4110)()

/Applications/sage-6.3.beta5/local/lib/python2.7/site-packages/sage/symbolic/ring.so in sage.symbolic.ring.SymbolicRing._element_constructor_ (build/cythonized/sage/symbolic/ring.cpp:5229)()

TypeError:

and that's because in Sage, n is a shortcut for the numerical_approximation function.

By contrast:

sage: limit(x,x=infinity)
+Infinity

Note that there is a convenient shortcut for infinity, which is oo, so you can type:

sage: limit(x,x=oo)
+Infinity

It's true that the error message for n is not very informative!

It gets more informative if you try:

sage: limit(2*n,n=infinity)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-9-fdebc251e72d> in <module>()
----> 1 limit(Integer(2)*n,n=infinity)

/Applications/sage-6.3.beta5/local/lib/python2.7/site-packages/sage/structure/element.so in sage.structure.element.RingElement.__mul__ (build/cythonized/sage/structure/element.c:15353)()

/Applications/sage-6.3.beta5/local/lib/python2.7/site-packages/sage/structure/coerce.so in sage.structure.coerce.CoercionModel_cache_maps.bin_op (build/cythonized/sage/structure/coerce.c:8323)()

TypeError: unsupported operand parent(s) for '*': 'Integer Ring' and '<type 'function'>'

There, Sage is telling you that it can't multiply an integer (here, 2) with a function (here, n).

To use n as a summation variable, first declare it as a symbolic variable:

sage: var('n')
n

Then things start to work.

sage: limit(n,n=oo)
+Infinity

And you can input the limit you were trying to compute.

sage: lim(((n^(2*n)-2*factorial(n)+n*log(n,10))^((n^(2*n))/factorial(n)))/(n^(((2*n)^(2*n))/(factorial(n-1)))),n=oo)
limit((n^(2*n) + n*log(n)/log(10) - 2*factorial(n))^(n^(2*n)/factorial(n))*n^(-(2*n)^(2*n)/factorial(n - 1)), n, +Infinity)

(I didn't know if 2n! in your code was for 2*factorial(n) or factorial(2*n).)

Here we see that Sage just returned the same expression. This means that the syntax was correct, that it tried to compute the limit, and couldn't simplify it.

I think the computation of such limits is done by Maxima behind the scenes.

You might want to try and simplify the expression before computing the limit.

For reference, I am using Sage 6.3.beta5, in the command-line, on my computer, so the error messages might look slightly different than those you see. (You didn't specify what version of Sage you were using, or whether you were using Sage on your computer, in command-line, in the Sage notebook, on SageMathCloud, ...)see, but presumably they occur in the same places.

sage: version()
'Sage Version 6.3.beta5, Release Date: 2014-07-01'

When you are tracking an error, it helps to simplify the expression.

sage: limit(n*2n,n=infinity)
sage: limit(n*2n,n=infinity)
  File "<ipython-input-1-82ece3d42612>", line 1
    limit(n*2n,n=infinity)
             ^
SyntaxError: invalid syntax

The arrow is pointing to the error. In this case, the syntax error is in 2n, which you should type as 2*n.

Going further,

sage: limit(n!,n=infinity)
  File "<ipython-input-3-b3d491dc965e>", line 1
    limit(n!,n=infinity)
           ^
SyntaxError: invalid syntax

shows you that n! is not recognised. Use factorial(n).

Also, if you do:

sage: limit(n,n=oo)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-5-ed612516482f> in <module>()
----> 1 limit(n,n=oo)

/Applications/sage-6.3.beta5/local/lib/python2.7/site-packages/sage/calculus/calculus.pyc in limit(ex, dir, taylor, algorithm, **argv)
   1224     """
   1225     if not isinstance(ex, Expression):
-> 1226         ex = SR(ex)
   1227 
   1228     if len(argv) != 1:

/Applications/sage-6.3.beta5/local/lib/python2.7/site-packages/sage/structure/parent.so in sage.structure.parent.Parent.__call__ (build/cythonized/sage/structure/parent.c:8902)()

/Applications/sage-6.3.beta5/local/lib/python2.7/site-packages/sage/structure/coerce_maps.so in sage.structure.coerce_maps.DefaultConvertMap_unique._call_ (build/cythonized/sage/structure/coerce_maps.c:4203)()

/Applications/sage-6.3.beta5/local/lib/python2.7/site-packages/sage/structure/coerce_maps.so in sage.structure.coerce_maps.DefaultConvertMap_unique._call_ (build/cythonized/sage/structure/coerce_maps.c:4110)()

/Applications/sage-6.3.beta5/local/lib/python2.7/site-packages/sage/symbolic/ring.so in sage.symbolic.ring.SymbolicRing._element_constructor_ (build/cythonized/sage/symbolic/ring.cpp:5229)()

TypeError:

and that's because in Sage, n is a shortcut for the numerical_approximation function.

By contrast:

sage: limit(x,x=infinity)
+Infinity

Note that there is a convenient shortcut for infinity, which is oo, so you can type:

sage: limit(x,x=oo)
+Infinity

It's true that the error message for n is not very informative!

It gets more informative if you try:

sage: limit(2*n,n=infinity)
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-9-fdebc251e72d> in <module>()
----> 1 limit(Integer(2)*n,n=infinity)

/Applications/sage-6.3.beta5/local/lib/python2.7/site-packages/sage/structure/element.so in sage.structure.element.RingElement.__mul__ (build/cythonized/sage/structure/element.c:15353)()

/Applications/sage-6.3.beta5/local/lib/python2.7/site-packages/sage/structure/coerce.so in sage.structure.coerce.CoercionModel_cache_maps.bin_op (build/cythonized/sage/structure/coerce.c:8323)()

TypeError: unsupported operand parent(s) for '*': 'Integer Ring' and '<type 'function'>'

There, Sage is telling you that it can't multiply an integer (here, 2) with a function (here, n).

To use n as a summation variable, first declare it as a symbolic variable:

sage: var('n')
n

Then things start to work.

sage: limit(n,n=oo)
+Infinity

And you can input the limit you were trying to compute.

sage: lim(((n^(2*n)-2*factorial(n)+n*log(n,10))^((n^(2*n))/factorial(n)))/(n^(((2*n)^(2*n))/(factorial(n-1)))),n=oo)
limit((n^(2*n) + n*log(n)/log(10) - 2*factorial(n))^(n^(2*n)/factorial(n))*n^(-(2*n)^(2*n)/factorial(n - 1)), n, +Infinity)

(I didn't know if 2n! in your code was for 2*factorial(n) or factorial(2*n).)

Here we see that Sage just returned the same expression. This means that the syntax was correct, that it tried to compute the limit, and couldn't simplify it.

I think the computation of such limits is done by Maxima behind the scenes.

You might want to try and simplify the expression before computing the limit.