Witam wszystkich. Ostatnio dostałem zadanie o następującej treści "Napisz program do rozwijania funkcji w szeregi Taylora w ogół zadanego punktu x0". Mój problem leży bardziej po stronie matematyki i logiki niż problemu typowo koderskie. Stworzyłem podany program który, wylicza zarówno sin i cos dla podanego x i n wyrazów ciągu. Z tego co rozumiem szereg Mclaurina jest wyjątkowym przypadkiem szeregu Taylora i program powinien zwracać odpowiednio różne wartości dla x = 0 i n wyrazów ciągu ? Jeśli tak, to niestety program obecnie dla wartości x = 0 będzie zwracał wartość 0 dla każdego, podanego n i nie mam pomysłu jak przebudować całość pod ten przypadek szeregu.
Przykładowo:
f(0) = sin 0 = 0
f(i)(0) = cos 0 = 1
f(ii)(0) = −sin 0 = 0
f(iii)(0) = −cos 0 = −1
f(iv)(0) = sin 0 = 0
Dodatkowo program ma być do bólu prosty w swoje kontrukcji, bez klas, obiektów, tabel, wskaźników i przy użyciu minimalnej ilości bibliotek ( tak wiem, trochę dziwne no ale ... )
Z góry dziękuję za wszelkie uwagi/porady i przepraszam, że problem dotyczy bardziej strony matematycznej ale chce dobrze zrozumieć te zagadnienie i zasięgnąc opinni ekspertów.```
#include <iostream>
#include <iomanip>
using namespace std;
double sin(double x, int n)
{
double t = x;
double sine = t;
for (int a = 1; a < n; ++a)
{
double mult = -x * x / ((2 * a + 1) * (2 * a));
t *= mult;
sine += t;
}
return sine;
}
double cos(double x, int n)
{
double t = x;
double cose = t;
for (int a = 1; a < n; ++a)
{
double mult = -x * x / ((2 * a - 1) * (2 * a));
t *= mult;
cose += t;
}
return cose;
}
int main()
{
double num;
int n;
cout << "Wprowadz liczbe x: " << endl;
cin >> num;
cout << "Podaj liczbe elementow n: " << endl;
cin >> n;
cout << std::setprecision(20) << "sin dla x: " << sin(num, n) << std::endl;
cout << std::setprecision(20) << "cos dla x: " << cos(num, n) << std::endl;
return(0);
}