Witam!
Piszę taki program:
Wartości funkcji cosinus (x) można wyznaczyć stosując wzór:
http://imageshack.us/photo/my-images/717/wzor2.png/
Napisać funkcję cosinus wyznaczającą przybliżoną wartość funkcji cosinus x przy pomocy iloczynu n (gdzie n jest
parametrem funkcji) kolejnych czynników powyższego wzoru, dla argumentu x (x również jest parametrem funkcji).
Liczbę PI w powyższym wzorze przyjąć jako PI≈3,14159 .
W funkcji main wywołać funkcję cosinus dla n=1000. Wynik zwrócony przez funkcję wypisać na konsolę.
Prawidłowo napisana funkcja, dla n=1000 przybliża wartość funkcji cosinus x z dokładnością do jednego miejsca po
przecinku (w przedziale x nalezy od∈−0.5 , 0.5 rad)
I napisałem do tego taki program:
#include <iostream>
#include <cstdlib>
#include <math.h>
#include <iomanip>
using namespace std;
double COSINUS(int n, double x)
{
double iloczyn = 1;
double pi = 3.14159;
double licznik, mianownik;
for(int i = 1; i < n; i++)
{
licznik = (4*x*x);
mianownik = (pi*pi)*(2*i-1)*(2*i+1);
iloczyn = (1-(licznik/mianownik));
}
return iloczyn;
}
int main()
{
unsigned int n = 1000;
double x;
cout << "Podaj wartosc x: " << endl;
cin >> x;
cout.precision(1);
cout << "Wartosc Cos(x) zadana wedlog wzoru rowna sie: " << COSINUS(x,n) << endl;
system("PAUSE");
}
Tylko nie wiem co jest tutaj zle ale cały czas bez wzgledu jakie x podaje to wyswietla mi 1 albo ogromna liczbe... proszę o pomoc:)