From 6daf86e0aebab6f4bdead1c27cc55f9580870978 Mon Sep 17 00:00:00 2001 From: kayabaakihiko13 Date: Sat, 15 Jul 2023 23:21:37 +0700 Subject: [PATCH 1/3] feat: menambahkan algoritma cosinus ``Deskripsi`` cosinus merupakan salah satu fungsi trigonometri dari sebuah titik. cosinus ini juga bisa dikatakan merupakan bilangan real dari bentuk panjang dari garis yang bergelombang dan juga bisa dimasukan salah satu di dalam pembahasan infinite series. kali ini saya menggunakan metode dari salah satu infitine series yaitu taylor series. [wikipedia](https://en.wikipedia.org/wiki/Sine_and_cosine) [algoritm_Source](https://people.math.sc.edu/girardi/m142/handouts/10sTaylorPolySeries.pdf) --- math/cos.cpp | 55 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 math/cos.cpp diff --git a/math/cos.cpp b/math/cos.cpp new file mode 100644 index 0000000..164114c --- /dev/null +++ b/math/cos.cpp @@ -0,0 +1,55 @@ +#include +#include +#include + + +/** + * @file cos.cpp + * @brief fungsi untuk mengetahui Cos nilai output dengan + * menggunakan algoritma +*/ + + +int factorial(int n){ + if (n<0){ + throw std::invalid_argument("Angka faktorial harus real"); + } + else if (n==0 or n==1){ + return 1; + } + else{ + return n * factorial(n-1); + } +} + + +/** + * @brief fungsi untuk mengetahui nilai cosinus pada titik + * dengan menggunakan algoritma taylor series + * @param sudut merupakan titik input untuk mengetahui + * nilai cos dari titik tersebut + * @param iterable merupakan jumlah perulangan perjumlah yang dilakukan + * default 4 + * @return hasilnya berupa angka decimal +*/ + + +template double cosinus(T sudut,int iterable=4){ + result = 0 + for (int n = 0; n <= iterable; ++n){ + numerator = pow(-1,n) * pow(sudut,2*n); + denumerator = factorial(2*n); + result +=(numerator/denumerator); + } + return result; +} + + +int main(){ + // testing + std::vector list_sudut ={M_PI,M_PI/2,M_PI * 3/4}; + for(int i =0;i double cosinus(T sudut,int iterable=4){ + float result = 0.0; + for (int n = 0; n <= iterable; ++n){ + numerator = pow(-1,n) * pow(sudut,2*n); + denumerator = factorial(2*n); + result +=(numerator/denumerator); + } + return result; +} + + +int main(){ + // testing + std::vector list_sudut ={M_PI,M_PI/2,M_PI * 3/4}; + for(int i =0;i