\(\displaystyle{ S(x,n)= \frac{x^{1}}{1!}- \frac{x^{3}}{3!}+ \frac{x^{5}}{5!} - \frac{x^{7}}{7!}+... \frac{x^{(2i-1)}}{(2i-1)!}+...}\)
Wartości zmiennej i są liczbami naturalnymi (i=1, 2, 3, ...). Porównać wartość funkcji S(x,n) dla wybranych x i n (np.x=2; n=8) z wartością standardowej funkcji sin(x). Da dużych n powinno być \(\displaystyle{ sin(x) S(x,n)}\). Prototyp funkcji: double S(double x, int n).
No i cóż. W poleceniu jest x=2 i n=8 jako przykład. A wtedy już wyskakuje się poza zakres zmiennych. Nie wiem jak temu zaradzić. ;/
Kod: Zaznacz cały
#include<iostream.h>
#include<conio.h>
#include<math.h>
double S(double x, int n);
void main()
{
clrscr();
double x;
int n;
cout << "
Podaj x: ";
cin >> x;
pobierz:
cout << "Podaj n: ";
cin >> n;
if(n<0)
{
cout << "Blad! Liczba wyrazow nie moze byc ujemna!" << endl;
goto pobierz;
}
cout << "Wartosc sumy wynosi: " << S(x,n) << endl;
cout << "Wartosc standardowej funkcji sin(x) wynosi: " << sin(x);
cin.ignore(cin.rdbuf()->in_avail());
cin.get();
clrscr();
}
double S(double x, int n)
{
long double S=0,silnia=1;
if(x)
{
for(int i=1,znak=1;i<=n;i++)
{
silnia*=(2*i-1);
if(silnia>1) silnia*=(2*i-2);
if(znak)
{
S+=pow(x,silnia)/silnia;
znak=0;
}
else
{
S-=pow(x,silnia)/silnia;
znak++;
}
}
}
return S;
}