Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[JAVA] Wartość min i max funkcji z zastosowaniem klas.

30 Maj 2010 20:56 3920 25
  • Poziom 9  
    Stworzyłam sobie taki programik który ma wyznaczać wartość maksymalną i minimalną funkcji sinus na przedziale od 0 do 2 PI tylko coś w nim nie gra zwraca mi wartosci 0, a i może ktoś pomógł by mi go zmodyfikować żeby pokazywał dla jakiego x wartość jest max a dla jakiego min.
  • Poziom 9  
    a jeśli zmienię typ zmiennych to wartości będą dokładniejsze?
    Funkcja Math.sin musi mieć dla x double? (o ile się nie mylę)
  • Poziom 9  
    Krok? nie rozumiem.
  • Poziom 9  
    nie wiem co w pętli jest nie tak przecież odwołuje się do funkcji z klasy JFunkcja
  • Poziom 9  
    rozumiem że nie powinno być i++
    A jeśli chcę żeby kroki następowały po sobie co PI/4
    to jak to zapisać bo i+Math.PI / 4 nie bardzo działa
  • Poziom 9  
    a jak mozna obszar badania zmniejszyc np co pi/4? próbowałam jak w poprzednim poście ale nie bardzo działa
  • Poziom 9  
    super działa:)
    a nakieruje mnie ktoś jak zrobić żeby pokazywał dla jakiego x wartość jest max a dla jakiego min.
  • Poziom 43  
    Dwie zmienne tymczasowe, pod każdym ifem w pętli zapisujesz sobie do odpowiedniej zmiennej tymczasowej argument zamiast wyniku
  • Poziom 9  
    coś w stylu double min = Math.sin(a);
    double max = Math.sin(b);

    i wczesniej double a=0;
    double b=0;
  • Poziom 43  
    To jest pytanie? Bo jeśli tak, to źle myślisz, albo nie do końca potrafisz przekazać o czym myślisz
    Masz zapisywać ARGUMENT, przekładając do Twojego kodu to jest i.
  • Poziom 9  
    wyskakuje mi błąd że nie rozpoznaje i :(
  • Poziom 9  
    kombinowałam coś w stylu i= max=przebieg.Funkcja(i);
    jako ze i jest argumentem w którym wartość funkcji od i wynosi max czy to całe max=przebieg.Funkcja(i) wziąć jako jakąś jedną zmienną
    (wiem moja java jest jeszcze słaba ale to dopiero początki:|)
  • Poziom 43  
    Sorki za dosadność, ale z Java nie musi być najlepiej - wystarczy dobre myślenie.

    Masz
    Code:
    if (przebieg.Funkcja(i) > max) 
    
         max = przebieg.Funkcja(i);

    Co oznacza, że jeżeli dla bieżącego argumentu wartość funkcji Funkcja(i) jest większa, to do max zapisz wartość funkcji dla bieżącego argumentu. To kto Ci zabroni jeszcze w tym momencie do innej zmiennej przepisać i?
  • Poziom 20  
    Nie bardzo rozumiem sens tego problemu. W przedziale <0, 2Π> (pełny okres) funkcja sin(x) przyjmuje wartość najmniejszą -1 dla x=3Π/4 i największą 1 dla Π/4.
    Jednak ze względu na przestępność i niewymierność liczby Π i przybliżony charakter obliczeń na pewnym podzbiorze zbioru liczb wymiernych możesz nigdy tego wyniku nie uzyskać...
    Po wykonaniu poniższego kodu (traktuj to jako pseudokod wyjaśniający algorytm)
    Code:
    double krok = 0.01;
    
    double min = 2; // zdecydowanie więcej niż się spodziewam
    double max = -2; // zdecydowanie mniej niż się spodziewam
    double x = 0, x_min = 0 x_max = 0;
    while (x <= 2*PI)
      {
         if (sin(x)>max) {x_max = x; max = sin(x)};
         if (sin(x)<min) {x_min = x; min = sin(x)};
         x += krok;
       }

    uzyskasz wartość minimalną w punkcie (x_min, min) maksymalną w punkcie (x_max, max). Mieniając krok możesz uzyskać inne (dokładniejsze?) wyniki.
    Myślę, że z przerobieniem na Javę nie będzie problemów.
  • Poziom 9  
    stosując twój kod po przeróbce wyświetla mi dla x=6,.... wartość jest max
  • Poziom 9  
    Code:

    public void Max(double poczatekPrzedzialu, double koniecPrzedzialu)
       {
       JakaFunkcja przebieg = new JakaFunkcja();
         
        double max = 0;
              double min = 0;
        double imax = 0;
        double imin = 0;
       
       
    for (double i = poczatekPrzedzialu ; i <= koniecPrzedzialu; i+=((Math.PI)/20))
         {
         if (przebieg.Funkcja(i) > max)
         max = przebieg.Funkcja(i);
         imax = i;
       
         if (przebieg.Funkcja(i) < min)
         min = przebieg.Funkcja(i);
        imin = i;
        }
  • Poziom 43  
    O klamrach w ifie sie zapomniało.
    Code:
    if (przebieg.Funkcja(i) > max) {
    
         max = przebieg.Funkcja(i);
         imax = i; }
       
         if (przebieg.Funkcja(i) < min) {
         min = przebieg.Funkcja(i);
        imin = i;}
  • Poziom 9  
    wielkie dzięki za pomoc :)