Update logarithmic_series.py

Fixed long line issue
This commit is contained in:
Arijit Kumar Das 2024-10-24 01:13:40 +05:30 committed by GitHub
parent 469f0fc4ec
commit 25c5430b47
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -3,49 +3,47 @@ This is an implementation of logarithmic series in Python.
Reference: https://math.stackexchange.com/questions/3973429/what-is-a-logarithmic-series Reference: https://math.stackexchange.com/questions/3973429/what-is-a-logarithmic-series
""" """
def logarithmic_series(x: float, n_terms: int = 5, expand: bool = False) -> list: def logarithmic_series(x: float, n_terms: int = 5, expand: bool = False) -> list:
""" """
Returns the logarithmic series for a number x (log x) upto n terms. Returns the logarithmic series for a number x (log x) upto n terms.
Parameters: Parameters:
x: a floating point number for log(x) x: a floating point number for log(x)
n_terms: number of terms to be computed n_terms: number of terms to be computed
expand: Set this flag to get the terms as real numbers, unset for unsolved expressions expand: Set this flag to get the terms as real numbers,
unset for unsolved expressions
Examples: Examples:
>>> logarithmic_series(3) >>> logarithmic_series(3)
['(2^1)/1', '-(2^2)/2', '(2^3)/3', '-(2^4)/4', '(2^5)/5'] ['(2^1)/1', '-(2^2)/2', '(2^3)/3', '-(2^4)/4', '(2^5)/5']
>>> logarithmic_series(-3) >>> logarithmic_series(-3)
['-(4^1)/1', '(4^2)/2', '-(4^3)/3', '(4^4)/4', '-(4^5)/5'] ['-(4^1)/1', '(4^2)/2', '-(4^3)/3', '(4^4)/4', '-(4^5)/5']
>>> logarithmic_series(3, 10) >>> logarithmic_series(3, 6)
['(2^1)/1', '-(2^2)/2', '(2^3)/3', '-(2^4)/4', '(2^5)/5', '-(2^6)/6', '(2^7)/7', '-(2^8)/8', '(2^9)/9', '-(2^10)/10'] ['(2^1)/1', '-(2^2)/2', '(2^3)/3', '-(2^4)/4', '(2^5)/5', '-(2^6)/6']
>>> logarithmic_series(3, expand=True) >>> logarithmic_series(3, expand=True)
[2.0, -2.0, 2.6666666666666665, -4.0, 6.4] [2.0, -2.0, 2.6666666666666665, -4.0, 6.4]
""" """
n_times_x_minus_1: float = x - 1 n_times_x_minus_1: float = x-1
n: int = 1 n: int = 1
series: list = [] series: list = []
for _ in range(n_terms): for _ in range(n_terms):
if expand: if (expand):
series.append(((-1) ** (n + 1)) * (n_times_x_minus_1 / n)) series.append(((-1)**(n+1))*(n_times_x_minus_1/n))
n_times_x_minus_1 *= x - 1 n_times_x_minus_1 *= (x-1)
else: else:
sign: str = "-" if (-1) ** (n + 1) == -1 else "" sign: str = '-' if (-1)**(n+1) == -1 else ''
term: str = sign + "(" + str(x - 1) + "^" + str(n) + ")" + "/" + str(n) term: str = sign+'('+str(x-1)+'^'+str(n)+')'+'/'+str(n)
if term.startswith("-(-"): if (term.startswith("-(-")):
term = "(" + term[3::] term = '('+term[3::]
elif term.startswith("(-"): elif (term.startswith("(-")):
term = "-(" + term[2::] term = "-("+term[2::]
series.append(term) series.append(term)
n += 1 n += 1
return series return series
if (__name__ == "__main__"):
if __name__ == "__main__":
import doctest import doctest
doctest.testmod() doctest.testmod()