Approximate infinite sums with a guaranteed error.
Project description
InfSumPy is a Python package that evaluates infinite positive sums with a guaranteed error. Using ratio and integral tests we evaluate series that pass these tests with controlled error.
Instalation
Make sure you have the mpmath library installed:
pip install mpmath
To install the package, run the following command:
pip install infsumpy
Usage
We have the transformations implemented above, and for use have the infsum
function.
Which receives from input:
- A series: In the form of a function f: $\mathbb{N} \to \mathbb{R}$.
- Method: Can be
ratio
,integral
,threshold
orfixed
. - Max terms: The maximum number of terms.
- Start terms: The index of the first term of the series.
- Epsilon (optional): The espected error tolerance (if method is
ratio
,integral
orthreshold
). - L (optional): Limit of the ratio of terms (if method is
ratio
). - Integral of series (optional): The function of g(n) = ∫_n^∞ f(x) dx for the inetegral test (if method is
integral
). - Precision (optional): The precision for the
mpmath
library (default value if 53).
The function return the number of terms used in the sum and the approximation.
Ratio test
from infsumpy import infsum
# the infinity sum of n/(2**n) pass in the ratio test with limit L = 1/2,
# then we can evaluate with controled error
print(infsum(lambda n: n/(2**n), 'ratio', max_terms=10**4, initial=1, eps=2**(-52), L=1/2))
> (56, 2.0)
Integral test
from infsumpy import infsum
# the infinity sum of 1/n**2 pass in the integral test with integral
# g(n) = ∫_n^∞ 1/x**2 dx = 1/n, then we can evaluate with controled error
print(infsum(lambda n: 1/(n**2), 'integral', max_terms=10**4, initial=1, eps=10**(-3), g=lambda n: 1/n))
> (499, 1.64493406229104)
Threshold (not guaranteed)
from infsumpy import infsum
# we can also use a stoping criterio such that sum until the n-th are less
# than the epsilon, here for the infinity sum of 2/(2**n)
print(infsum(lambda n: n/(2**n), 'threshold', max_terms=10**4, initial=1, eps=2**(-52)))
> (57, 2.0)
Fixed (not guaranteed)
from infsumpy import infsum
# we can just sum a fixed number of terms of the infinite sum of 2/(2**n)
print(infsum(lambda n: n/(2**n), 'fixed', max_terms=10**4, initial=1))
> (10000, 2.0)
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
infsumpy-1.0.0.tar.gz
(3.8 kB
view details)
Built Distribution
File details
Details for the file infsumpy-1.0.0.tar.gz
.
File metadata
- Download URL: infsumpy-1.0.0.tar.gz
- Upload date:
- Size: 3.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c2f1965d03b941e93b9d07765ba7f14c808c2442e4353b769b34292c006b04e2 |
|
MD5 | 40b845b61dcad2dd54e425e68f579fd6 |
|
BLAKE2b-256 | f84ff3bfda003f370e75488b72235440a09080d4a9d2e10f323632c05f9e6395 |
File details
Details for the file InfSumPy-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: InfSumPy-1.0.0-py3-none-any.whl
- Upload date:
- Size: 4.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2eb4ce1536fa0e88a1b8d007e8a9623cc8d7da2c4e177d729e3071a794f2fcd3 |
|
MD5 | c52164d85f10a1b4c5d62bff333fb461 |
|
BLAKE2b-256 | 854265e396e33f9d7f5c6dd44b22553942a1ac295801717a8c15ee72eb3bf208 |