Limit comparison test
Hi! I want to define a function to do limit comparison test. I want the function that can be given one or three arguments. First argument should be the formula for n-th element of sequence I want to put to the test - a. Second, optional, argument should be the formula for n-th element of sequence I want to compare with - b. Third argument should be the letters 'k' or 'd' wether the given sequence b is convergent or divergent.
I have problem to define a function with optional number of arguments. I don't know how to make the program differentiate the number of arguments. I used the nargs command but it does not work.
var('n,b,L')
def limzk(a, *args):
if nargs==0:
b=1/n^2
L=lim(a/b, n=Infinity)
if L<Infinity:
print('convergent')
else:
b=1/n
L=lim(a/b, n=Infinity)
if L>0:
print('divergent')
else:
print('cannot be decided by this test')
elif nargs==2:
if args[1]==('k'):
b=args[0]
L=lim(a/b, n=Infinity)
if L<Infinity:
print('convergent')
else:
print('cannot be decided by this test')
elif args[1]==('d'):
b=args[0]
L=lim(a/b, n=Infinity)
if L>0:
print('divergent')
else:
print('cannot be decided by this test')
else:
print('ERROR: wrong number of parameters given')
Thank you for help.
Your problem seems to be the use of arguments in a Python function rather than Sage-specific. A few notes :
Your code defines
b
andL
variables local tolimzk
; globalsb
andL
won't be used by this code.Are you sanguine about the order of your arguments ?
What about keyword arguments ?
Why distinct behaviour for the no-argument case (which returns either
"convergent"
,"divergent"
or "undecidable"
) and the two-arguments case ?the catchall
print("ERROR"...
) code would be avanteageously replaced by raising an exception. Or, even better,you could enclose the body of your code in a
try...except
statement.