[Algorytm] Sinus hiperboliczny
[Algorytm] Sinus hiperboliczny
Witam,
Mam do napisania program wyznaczający wartość sinusa hiperbolicznego z rozwinięcia szeregu potęgowego. Mam problem z jedną rzeczą. Jedną z danych wejściowych ma być dokładność obliczeń w procentach, która ograniczy liczbę wyrazów szeregu. Zupełnie nie wiem, jak to ma wyglądać w sensie merytorycznym, jak podaną dokładność wykorzystać? Na razie jestem na poziomie pisania algorytmu i początku swej drogi z językiem C .
Mam do napisania program wyznaczający wartość sinusa hiperbolicznego z rozwinięcia szeregu potęgowego. Mam problem z jedną rzeczą. Jedną z danych wejściowych ma być dokładność obliczeń w procentach, która ograniczy liczbę wyrazów szeregu. Zupełnie nie wiem, jak to ma wyglądać w sensie merytorycznym, jak podaną dokładność wykorzystać? Na razie jestem na poziomie pisania algorytmu i początku swej drogi z językiem C .
[Algorytm] Sinus hiperboliczny
Wzór na resztę takie rozwinięcia znajdź i dzięki tej dokładności będziesz wiedzieć ile wyrazów masz zsumowaćjak podaną dokładność wykorzystać?
[Algorytm] Sinus hiperboliczny
Może inaczej. Sumuj wyrazy aż jakiś trafi się mniejszy od wspomnianej dokładności. Tyle. WTedy nic nie wnosi on do sumy i z resztą się bawić nie musisz
-
- Użytkownik
- Posty: 5101
- Rejestracja: 11 mar 2011, o 16:31
- Płeć: Mężczyzna
- Lokalizacja: 52°16'37''N 20°52'45''E
- Podziękował: 4 razy
- Pomógł: 1001 razy
[Algorytm] Sinus hiperboliczny
To drugie rozwiązanie chyba niepoprawne, bo kilka wyrazów mniejszych niż dokładność może się zsumować do wartości większej niż dokładność.
[Algorytm] Sinus hiperboliczny
No racje. W praktyce jednak będzie to działało, stąd taka propozycja. Ale jak chce się być formalnym(i poprawnym) to opcja pierwsza
[Algorytm] Sinus hiperboliczny
Czy może ktoś dokładniej wytłumaczyć jak zastosować ten wzór na resztę ?
-
- Użytkownik
- Posty: 22
- Rejestracja: 25 paź 2012, o 04:00
- Płeć: Mężczyzna
- Lokalizacja: wroclaw
- Pomógł: 3 razy
[Algorytm] Sinus hiperboliczny
\(\displaystyle{ /* Sinusa hiperboliczny punkcie x z dokladnoscia eps */
/* sinush(x)=x^1/1!+x^3/3!+x^5/5!+x^7/7!+... * DEV C++ 4.9.9.2 */
#include <cstdlib>
#include <iostream>
#include <math.h> // tu funkcja sinus hiperboliczny
using namespace std;
int main(int argc, char *argv[])
{
int
i,j;
double
dd,x,
eps, // eps = dokladnosc
sh, // sh = obliczany sinus hiperboliczny
licznik,mianownik; // licznik=x^i ; mianownik=i!
sh=0;
eps=0.002;
x=3; // wartosc przykladowa, dla ktorej liczymy sinhiper
i=0;
licznik=x;
mianownik=1.0;
dd=x; // pierwszy wyraz szeregu x^1/0!=x;
while ( dd>=eps )
{
i+=2;
licznik=licznik*x*x;
mianownik=mianownik*i*(i+1);
dd=licznik/mianownik;
sh+=dd;
}
sh+=x;
cout<<sh<<endl;
cout<<sinh(x)<<endl; // sprawdzenie
system("PAUSE");
return EXIT_SUCCESS;
}}\)-- 15 lis 2012, o 01:37 --
/* sinush(x)=x^1/1!+x^3/3!+x^5/5!+x^7/7!+... * DEV C++ 4.9.9.2 */
#include <cstdlib>
#include <iostream>
#include <math.h> // tu funkcja sinus hiperboliczny
using namespace std;
int main(int argc, char *argv[])
{
int
i,j;
double
dd,x,
eps, // eps = dokladnosc
sh, // sh = obliczany sinus hiperboliczny
licznik,mianownik; // licznik=x^i ; mianownik=i!
sh=0;
eps=0.002;
x=3; // wartosc przykladowa, dla ktorej liczymy sinhiper
i=0;
licznik=x;
mianownik=1.0;
dd=x; // pierwszy wyraz szeregu x^1/0!=x;
while ( dd>=eps )
{
i+=2;
licznik=licznik*x*x;
mianownik=mianownik*i*(i+1);
dd=licznik/mianownik;
sh+=dd;
}
sh+=x;
cout<<sh<<endl;
cout<<sinh(x)<<endl; // sprawdzenie
system("PAUSE");
return EXIT_SUCCESS;
}}\)-- 15 lis 2012, o 01:37 --
Kod: Zaznacz cały
/* Sinus hiperboliczny w punkcie x z dokladnoscia eps */
/* sinush(x)=x^1/1!+x^3/3!+x^5/5!+x^7/7!+... * DEV C++ 4.9.9.2 */
#include <cstdlib>
#include <iostream>
#include <math.h> // tu funkcja sinus hiperboliczny
using namespace std;
int main(int argc, char *argv[])
{
int
i,j;
double
dd,x,
eps, // eps = dokladnosc
sh, // sh = obliczany sinus hiperboliczny
licznik,mianownik; // licznik=x^i ; mianownik=i!
sh=0;
eps=0.002;
x=3; // wartosc przykladowa, dla ktorej liczymy sinhiper
i=0;
licznik=x;
mianownik=1.0;
dd=x; // pierwszy wyraz szeregu x^1/0!=x;
while ( dd>=eps )
{
i+=2;
licznik=licznik*x*x;
mianownik=mianownik*i*(i+1);
dd=licznik/mianownik;
sh+=dd;
}
sh+=x;
cout<<sh<<endl;
cout<<sinh(x)<<endl; // sprawdzenie
system("PAUSE");
return EXIT_SUCCESS;
}