Folge verschiedener Nährwerte zur Kubikwurzel

Neondream

Aktives Mitglied
also ich soll diese aufgabe hier machen ;)


so allerdings bin ich auf einige probleme gestoßen bei denen ich leider keine Lösung finde ;(

die einzelnen Fragen stehen im code

Java:
public class testroot 
{
	
	public static double root3 (double x)
	{
		double y = x/3;
		return y;
		
	}
	
	public static double folge (double x, double y, double e)
	{
		double [] folge;
		// Frage: wie leg ich fest das das array (folge[i] - folge[i-1]) < e lang wird obwohl ich die schleife ja erst nachher laufen lasse
		folge = new double [1000];
		//1st und 2nd folgenglied festlegen damit die schleife laufen kann
		folge[0] = y;
		folge[1] = (2*folge[0]+ (x / (folge[0]*folge[0])))/3;
		
		for (int i = 1; (folge[i] - folge[i-1]) < e; i++ )
		{
			// zuerst soll das 2 folgenglied überschrieben werden und dann alle weiteren
			int z = (2*folge[i-1]+ (x / (folge[i-1]*folge[i-1])))/3;
			folge[i] = z;
		}
		
		// Frage: folge soll wiedergegeben werden allerdings kommt die fehlermeldung "cannot convert from double [] to double"
		return folge;
		
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) 
	{
		// TODO Auto-generated method stub

		double x = Double.parseDouble(args[0]);
		double e = Double.parseDouble(args[1]);
		double y = root3(x);
		
	}

}

schonmal danke für evtuelle hilfe

nicegreeetz
neon
 

Ziegenpeter

Aktives Mitglied
Also meiner Meinung nach ist das sehr einfach. Ist jetzt aber ungetestet:

Java:
private double thirdRoot(double eps, double x){
        double y_0 = x / 3;
        double last = y_0;
        double current = y_0;
        while(current - last >= eps){
        	last = current;
        	current = (2*last+x/(last*last))/3;
        }
        return current;
}

Hab' jetzt leider keine Zeit mehr um noch großartig zu erklären, sry.
 

Neondream

Aktives Mitglied
stimmt aber damit ist es ja leider nicht erledigt ;(

die einzelnen werte müssen ja gespeichert werden, da ich sie später zum vergleich nochmal aufrufen muss... dafür wollte ich ja das array anlegen allerdings weiß ich ja erst nach dem schleifendurchlauf wie lang das array sein müsste, muss es aber schon vorher anlegen damit die werte dort drinnen gespeichert werden können?!?! :autsch:

da liegt mein problem

!!!!!!!!!!!!!!HILFE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! :D
 

eRaaaa

Top Contributor
stimmt aber damit ist es ja leider nicht erledigt ;(

die einzelnen werte müssen ja gespeichert werden, da ich sie später zum vergleich nochmal aufrufen muss... dafür wollte ich ja das array anlegen allerdings weiß ich ja erst nach dem schleifendurchlauf wie lang das array sein müsste, muss es aber schon vorher anlegen damit die werte dort drinnen gespeichert werden können?!?! :autsch:

da liegt mein problem

!!!!!!!!!!!!!!HILFE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! :D

Wieso willst du die in einem Array ablegen? Ist doch gar nicht gefragt/gewollt und notwendig erst recht nicht ?!
(ps.: bei der Lösung von Ziegenpeter hat sich imo noch ein kleiner Fehler eingeschlichen..in die Schleife wird nie gegangen, da 0 immer kleiner als epsilon sein wird (current bzw y_0 mit 0 vorbelegne und Math.abs benutzen so wie auch in der Aufgabenstellung beschrieben!))
 
Zuletzt bearbeitet:

eRaaaa

Top Contributor
aber irgendwie funktioniert das Programm auch nur beiden Zahlen 9 und 10 richtig :D kann mir jmnd sagen wodran das liegen könnte?

Mein p.s. hast du gelesen?

Java:
    private static double thirdRoot(double eps, double x) {
	double current = x / 3;
	double y_0 = 0;
	while (Math.abs(y_0 - current) > eps) {
	    y_0 = current;
	    current = (2 * y_0 + x / (y_0 * y_0)) / 3;
	}
	return current;
    }
 
Zuletzt bearbeitet:

Ziegenpeter

Aktives Mitglied
Du hast natürlich recht Eraaaa. Das Math.abs hab ich tatsächlich vergessen, bei dir hat sich aber auch ein, wenn auch recht unbedeutender Fehler eingeschlichen. Du musst auf >= vergleichen, da es strikt kleiner als Epsilon sein soll.

Achja, dann muss Epsilon übrigens strikt größer als 0 sein, ansonsten terminiert dein Prog nicht. Allerdings ist in der Mathematik Epsilon schon fast per Gesetz immer größer 0 :D
 
Zuletzt bearbeitet:

Neondream

Aktives Mitglied
kann mir vllt jmnd noch ne starthilfe geben sitze hier seit ewigkeiten dran zu überlegen und komme auf keinen Nenner ich soll ja mehrere eps eingegeben werden allerdings kann ich ja über Double.parseDouble(args[0]) ja immer nur einen wert einlesen.

und dann muss ich diewerte in einem array speichern und mit den exakten werten in einem anderen array vergleichen... müsste soweit stimmen oder?

Dankeschön neon

Aufgabe:
 

Ziegenpeter

Aktives Mitglied
Naja, du schreibst dir einfach eine Schleife, die von 0 bis args.length-1 geht (einschließlich beider Grenzen). Dann erstellst du dir ein Array, welche genau so lang ist wie args (nennen wir es mal res) und füllst es wie folgt auf:
Java:
res[i] = thirdRoot(Double.parseDouble(args[i]), x);
 

Neondream

Aktives Mitglied
weiß jmnd warum das array bei mir nicht gefüllt wird?
er gibt mir bei der ausgabe gar nichts aus nur exerg...

und die methode funktioniert soweit ;)

Java:
	public static void main(String[] args) 
	{
		// TODO Auto-generated method stub

		double x = Double.parseDouble(args[0]);
		double eps = 5;
		
		double [] earray;
		earray = new double [5];
		
		//array mit verschieden eps werten/ergebnissen auffüllen
		for (int i = 0; i < 5; i++)
		{
			double erg = root3(x,eps);
			earray[i]= erg;
			eps+=5;
			
		}
		
		//exaktes ergebniss der eingabe
		double exerg = Math.sqrt(x);
		
		// ausgabe der einzelnen ergebnisse
		for (int i=0; i>5;i++)
			System.out.println(earray[i]);
		
		
		System.out.println(exerg);
		
		
		
		
	}

}
 

eRaaaa

Top Contributor
Vllt stehe ich auf dem Schlauch, aber was bringt es wenn du den Näherungswert deiner Kubikwurzel-Funktion (mit verschiedenem Epsilon ) mit dem exakten Ergebnis von der Quadratwurzel vergleichst ? Solltest du das nicht eher mit dem exakten Kubikwurzelergebniss überprüfen/vergleichen ?!
 

Neondream

Aktives Mitglied
alles klar leute besten Dank für eure zahlreiche Hilfe das forum hier ist echt genial :applaus:

unser Prof läßt uns quasi fasst auf uns allein gestellt.

Hab die Aufgabe fertig

falls es jmnd interessiert:

Java:
	public static double root3 (double x, double eps)
	{	
	    double current = x / 3;
	    double y_0 = 0;
	    while (Math.abs(y_0 - current) >= eps) {
	        y_0 = current;
	        current = (2 * y_0 + x / (y_0 * y_0)) / 3;
	    }
	    return current;

	public static void main(String[] args) 
	{
		// TODO Auto-generated method stub

		double x = Double.parseDouble(args[0]);
		double eps = 1;
		
		double [] earray;
		earray = new double [10];
		double z = 0;
		
		//array mit verschieden eps werten/ergebnissen auffüllen
		for (int i = 0; i < 10; i++)
		{
			double erg = root3(x,eps);
			earray[i]= erg;
			eps+=1;
			//realtivenfehler errechnen erstmal alles addieren
			z += erg;
			
		}
		

		
		//exaktes ergebniss der eingabe
		double exerg = Math.sqrt(x);
		
		System.out.println("Ausgabe Verschiedener Nährungen bei eps=1+=1:");
		// ausgabe der einzelnen ergebnisse
		for (int i=0; i<10;i++)
			System.out.println(earray[i]);
		
		
		System.out.println("Exaktes Ergebniss: " + exerg);
		
		//fehler bestimmen
		z = ((z/10)/exerg)-1;
		System.out.println("Rellativer Fehler nach Newton: " + z);
		

		
		
		
		
	}

}
 

eRaaaa

Top Contributor
Also ich verweise mal nochmal auf meinen letzten Beitrag...bist du dir sicher dass das so stimmt? Die Ausgabe sagt doch überhaupt gar nichts aus, und meiner Meinung nach auch total falsche Ergebnisse !
(Epsilon von 1 und dann erhöhen ist auch merkwürdig wie ich finde...)


Java:
    public static void main(String[] args) {
	double[] epsilons = { 1, 0.5, 0.1, 1e-2, 1e-3, 1e-4, 1e-5, 1e-6, 1e-7 };
	double x = 8; // Von welcher Zahl soll die Kubikwurzel errechnet werden?
	double exakt = Math.pow(x, 1.0 / 3); //Kubikwurzel !
	System.out.println("Exaktes Ergebnis = "+exakt);
	for (double d : epsilons) {
	    double erg = root3(x, d);
	    System.out.println("Epsilon = " + d + " liefert " + erg + " Abweichung =  "+ Math.abs(erg - exakt));
	}
    }

Nicht vllt eher so in diese Richtung ???:L
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Abwandlung der Fibonacci Folge Java Basics - Anfänger-Themen 3
berserkerdq2 Wo geschieht der "Rücksprung, bei der rekursiven Folge Java Basics - Anfänger-Themen 5
sserio Längste Collatz-Folge Java Basics - Anfänger-Themen 11
D Grösste Zahl in einer Folge herausfinden. (ULAM) Java Basics - Anfänger-Themen 9
J Rekursive Folge (a=a-1) Java Basics - Anfänger-Themen 9
GAZ Tribonacci Folge Rekursiv Java Basics - Anfänger-Themen 11
D Hofstäter Q Folge Java Basics - Anfänger-Themen 3
V Fibonacci Folge Java Basics - Anfänger-Themen 4
M Methoden Fibonacci-Folge Java Basics - Anfänger-Themen 6
J Fibonacci -Folge rekursiv berechnen Java Basics - Anfänger-Themen 18
S Negafibonacci Folge berechnen Java Basics - Anfänger-Themen 24
T Algortihmus: Kürzeste Folge zu einer Zahl Java Basics - Anfänger-Themen 40
G Harmonische Rekursive Folge Java Basics - Anfänger-Themen 3
M Fibonacci-Folge mit while-Schleife Java Basics - Anfänger-Themen 4
J Byte Folge erkennen Java Basics - Anfänger-Themen 5
A Gerade Terme der Fibonacci-Folge aufsummieren Java Basics - Anfänger-Themen 12
R Roboter - Helmich Folge 6 Java Basics - Anfänger-Themen 32
S rekursive folge verbessern Java Basics - Anfänger-Themen 2
H JOptionPane YES Option mit Folge? Java Basics - Anfänger-Themen 2
P Collatz-Folge mittels indirekter Rekursion Java Basics - Anfänger-Themen 8
X Problem mit Ducci-Folge Java Basics - Anfänger-Themen 7
S Fibonacci Folge Java Basics - Anfänger-Themen 34
B Element in Folge suchen Java Basics - Anfänger-Themen 7
L iterative und rekursive Folge Java Basics - Anfänger-Themen 20
I Fibonacci-Folge , direkter Weg. Java Basics - Anfänger-Themen 5
J Wurzel mit einer Folge brechnen Java Basics - Anfänger-Themen 5
E Rekursive definierten Folge Java Basics - Anfänger-Themen 10
D Bit-Folge bearbeiten Java Basics - Anfänger-Themen 2
W Best Practice Tabulatoren verschiedener Länge ersetzen Java Basics - Anfänger-Themen 8
S Array erzeugen mit verschiedener Verteilung Java Basics - Anfänger-Themen 11
H Anzahl verschiedener Buchstaben im String Java Basics - Anfänger-Themen 41
F Interaktion von Objekten verschiedener Klassen... Java Basics - Anfänger-Themen 13
D Liste verschiedener konkreter Klassen möglich? Java Basics - Anfänger-Themen 2
P Liste sortieren verschiedener generischer Typen Java Basics - Anfänger-Themen 4
E Array Anzahl verschiedener Werte ausgeben Java Basics - Anfänger-Themen 3
P Windows vs. Ubuntu verschiedener Output Java Basics - Anfänger-Themen 31
L Vererbung - Wie Objekte verschiedener Klassen unterscheiden Java Basics - Anfänger-Themen 3
J OOP Ausgabe verschiedener Variabeln aus verschiedenen Subclasses Java Basics - Anfänger-Themen 2
B EreignisListener verschiedener Klassen aus einer Ereignisklasse verwalten Java Basics - Anfänger-Themen 9
4 OOP Problem beim Speichern verschiedener Klassen in verschiedenen Dateien Java Basics - Anfänger-Themen 25
T Collection von Objekten verschiedener Klassen Java Basics - Anfänger-Themen 4
G Listenartige Speicherung verschiedener Objekte Java Basics - Anfänger-Themen 5
T Rückgabewerte verschiedener Typen Java Basics - Anfänger-Themen 3
N Vergleich zweier Elemente verschiedener Vectoren Java Basics - Anfänger-Themen 2
S Zugriffsdeklinationen verschiedener Klassen? Java Basics - Anfänger-Themen 3
V Threads verschiedener Klassen synchronisieren Java Basics - Anfänger-Themen 5
G Installation verschiedener JREs Java Basics - Anfänger-Themen 3
W Berechnung verschiedener Eigenschaften von Geraden Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben