radko93

Szeregwytlumaczony

Feb 5th, 2013
32
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.75 KB | None | 0 0
  1. public class Szereg {
  2.     public void szeregDlaKonkretnegoX(double x, double epsilon) { //na razie liczymy wartość dla jednego x, więc musimy go podać.
  3.         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.
  4.        
  5.         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.
  6.         double mianownik = 1; //równolegle mianownik w 1 kroku będzie równy 1! = 1.
  7.        
  8.         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
  9.         //mianownik pomnożymy razy 2, później zwiększy znowu mnożenie i będzie 1*2*3...
  10.        
  11.         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.
  12.             suma = suma + (licznik / mianownik); //dodajemy kolejne wyrazy do sumy.
  13.             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.
  14.             mnożenie++; //zwiększamy mnożenie, by dobudowywać silnię.
  15.             mianownik = mianownik * mnożenie; //teraz nowy mianownik będzie równo 1*2, w kolejnych krokach 1*2*3...
  16.         }
  17.        
  18.         System.out.println("Wynik dla wartości " + x + " = " + suma + "."); //wyświetlimy nasz wynik. Kalkulator podpowiada, że program działa poprawnie.
  19.     }
  20.     public void szeregDlaPrzedziałuZKrokiemH(double a, double b, double h, double epsilon) {
  21.         //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
  22.         //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).
  23.        
  24.         double krok = a; //na początku liczymy wartość dla początku naszego przedziału, a więc dla A.
  25.         double koniec = b; //koniec naszego przediału to liczba B, którą podaliśmy.
  26.         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.
  27.                 szeregDlaKonkretnegoX(krok, epsilon); //liczymy wartość funkcji
  28.                 krok = krok + h; //robimy krok do następnego X, dla którego będziemy liczyć wartość.
  29.             }
  30.     }
  31.     //wyprowadzenia wyników w słupach nie robię, bo to chyba spokojnie da radę.
  32. }
Advertisement
Add Comment
Please, Sign In to add comment