Java-aproksymacja

Awatar użytkownika
ariadna
Użytkownik
Użytkownik
Posty: 2702
Rejestracja: 22 maja 2005, o 22:26
Płeć: Kobieta
Lokalizacja: Olsztyn/Berlin
Podziękował: 47 razy
Pomógł: 642 razy

Java-aproksymacja

Post autor: ariadna »

Wiemy, że:

\(\displaystyle{ ln2=\lim_{x\to } \sum_{i=0}^{n} \frac{(-1)^{i}}{i+1}=1-\frac{1}{2}+\frac{1}{3}-\frac{1}{4}+...}\)

Podaj algorytm, który umożliwia obliczenie \(\displaystyle{ ln2}\) i który podaje wynik, kiedy ostatni składnik mniejszy jest niż \(\displaystyle{ \epsilon}\). Podajemy \(\displaystyle{ \epsilon}\), chcemy otrzymać przybliżone \(\displaystyle{ ln2}\), jak również n.

Pomoże ktoś?
MGT
Użytkownik
Użytkownik
Posty: 107
Rejestracja: 7 lis 2006, o 12:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Pomógł: 20 razy

Java-aproksymacja

Post autor: MGT »

Sam algorytm jest dość prosty. Najważniejsze (wzór na szereg) masz dany w zadaniu. W kolejnych krokach liczysz kolejne elementy tego ciągu i dodajesz je go sumy (która jest z każdym kolejnym elementem bardziej przybliżoną wartością ln2). Za każdym razem też sprawdzasz. To jest ciąg naprzemienny, a dla takich zwykło się wykonywać określoną liczbę kroków. Zwykle tyle kroków, ile da nam zadawalające przybliżenie. Tyle powinno Ci wystarczeć, bo wzór jest bardzo prosty.
Awatar użytkownika
ariadna
Użytkownik
Użytkownik
Posty: 2702
Rejestracja: 22 maja 2005, o 22:26
Płeć: Kobieta
Lokalizacja: Olsztyn/Berlin
Podziękował: 47 razy
Pomógł: 642 razy

Java-aproksymacja

Post autor: ariadna »

MGT, można prosić jaśniej?
Ja się dopiero w zeszłym tygodniu dowiedziałam co to Java:)

Coś próbowałam:

