Super, w końcu ruszyło :) ale niestety nadal wychodzą złe wartości w moim programiku:
#include <stdio.h>
#include <math.h>
int main()
{
double a, b, x, y, eps, n, dx, fun() ;
int silnia(int) ;
FILE *plik;
do
{
printf ("Program oblicza rozwiniecie wzoru cos x\nPodaj poczatek przedzialu: ");
scanf ("%lf", &a); //wprowadzamy poczatek przedzialu
if (a < 0)
{
printf ("Wartosc spoza dziedziny\n Podaj inna wartosc: ");
}
printf ("Podaj koniec przedzialu: "); //wprowadzamy koniec przedzialu
scanf ("%lf", &b);
if (b < 0)
{
printf ("Wartosc spoza dziedziny\n Podaj inna wartosc: ");
scanf ("%lf", &b);
}
if (a == b)
{
printf ("Poczatek przedzialu nie moze byc taki sam jak jego koniec\n");
}
if (a > b)
{
printf ("Poczatek przedzialu nie moze byc wiekszy od jego konca\n");
}
}while (a >= b);
printf ("Podaj ilosc podzialow: "); //podajemy ilosc podzialow
scanf ("%lf", &n);
while (n <= 0)
{
printf ("Ilosc podzialow musi byc wieksza od zera\nPodaj nowa ilosc podzialow: ");
scanf ("%lf", &n);
}
printf ("Podaj dokladnosc: ");
scanf ("%lf", &eps);
dx = (b-a)/n;
plik = fopen ("wynik", "w"); //otwarcie pliku
for (x=a; x<=b; x=x+dx)
{
y = fun(x, eps); //wywolanie funkcji
printf ("x=%.3lf f(x)=cosx szereg: f(x)=%lf funkcja: %lf\n", x, y, cos(x));
fprintf (plik, "x=%.3lf f(x)=cosx szereg: f(x)=%lf funkcja: %lf\n", x, y, cos(x));
}
fclose (plik); //zamkniecie pliku
return 0 ;
}
/****************FUNKCJA***************/
int silnia (int liczba)
{
if (liczba == 0) return 1;
else return liczba*silnia(liczba-1);
}
double fun(double x, double eps)
{
double s, a;
long n;
a = 1;
s = 1;
n = 2;
do
{
a = (pow(x, n))/(silnia(n));
s = s+a;
n = n+2;
}while (fabs(a) > fabs(s)*eps);
return s;
}
takie dziwne wartości wywala: f(x)=1.#INF00