Skip to main content
1 of 2
Linny
  • 10.4k
  • 5
  • 37
  • 99

Arithmetic/Geometric Series Calculator

I've written a small program that calculates Arithmetic and Geometric Partial Sums. I'd like feedback on anything possible, since I intend on writing a cheatsheet that encapsulates all PreCalculus equations.

partial_sum.py

"""
This is a program that calculates arithmetic and geometric
partial sums

"""

from fractions import Fraction

def find_an(parsed_series):
    """
    Finds an in the passed parsed arithmetic series

    :param parsed_series: The series to be analyzed

    """
    for i, _ in enumerate(parsed_series):
        if parsed_series[i] == ".":
            return int(parsed_series[i + 1])
    return None


def arithmetic_partial_sum(series):
    """
    Returns the partial sum of an arithmetic series

    Formula:
        S = n( (a1 + an) / 2 )

    Find an:
        an = a1 + (n - 1)d

    Find n:
        n = 1 + ( (an - a1) / d )

    :param series: Arithmetic series to solve

    """

    series = series.split("+")

    a1 = int(series[0])
    d = int(series[1]) - a1
    an = find_an(series)
    n = 1 + ((an - a1) / d)
    S = n * ((a1 + an) / 2)

    return S

def geometric_partial_sum(series):
    """
    Returns the partial sum of the geometric series

    :param series: Geometric series to solve

    Formula:
        S = (a1 * (1 - (r ** n))) / (1 - r)

    """

    series = series.split("+")

    a1 = int(series[0])
    r = int(series[1]) / a1
    n = len(series)
    S = (a1 * (1 - (r ** n))) / (1 - r)

    return str(Fraction(S).limit_denominator())

if __name__ == '__main__':
    A_SERIES = "3+7+11+15+.+99"
    G_SERIES = f"3+1+{1/3}+{1/9}+{1/27}+{1/81}"
    print(arithmetic_partial_sum(A_SERIES))
    print(geometric_partial_sum(G_SERIES))
Linny
  • 10.4k
  • 5
  • 37
  • 99