public class ln2 {


public static void main(String[] args) {
double e = Double.parseDouble(args[0]);
double n;
double t=1;
double d;
while (d/n
MGT
Użytkownik
Użytkownik
Posty: 107
Rejestracja: 7 lis 2006, o 12:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Pomógł: 20 razy

Java-aproksymacja

Post autor: MGT »

Na pierwszy rzut oka nie wygląda źle. Wprawdzie nie znam składni, ale jak na moje zapomniałaś o inkrementacji zmiennej n w pętli while, co spowoduje pętlenie się programu. Reszta wygląda poprawnie.
Awatar użytkownika
ariadna
Użytkownik
Użytkownik
Posty: 2702
Rejestracja: 22 maja 2005, o 22:26
Płeć: Kobieta
Lokalizacja: Olsztyn/Berlin
Podziękował: 47 razy
Pomógł: 642 razy

Java-aproksymacja

Post autor: ariadna »

MGT pisze: inkrementacji zmiennej n
tzn?

Dzięki za zainteresowanie.
MGT
Użytkownik
Użytkownik
Posty: 107
Rejestracja: 7 lis 2006, o 12:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Pomógł: 20 razy

Java-aproksymacja

Post autor: MGT »

Kod: Zaznacz cały

public class ln2 {
public static void main(String[] args) {
    double e = Double.parseDouble(args[0]);
    double n;
    double t=1;
    double d;
    while (d/n<e) {
        double d=Math.pow(-1,n);
        t=(t+(d/n));
        n=n+1;
        }
    System.out.println(t);
    System.out.println(n);
    }
}
Powinno być lepiej.
Awatar użytkownika
ariadna
Użytkownik
Użytkownik
Posty: 2702
Rejestracja: 22 maja 2005, o 22:26
Płeć: Kobieta
Lokalizacja: Olsztyn/Berlin
Podziękował: 47 razy
Pomógł: 642 razy

Java-aproksymacja

Post autor: ariadna »

Nadal nie działa.
MGT
Użytkownik
Użytkownik
Posty: 107
Rejestracja: 7 lis 2006, o 12:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Pomógł: 20 razy

Java-aproksymacja

Post autor: MGT »

Jakiś konkretny błąd?

Kod: Zaznacz cały

public class ln2 {
public static void main(String[] args) {
    double e = Double.parseDouble(args[0]);
    double n=1;
    double t=1;
    double d=1;
    while ((d/n)<e) {
        double d=Math.pow(-1,n);
        t=(t+(d/n));
        n=n+1;
        }
    System.out.println(t);
    System.out.println(n);
    }
} 
a tak?
Awatar użytkownika
ariadna
Użytkownik
Użytkownik
Posty: 2702
Rejestracja: 22 maja 2005, o 22:26
Płeć: Kobieta
Lokalizacja: Olsztyn/Berlin
Podziękował: 47 razy
Pomógł: 642 razy

Java-aproksymacja

Post autor: ariadna »

Error: Unresolved compilation problem:
Duplicate local variable d


Cały czas coś tu nie pasuje, o dziwo za pierwszym razem liczyło, ale błędnie;)
MGT
Użytkownik
Użytkownik
Posty: 107
Rejestracja: 7 lis 2006, o 12:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Pomógł: 20 razy

Java-aproksymacja

Post autor: MGT »

Kod: Zaznacz cały

public class ln2 {
public static void main(String[] args) {
    double e = Double.parseDouble(args[0]);
    double n=1;
    double t=1;
    double d=1;
    while ((d/n)<e) {
        d=Math.pow(-1,n);
        t=(t+(d/n));
        n=n+1;
        }
    System.out.println(t);
    System.out.println(n);
    }
} 
teraz?
Awatar użytkownika
ariadna
Użytkownik
Użytkownik
Posty: 2702
Rejestracja: 22 maja 2005, o 22:26
Płeć: Kobieta
Lokalizacja: Olsztyn/Berlin
Podziękował: 47 razy
Pomógł: 642 razy

Java-aproksymacja

Post autor: ariadna »

Działać działa, ale wyniki złe

To nie jest takie straszne ważne, więc nie musisz się męczyć
MGT
Użytkownik
Użytkownik
Posty: 107
Rejestracja: 7 lis 2006, o 12:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Pomógł: 20 razy

Java-aproksymacja

Post autor: MGT »

Kod: Zaznacz cały

public class ln2 {
public static void main(String[] args) {
    double e = Double.parseDouble(args[0]);
    double n=1;
    double t=1;
    double d=1;
    while ((d/n)<e) {
        d=Math.pow(-1,n);
        t=(t+(d/(n+1)));
        n=n+1;
        }
    System.out.println(t);
    System.out.println(n);
    }
}


Poprawiłem wzór (+1 w mianorniku!)
Awatar użytkownika
ariadna
Użytkownik
Użytkownik
Posty: 2702
Rejestracja: 22 maja 2005, o 22:26
Płeć: Kobieta
Lokalizacja: Olsztyn/Berlin
Podziękował: 47 razy
Pomógł: 642 razy

Java-aproksymacja

Post autor: ariadna »

Nadal niet;)
MGT
Użytkownik
Użytkownik
Posty: 107
Rejestracja: 7 lis 2006, o 12:03
Płeć: Mężczyzna
Lokalizacja: Gdańsk
Pomógł: 20 razy

Java-aproksymacja

Post autor: MGT »

Kod: Zaznacz cały

public class ln2 {
public static void main(String[] args) {
    double e = Double.parseDouble(args[0]);
    double n=1;
    double t=1;
    double d=1;
    while ((1/(n+1))<e) {
        d=Math.pow(-1,n);
        t=(t+(d/(n+1)));
        n=n+1;
        }
    System.out.println(t);
    System.out.println(n);
    }
}
Jak teraz nie zadziała, to się poddaję
Awatar użytkownika
ariadna
Użytkownik
Użytkownik
Posty: 2702
Rejestracja: 22 maja 2005, o 22:26
Płeć: Kobieta
Lokalizacja: Olsztyn/Berlin
Podziękował: 47 razy
Pomógł: 642 razy

Java-aproksymacja

Post autor: ariadna »

Uparcie podaje 1.0, 1.0 ...
ODPOWIEDZ