-
Notifications
You must be signed in to change notification settings - Fork 0
GSoC 2012 Application Saurabh Jha: implementing algorithm to find the limits of series
FINDING LIMITS OF SERIES
Email: [email protected]
Short description: Sympy is a computer algebra system implemented in Python. Currently, Sympy is using Gruntz algorithm for series expansion, which is not suitable for certain kinds of expressions. My proposal is to implement Manuel Kauers' algorithm described in the abstract and poster "Computing Limits of Sequences".
NAME: Saurabh jha
UNIVERSITY/CURRENT ENROLLMENT: Guru Nanak Dev University, Gurdaspur, India
MAJOR: Computer Science and Engineering
CURRENT STANDINGS: 2nd year student
ABSTRACT:
Sympy is a computer algebra system implemented in Python. Currently, Sympy is using Gruntz algorithm for series expansion, which is not suitable for certain kinds of expressions. My proposal is to implement Manuel Kauers' algorithm described in the abstract and poster "Computing Limits of Sequences".
SYNOPSIS:
Finding limits of associated series can be comparatively easy, if the limit of the original function is hard to find. Furthermore, we need to find the limits of series as a basis for new algorithms like finding limits of Riemann sums for the calculation of definite integrals. The Gruntz Algorithm used presently to find limits of series does a very good job in finding limits of series, but this algorithm will not work in the following cases: For Discrete Functions For Nested Series Frequently, these problems arise in practical applications in science and engineering. Sympy should supply the users tools to solve these kind of problems too. To solve these kind of problems, I propose to implement Kauers' algorithm described in the paper and the poster “Computing Limits of Sequences” as my project for Google Summer of Code 2012.
HOW IT WILL BE DONE:
The main algorithm is described as follows:
Test if he expression is admissible (if the scopes of all occurring asymptotically positive)
Apply the L' Hospital rule
Find the dominant term of both numerator and denominator if the limit is finite:
exit
else
goto step2
The implementation of this algorithm in turn needs the following functions
A predicate to check if the expression is admissible This will be done by checking if the function is greater than 0 for n> some fixed number
A function to implement l' hospital's rule. This function in turn needs another function difference operator Δ
Δ operator is defined as the difference between two consecutive terms of a sequence. When this function is applied to a sequence, it will take it's two general consecutive terms and find their difference. For example-
a(n)=3n^2 + 2n + 3
This operator will calculate
a(n+1)= 3(n+1)^2 + 2(n+1) + 3
and subtract it from the previous expression.
I also propose to implement the behavior of Δ as follows-
Δ(a+b)= Δa + Δb
Δ(a-b)= Δa - Δb
Δ(ab)= aΔb+bΔa
Δ(a/b)= (bΔa-aΔb)/b^2
After it's implementation, l' hospital's rule will be implemented as
lim n-> ∞ [a(n) / b(n)] = lim n-> ∞ [Δa(n) / Δb(n)]
A function to find the dominant term of an expression An algorithm to implement this function is described below---
Take the first two numbers, divide them, and find it's behavior as lim n-> ∞
if it approaches ∞
take the first and third term and goto step1 of this algorithm
elif it approaches 0
take the second and third term and goto step2 of this algorithms
else
goto step2 of the main algorithm
SUCCESS CRITERIA:
The Kauer's abstract gives some examples under the heading “Some Examples”, which can be used to test if the algorithm is correctly working or not.
TIMELINE:
BEFORE 21st OF MAY
Familiarizing myself completely with the codebase, Reading documentation in more depth, getting input and feedback from sympy community, attaining more mathematical background, if required.
FIRST THREE WEEKS
Implementing a predicate to check if the expression is admissible
Implementing Δ operator along with all it's properties
NEXT TWO WEEKS -
Implementing l'hospital's rule
NEXT TWO WEEKS -
Implementing the function to find the dominant term of the expression
NEXT THREE WEEKS-
Implementing the main algorithm using the functions defined above
FINAL TWO WEEKS--
Checking inconsistencies, scope of improvement testing with examples. writing documentation
ABOUT ME:
I am studying Computer Science and Engineering at Guru Nanak Dev University, Gurdaspur, India. I am in my second year. I am very interested in mathematics. In my high school, I had studied calculus for single variable. In college, I studied multivariable calculus as well as infinite series. I have read Manuel Kauers' abstract and poster “Computing limits of series” and completely understood the main points of the paper. I have no other commitments besides summer of code this summer, so I can devote myself fully to the work
REFERENCES:
Computing limits of sequences- Manuel Kauers
On Computing Limits in a Symbolic Manipulation System- Dominik Gruntz