Czesc, mam taki problem: napisalem program liczacy sinh(x) z rozwiniecia w szereg Taylora, ale nie dziala dla duzych liczb. Po zdefiniowaniu zmiennych jako double program zwraca bledne wartosci. Jak to poprawic, zeby wszystko ladnie dzialalo :d
#include <stdio.h>
#include <math.h>
int n, element;
float x, sinhx, sinh_math, licznik, mianownik, elementx, blad;
int main()
{
printf( "Program liczy sinh(x), korzytajac z rozwiniecia w szereg Taylora.\nPodaj x: ");
scanf( "%f", &x );
printf( "Podaj dokladnosc n: ");
scanf( "%u", &n );
/* czesc wlasciwa obliczajaca sinh(x) z szeregu Taylora */
for ( element = 1; element <= n; ++element ){
mianownik = 2 * element - 1;
licznik = x;
for ( elementx = 1; elementx < mianownik; ++elementx ){
licznik = licznik * x;
}
for( --elementx; elementx >= 2; --elementx ){
mianownik = mianownik * elementx;
}
sinhx = sinhx + ( licznik / mianownik );
}
/* funkcja liczaca sinhx z biblioteki math.h */
sinh_math = sinh(x);
/* blad wzgledny */
blad = (( sinhx - sinh_math) / sinh_math)*100;
printf( "sinh(%.2f) = %lf\n", x, sinhx);
printf( "blad wzgledny wynosi: %lf", blad);
return 0;
}