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, 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 ... (more)