Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Szereg {
- public void szeregDlaKonkretnegoX(double x, double epsilon) { //na razie liczymy wartość dla jednego x, więc musimy go podać.
- double suma = 1; //dla każdego x suma zaczyna się od 1 + x + x^2/2!... więc od razu możemy założyć, że na początku suma wynoi 1 i doliczać będziemy kolejne kroki.
- double licznik = x; //pierwszy krok jaki musimy zdefiniować to x^1/1!, więc po prostu x, dlatgo w naszym liczniku będzie podany x.
- double mianownik = 1; //równolegle mianownik w 1 kroku będzie równy 1! = 1.
- int mnożenie = 1; //dzięki temu będziemy budować silnię, mianownik mamy na początku 1, jeśli zwiększymy mnożenie o 1, będzie wynosić 2, więc później
- //mianownik pomnożymy razy 2, później zwiększy znowu mnożenie i będzie 1*2*3...
- while((licznik / mianownik) > epsilon) { //po to właśnie jest epsilon, żeby nie liczyć w nieskończoność, więc liczmy szereg, dopóki kolejny wyraz nie będzie za mały.
- suma = suma + (licznik / mianownik); //dodajemy kolejne wyrazy do sumy.
- licznik = (licznik * x); //pierwzy wyraz to 1, drugi to x, więc w trzecim w liczniku musimy mieć x^2, więc pomnożymy poprzedni licznik razy x.
- mnożenie++; //zwiększamy mnożenie, by dobudowywać silnię.
- mianownik = mianownik * mnożenie; //teraz nowy mianownik będzie równo 1*2, w kolejnych krokach 1*2*3...
- }
- System.out.println("Wynik dla wartości " + x + " = " + suma + "."); //wyświetlimy nasz wynik. Kalkulator podpowiada, że program działa poprawnie.
- }
- public void szeregDlaPrzedziałuZKrokiemH(double a, double b, double h, double epsilon) {
- //zakładam, że podajemy dolną i górną wartość przedziału, przykładowo [0, 14], gdzie a = 0, b = 1. Krok h oznacza odległości między danymi x, dla których chcemy
- //liczyć wartości. Dlatego, zakładając, że za h weźmiemy 3, będziemy liczyć wartości dla: 0, 3, 6, 9, 12 (bo one mieszczą się w narzuconym przedziale).
- double krok = a; //na początku liczymy wartość dla początku naszego przedziału, a więc dla A.
- double koniec = b; //koniec naszego przediału to liczba B, którą podaliśmy.
- while(krok <= koniec) { //dopóki nie wyjdziemy za nasz przedział będziemy liczyć wartości dla kolejnych X. Np. mamy przedział [0,3] z krokiem 1. liczym dla 0, 1, 2 oraz 3, dalej już nie pojedziemy.
- szeregDlaKonkretnegoX(krok, epsilon); //liczymy wartość funkcji
- krok = krok + h; //robimy krok do następnego X, dla którego będziemy liczyć wartość.
- }
- }
- //wyprowadzenia wyników w słupach nie robię, bo to chyba spokojnie da radę.
- }
Advertisement
Add Comment
Please, Sign In to add comment