Erste Schritte ln(1+x) Reihe Programmieren

ocsme

Top Contributor
Guten Tag,

wir sollen diese Reihe hier Programmieren:
ln(1 +x )=x-x^2/2+x^3/3-x^4/4+...

Das Problem habe ich so gelöst. Doch leider habe ich Abweichungen in den letzten 7 Ziffern :(
Würde sehr gerne die Variable nachfolger auch mit eps vergleichen und dann eben die hinteren stellen auf 0 Abrunden doch leider weiß ich grade nicht so recht wie ich das anstellen soll. Es dürfen keine Math. Bibliotheken benutzt werden :(

Java:
double x=0.9;
        double eps=1e-10;

        double ergebnis=0;
        double vorgaenger=x;
        double nachfolger=0;
        double abstand=1;
        double k=-1;
      
        for(int i=1;abstand>eps;i++) {
            abstand=vorgaenger-nachfolger;
            if(abstand<0)
                abstand=-abstand;
            vorgaenger=nachfolger;
            k=(-k)*x;
            nachfolger=k/i;
          
            ergebnis+=nachfolger;
            System.out.println("ergebnis: "+ergebnis);
        }

LG
 

ocsme

Top Contributor
o_O Danke hihi =)
Okay doch jetzt das nächste denn das ganze soll als Methode geschrieben werden bei solchen Aufgaben schreibe ich mir erst die Programme so in eine main und später dann die Methode rum und fertig :)
Wie bekomme ich es dann aber hin das er mir den double der zurück kommt eben nur auf diese 10 Stellen ist? Ohne eine Runde Methode oder sowas wie Printf oder so :D

Hast du da vielleicht eine nette idee? oder soll ich das ganze dann einfach wie üblich *1e10 rechnen den rest abschneiden und wieder zurück rechnen?
 

mihe7

Top Contributor
Wie bekomme ich es dann aber hin das er mir den double der zurück kommt eben nur auf diese 10 Stellen ist?
Im Allgemeinen gar nicht.

Während für ganze Zahlen der Dezimalwert exakt binär darstellbar ist, gilt dies bei Gleitkommazahlen oft nicht.

Wenn Du Dir das Dezimalsystem ansiehst, dann hast Du links vom Komma die Einer-, Zehner-, Hundeter, ...-Stelle, rechts vom Komma die Zehntel, Hundertstel, Tausendstel usw.

Im Binärsystem analog links vom Komma Einer, Zweier, Vierer, Achter, ... und rechts vom Komma Halbe, Viertel, Achtel, Sechzehntel, ...

Der Wert 1/4 lässt sich sowohl dezimal als auch binär exakt angeben: im Dezimalsystem sind das 2 Zehntel und 5 Hundertstel, also 0.25. Binär dagegen ist es ein Viertel, also 0.01.

1/10 lässt sich im Dezimalsystem exakt angeben (0.1), binär dagegen ist es eine periodische Zahl:
Code:
Berechnung 1 : 10 (dezimal), d. h. 1 : 1010 binär

Schritt 1:

 10000 : 1010 = 0,0001
- 1010
 -----
  0110

Schritt 2:

 10000 : 1010 = 0,00011
- 1010
 -----
  01100
   1010
   ----
   0010

Schritt 3:
 10000 : 1010 = 0,0001100
- 1010
 -----
  01100
-  1010
   ----
   0010000 --> wieder bei Schritt 2 angekommen

Ergebnis: 0,0001100110011001100...

Da die Zahl der Stellen beschränkt ist, handelt es sich um einen Näherungswert. Der dezimale Wert dieser Zahl ist 0.1000000000000000055511151231257827021181583404541015625.

Kannst Du selbst ausprobieren: System.out.println(new java.math.BigDecimal(0.1)); Verwendest Du System.out.println(0.1) wird automatisch "gerundet" und es wird "0.1" angezeigt. Das ändert aber nichts daran, dass dahinter ein dezimaler Wert mit allen oben gezeigten Nachkommastellen steckt.

oder soll ich das ganze dann einfach wie üblich *1e10 rechnen den rest abschneiden und wieder zurück rechnen?

Das kannst Du machen, um einen (Näherungs)Wert für eine auf 10 Stellen abgeschnittene Zahl zu erhalten.

Beispiel (Abschneiden nach 1 NkSt):

((int)0.5125*10)/10.0 = 0.5 (binär exakt darstellbar)
((int)0.125*10)/10.0 = 0.1 (binär nur als Näherungswert darstellbar)
 

ocsme

Top Contributor
Danke für die Antworten :)

Ich hab es nun auch versucht so zu machen doch das klappt leider nicht:
Java:
double tmp=ergebnis*100000;
        long h=(long)tmp;
        tmp-=h;
        h*=100000;
        tmp*=100000;
        long hh=(long) tmp;
        double fertig=h+hh;

Wollte das Ergebnis dann um 5 Nachkommastellen verschieben. Danach neu abspeichern und das ganze erneut. Damit ich später richtig rechne wollte ich einfach die erste Variable die ich abgeschnitten hatte * (die restlichen Kommastellen). Das ganze klappt auch doch leider bekomme ich es später nicht mehr in einen Double rein!
Also geht das ganze irgendwie nicht doch dann verstehe ich auch nicht wie eine Runde Methode sowas erledigt :(

LG
 

ocsme

Top Contributor
Manchmal sieht man den Wald vor lauter Bäume nicht :rolleyes:
so geht es Danke nochmals :)

Java:
(long)(ergebnis*10000000000l)/10000000000.0
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Rekursives Programmieren --> harmonische Reihe Java Basics - Anfänger-Themen 3
S Zahlen reihe Programmieren Java Basics - Anfänger-Themen 12
S 2 Reihen ratio-btn, eine Reihe funktioniert andere nicht Java Basics - Anfänger-Themen 4
new_to_coding Rekursive Reihe implementieren Java Basics - Anfänger-Themen 1
rosima26 Taylor-Reihe in Java Java Basics - Anfänger-Themen 20
J Fibonacci-Reihe Java Basics - Anfänger-Themen 12
J Algorithmus für eine Reihe implementieren Java Basics - Anfänger-Themen 2
K Apache POI Excel Letzte Reihe einer bestimmten Spalte Java Basics - Anfänger-Themen 1
S Gibt es eine Funktion, die gewissermaßen eine Reihe von instanceOf() vereinheitlicht? Java Basics - Anfänger-Themen 19
G harmonische Reihe Java Basics - Anfänger-Themen 2
M Java Anfänger - Video Tutorial Reihe (DEUTSCH) Java Basics - Anfänger-Themen 11
G Mehrere If-else-Sätze der Reihe nach durchlaufen lassen Java Basics - Anfänger-Themen 2
T Harmonische Reihe Java Basics - Anfänger-Themen 5
A Taylor Reihe für Sinus Java Basics - Anfänger-Themen 3
w0ddes Reihe deselektieren in einer JTable Java Basics - Anfänger-Themen 2
B vorletzten Wert aus einer Reihe bekommen Java Basics - Anfänger-Themen 6
Shalimar Längste Reihe anzeigen lassen Java Basics - Anfänger-Themen 11
A Eine Javaaufgabe die ich nicht auf die Reihe bekomme. Java Basics - Anfänger-Themen 7
W Innerhalb TableModel auf aktivierte Reihe reagieren Java Basics - Anfänger-Themen 3
0 Harmonische Reihe rekursiv berechnen? Java Basics - Anfänger-Themen 10
Dilandau erweiterbare reihe aus elementen machen? Java Basics - Anfänger-Themen 10
G JTable Reihe und Spalte Java Basics - Anfänger-Themen 7
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
B OOP was heißt objektorientiertes Programmieren (fragt ein absoluter Anfänger) Java Basics - Anfänger-Themen 17
laxla123 Rechteck programmieren Java Basics - Anfänger-Themen 4
A Erste Schritte Dynamische Stempel im PDF Exchange programmieren Java Basics - Anfänger-Themen 0
D Programmieren nach UML Java Basics - Anfänger-Themen 2
Y Taschenrechner programmieren Java Basics - Anfänger-Themen 3
B Überweisung programmieren Java Basics - Anfänger-Themen 7
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
D Ampel Programmieren die jede 10 sekunden ihre farbe wechselt Java Basics - Anfänger-Themen 6
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
thor_norsk Fernseher programmieren mit Java Java Basics - Anfänger-Themen 4
M Jenga Regeln Java Programmieren Java Basics - Anfänger-Themen 1
M Ressourcensparend programmieren Java Basics - Anfänger-Themen 3
brypa Wie Programmieren lernen? Java Basics - Anfänger-Themen 15
G Spielerwechsel programmieren Java Basics - Anfänger-Themen 1
J Solitär (Brettspiel) programmieren Java Basics - Anfänger-Themen 3
H Objektorientiertes Programmieren Java Basics - Anfänger-Themen 4
K 12- Stunden Konverter Programmieren Java Basics - Anfänger-Themen 1
WAB9703-04 Programm zum automatischen Ausfüllen von Formularen programmieren Java Basics - Anfänger-Themen 3
L Zahlenspiel programmieren Java Basics - Anfänger-Themen 1
TimoN11 Automat programmieren Java Basics - Anfänger-Themen 4
G Erste Schritte Array Mittelwert Methode Programmieren Java Basics - Anfänger-Themen 5
ehmo würfelspiel programmieren anfänger Java Basics - Anfänger-Themen 1
N Ufospiel programmieren Java Basics - Anfänger-Themen 13
KogoroMori21 Vorbereitung auf die Programmieren Klausur vom ersten Semester Java Basics - Anfänger-Themen 4
Drinkerbell Erste Schritte Zu blöd zum Programmieren? Java Basics - Anfänger-Themen 9
G Stack programmieren Java Basics - Anfänger-Themen 6
I Brauche Hilfe bei Objektorientiertem programmieren Java Basics - Anfänger-Themen 23
T Auf einem Schachbrett bewegen programmieren Java Basics - Anfänger-Themen 2
G Bruchrechner programmieren Java Basics - Anfänger-Themen 6
G Ufo Spiel programmieren Java Basics - Anfänger-Themen 13
D Schachbrett (8x8) programmieren Java Basics - Anfänger-Themen 3
J Spiel programmieren Java Basics - Anfänger-Themen 16
J Hilfe beim Programmieren Java Basics - Anfänger-Themen 5
S Kreisberechnung3 Buch: Programmieren lernen mit Java von Hans-Peter Habelitz Java Basics - Anfänger-Themen 39
M Quiz in Java programmieren mit Array Java Basics - Anfänger-Themen 8
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
K Java programmieren Java Basics - Anfänger-Themen 6
V_Fynn03 Kontrolle des Quelltextes (Bank programmieren)(GUI) Java Basics - Anfänger-Themen 6
D Was tun gegen zu komplzierten Denken beim Programmieren Java Basics - Anfänger-Themen 27
V_Fynn03 Bruchrechner programmieren (2 Klassen) Java Basics - Anfänger-Themen 9
N Ticketautomat programmieren Java Basics - Anfänger-Themen 63
M Rechner programmieren Java Basics - Anfänger-Themen 3
V_Fynn03 Java Bruchrechner programmieren Java Basics - Anfänger-Themen 13
J Java Suchfunktion Programmieren Java Basics - Anfänger-Themen 1
L Erste Schritte Bin ich "zu dumm" oder nicht geeignet zum Programmieren? Java Basics - Anfänger-Themen 3
U Ist jemad gut in programmieren (JAVA) und kann mir helfen? Java Basics - Anfänger-Themen 1
H Uhr programmieren Java Basics - Anfänger-Themen 10
T Schalter programmieren Java Basics - Anfänger-Themen 17
S Ampel Programmieren Java Basics - Anfänger-Themen 5
P Erste Schritte Probleme mit dem Programmieren Java Basics - Anfänger-Themen 12
D Richtig für Programmieren an der UNI lernen Java Basics - Anfänger-Themen 8
B Folgende Abfrage dynamisch programmieren? Java Basics - Anfänger-Themen 8
D Beim Programmieren auf die Logisch einfache Lösung kommen. Java Basics - Anfänger-Themen 17
B UML Klassen Diagramm zu Java Code Programmieren und ausführen Java Basics - Anfänger-Themen 21
steven789hjk543 Kann man mit Java und Eclipse einen Virus programmieren? Java Basics - Anfänger-Themen 13
S Spiel programmieren mit Java Java Basics - Anfänger-Themen 11
A Kalender programmieren, ich finde meinen Fehler nicht. Java Basics - Anfänger-Themen 9
S Erste Schritte Hilfe beim lernen von Programmieren Java Basics - Anfänger-Themen 2
V Zeichenkette programmieren Java Basics - Anfänger-Themen 20
O Fenster programmieren Java Basics - Anfänger-Themen 2
R Uebersichtlicher bzw. besser Programmieren Java Basics - Anfänger-Themen 13
N Dynamisches Programmieren/Fibonacci Java Basics - Anfänger-Themen 1
B Spielfiguren für ein Beute-Jägerspiel programmieren Java Basics - Anfänger-Themen 12
A Programmieren lernen Java Basics - Anfänger-Themen 28
F ArrayListe manuell programmieren? Java Basics - Anfänger-Themen 24
X Erste Schritte Einstieg ins Programmieren Java Java Basics - Anfänger-Themen 2
Ellachen55 Weihnachtsbaum in Eclipse programmieren Java Basics - Anfänger-Themen 6
L Klassen Geldrückgabe - Aufgabe Programmieren Java Basics - Anfänger-Themen 23
H Stern Dreieck (Buch: Grundkurs Programmieren) Java Basics - Anfänger-Themen 2
V Variablen Vorkommen programmieren Java Basics - Anfänger-Themen 18
S Dreieckssignal programmieren Java Basics - Anfänger-Themen 5
K Fehler beim Programmieren von TicTacToe Java Basics - Anfänger-Themen 12
M Spiel programmieren Java Basics - Anfänger-Themen 16
A Fenster programmieren Java Basics - Anfänger-Themen 1
V OOP Kassensystem objektorientiert programmieren Java Basics - Anfänger-Themen 15
A Erste Schritte DoodleJump programmieren: Kollisionsabfrage Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben