From b65b756da3d641ede60905171ce3d4448b30ef80 Mon Sep 17 00:00:00 2001 From: Arlan Tengga Date: Sat, 3 Jan 2026 16:08:41 +0700 Subject: [PATCH 1/4] feat: menambahkan algoritma taylor --- math/deret_taylor.py | 122 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 math/deret_taylor.py diff --git a/math/deret_taylor.py b/math/deret_taylor.py new file mode 100644 index 00000000..f8c2436c --- /dev/null +++ b/math/deret_taylor.py @@ -0,0 +1,122 @@ +# macam - macam deret taylor +# https://en.wikipedia.org/wiki/Taylor_series +import math + + +def faktorial(n : int = 2) -> int: + """ + Fungsi untuk kalkulasi faktorial + parameter : + n = bilangan bulat + return : + hasil = hasil dari operasi faktorial + """ + if n == 1 or n == 0: + return 1 + if n > 1: + return n * faktorial(n - 1) + + +def sin(x : float) -> float: + """ + Fungsi untuk kalkulasi dari deret sin. + Input dari fungsi ini dikonvergensi menjadi + radian. + >>> sin(0) + 0.0 + >>> sin(45) + 0.7071067811865475 + """ + result = 0.0 + interable = 10 + radian = x * math.pi / 180 + for i in range(interable + 1): + numerator = math.pow(radian, (1 + i * 2)) * math.pow(-1, i) + detector = faktorial((1 + 2 * i)) + result = result + (numerator / detector) + return float(result) + + +def cos(x : float) -> float: + """ + Fungsi untuk kalkulasi dari deret cosinus. + Input dari fungsi ini dikonvergensi menjadi + radian. + >>> cos(0) + 1.0 + >>> cos(45) + 0.7071067811865475 + """ + result = 0.0 + interable = 10 + radian = x * math.pi / 180 + for i in range(interable): + numerator = math.pow(radian, 2 * i) * math.pow(-1, i) + detector = faktorial(2 * i) + result = result + (numerator / detector) + return float(result) + + +def euler(x: int = 1) -> float: + """ + Fungsi untuk kalkulasi dari deret + taylor euler e^x + >>> euler(1) + 2.7182815255731922 + >>> euler(2) + 7.3887125220458545 + """ + result = 0.0 + interable = 10 + for i in range(interable): + numerator = math.pow(x, (i)) + detector = faktorial(i) + result = result + (numerator / detector) + return float(result) + + +def ln(x : float) -> float: + """ + Fungsi untuk melakukan kalkulasi deret taylor + ln(x + 1).Dengan batas -1 < x <= 1. + >>> ln(0.5) + 0.4054346478174603 + >>> ln(1) + 0.6456349206349207 + """ + if x > -1 and x <= 1: + result = 0.0 + interable = 10 + for i in range(1, interable + 1): + numerator = math.pow(x, i) * math.pow(-1, i + 1) + detector = i + result = result + (numerator / detector) + return float(result) + else : + return ValueError("Angka tidak valid") + + +def main(args=None): + import doctest + + doctest.testmod() + + # test untuk fungsi cos + print(cos(0)) + print(cos(45)) + + # test untuk fungsi sin + print(sin(0)) + print(sin(45)) + + # test untuk fungsi euler + print(euler(1)) + print(euler(2)) + + # test untuk fungsi ln(1 + x) + print(ln(0.5)) + print(ln(1)) + + +if __name__ == "__main__": + main() From 1b933e46b9de3ee4980580521d73574cabc3cf04 Mon Sep 17 00:00:00 2001 From: Arlan Tengga Date: Sat, 3 Jan 2026 16:16:18 +0700 Subject: [PATCH 2/4] feat: menambahkan algoritma taylor --- math/deret_taylor.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/math/deret_taylor.py b/math/deret_taylor.py index f8c2436c..c8841809 100644 --- a/math/deret_taylor.py +++ b/math/deret_taylor.py @@ -3,7 +3,7 @@ import math -def faktorial(n : int = 2) -> int: +def faktorial(n: int = 2) -> int: """ Fungsi untuk kalkulasi faktorial parameter : @@ -17,7 +17,7 @@ def faktorial(n : int = 2) -> int: return n * faktorial(n - 1) -def sin(x : float) -> float: +def sin(x: float) -> float: """ Fungsi untuk kalkulasi dari deret sin. Input dari fungsi ini dikonvergensi menjadi @@ -37,7 +37,7 @@ def sin(x : float) -> float: return float(result) -def cos(x : float) -> float: +def cos(x: float) -> float: """ Fungsi untuk kalkulasi dari deret cosinus. Input dari fungsi ini dikonvergensi menjadi @@ -75,7 +75,7 @@ def euler(x: int = 1) -> float: return float(result) -def ln(x : float) -> float: +def ln(x: float) -> float: """ Fungsi untuk melakukan kalkulasi deret taylor ln(x + 1).Dengan batas -1 < x <= 1. @@ -92,7 +92,7 @@ def ln(x : float) -> float: detector = i result = result + (numerator / detector) return float(result) - else : + else: return ValueError("Angka tidak valid") From 30fef68e87b7552fbc8088af137654d992167349 Mon Sep 17 00:00:00 2001 From: Arlan Tengga Date: Sat, 3 Jan 2026 16:18:08 +0700 Subject: [PATCH 3/4] fix: memperbaiki fungsi --- math/deret_taylor.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/math/deret_taylor.py b/math/deret_taylor.py index c8841809..463852d0 100644 --- a/math/deret_taylor.py +++ b/math/deret_taylor.py @@ -3,7 +3,7 @@ import math -def faktorial(n: int = 2) -> int: +def faktorial(n: int) -> int: """ Fungsi untuk kalkulasi faktorial parameter : From acf0f2403e292d86f660a584670ba7c941db0db2 Mon Sep 17 00:00:00 2001 From: Arlan Tengga Date: Sat, 3 Jan 2026 16:41:10 +0700 Subject: [PATCH 4/4] fix: memperbaiki bug --- math/deret_taylor.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/math/deret_taylor.py b/math/deret_taylor.py index 463852d0..2cf30a4d 100644 --- a/math/deret_taylor.py +++ b/math/deret_taylor.py @@ -15,6 +15,8 @@ def faktorial(n: int) -> int: return 1 if n > 1: return n * faktorial(n - 1) + else: + return ValueError("Nilai Tidak valid") def sin(x: float) -> float: