Wurzel mit einer Folge brechnen

Status
Nicht offen für weitere Antworten.
Hallo...
Ich habe leichte Probleme mit der folgenden Aufgabe

Schreiben Sie ein Java-Programm, das die Glieder (xn) einer Folge bestimmt, deren Grenzwert Wurzel(a) ist. Lesen Sie zunächst ein a > 0 ein. Geben Sie ein Folgeglied aus, welches sich im Wert nur wenig von Wurzel(a) unterscheidet. Die Folge ist wie folgt definiert:

x1=a____________________________ xn+1=(xn+(a/xn))/2

Ich weis, dass ich das ganze mit einer while-Schleife aufziehen muss, allerdings habe ich irgendwie kein Plan wie ich es hinbekomme, das alle Glieder der Folge bestimmt werden......
Ein leichter Denkanstos wäre nicht schlecht....
Danke
 
kurze google-Suche führt zu
http://www.wer-weiss-was.de/theme50/article67223.html

was soll der lange _____________ in der Formel, soll das heißen dass noch was fehlt?

du sollst übrigens nicht alle Glieder der Folge merken, falls du das glaubst, es reicht, irgendwann die richtige Wurzel auszugeben,

grobes Beispiel:
Wurzel von 5 gesucht,
fange mit 5 als erstes Glied der Folge an, dann ist das nächste (5 + 5/5)/2 = 3,
das nächste (3+ 5/3)/2 = was auch immer usw.

aufhören kannst du wenn xn und a/xn nur noch maximal y auseinanderliegen, y kann man beliebig klein wählen,

programmieren musst du das nun aber, du musst dir praktisch nur eine Variable merke + die Ausgangszahl a und in jedem Schleifendurchlauf das neue Folgenglied nach der Formel ausrechnen + prüfen ob schon gut genug
 
ne, fehlt nix! _______________is nur für die formatierung.....vorher habe ich einfach ein paar leerzeichen gemacht, aber es stand trotzdem direkt nebeneinandern! dient also nur der übersichtlichkeit
 
Code:
/******************************  Folge.java  **********************************/

import AlgoTools.IO;

/**
 * @version 17.11.08
 *  

 */

public class Folge {

  public static void main(String argv[]) {
     

  double a, x, epsilon=0.00001;

  a=IO.readInt("Bitte eine Zahl > 0 eingeben:");
    if(a<=0)
    {
      IO.println("Kann keine Wurzel aus negativer Zahl ziehen!");
      a=IO.readInt("Bitte eine Zahl > 0 eingeben:");
    }

   x=a;

    do
    {
      x=(x+a/x)/2;
    }

    while(x*x+a < epsilon);
    {
      IO.println("Ergebnis:" + x, 10, 1);
    }



  }
}

Die Berechnung an sich müsste passen, aber leider meckert der Compiler immer über den print-Befehl und ich habe ehrlich gesagt keine Ahnung warum....Selbst wenn ich anstatt der vorgefertigten Methoden aus AlgoTools.IO den Standart-Befehl "System.out.print" benutze läuft es nicht....
Wer kann helfen?
Danke
 
der Standard-Befehl print bzw. println ht nur einen Parameter, da kannst du nicht "Komma 10 Komm 1" ranhängen,
wenn das bei IO auch so, dann gehts gar nicht (in so einfacher Schreibweise),

kannst dir ne Hilfsmethode
print(String text, int unbekannterParameterMitWelchemSinn1, int unbekannterParameterMitWelchemSinn2) {
//..
}

schreiben und dort diese unbekannten Parameter mit welchem Sinn? verwenden

wozu die geschweiften Klammern hinter dem while?
das while gehört zu do, danach steht normaler Code,

deine Abbruchbedingung ist etwas komisch, a ist vielleicht 5, x*x auch hoffentlich ungefähr 5,
5+5 = 10 soll kleiner als epsilon sein?
 
Hat sich geklärt....in der Tat lag der Fehler in der Abbruchbedingung! Habe einfach ein paar andere Sachen versucht und irgendwann ging es dann 🙂
Das ,10, 1 müsste funktionieren, ist auch eine vorgefertigte Methode der Algo-Tools....Die erste Zahl steht für die Stelle der Ausgabe, die zweite für die Anzahl der Nachkommastellen....
Aber wie gesagt, das Programm läuft 🙂
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben