Bestimmen Sie die Wurzel einer Zahl a iterativ nach folgender Formel

Brechen Sie die Iteration ab, wenn

Lesen Sie den Wert a sowie die Genauigkeitsschranke eps ein und geben Sie die Werte von n sowie xn+1 aus.
Zeichnen Sie die Funktion
für ein gegebenes Intervall mit Hilfe eines Grafikobjektes.
Lösung
Zur Lösung dieser Aufgabe wird die Datei unibwm.jar benötigt. Sie kann in der Eclipse Umgebung in den Projektoptionen unter “add external jar” hinzugefügt werden.
Berechnung einer beliebigen Wurzel
import java.util.Scanner; // Scanner für die Eingabe von Werten
public class Aufgabe19
{
public static double Wurzel(double dZahl, double dEPS)
{ // berechnet die Wurzel aus dZahl mit der gewählten Genauigkeit
// Variablen Deklaration
double dErgebnis, dAbweichung;
int iSchritte;
// Variablen Initialisierung
dErgebnis = 1;
iSchritte = 0;
do
{ // Schleife aktualisiert das Ergebnis mit der gegebenen Formel
double dPrev = dErgebnis;
dErgebnis = (.5 * (dErgebnis+dZahl / dErgebnis));
dAbweichung = (dErgebnis-dPrev) / dPrev;
if (dAbweichung < 0)
dAbweichung *= -1.;
++ iSchritte;
} // end do
while (dAbweichung > dEPS);
System.out.println("Benötigte Schritte: "+iSchritte);
return dErgebnis;
} // end Wurzel
public static void main(String[] args)
{
// Variablen Deklaration
Scanner scnEingabe = new Scanner(System.in);
double dZahl, dEPS;
// Variablen Initialisierung
System.out.print("Wurzel aus der Zahl: ");
dZahl = scnEingabe.nextDouble();
System.out.print("wird berechnet mit der Genauigkeit: ");
dEPS = scnEingabe.nextDouble();
System.out.println("Ergebnis: "+ Wurzel(dZahl, dEPS));
} // end main
} // end class
Zeichnen der Wurzelfunktion im gegebenen Intervall
import java.util.Scanner; // Scanner für die Eingabe von Werten
import unibwm.*; // Grafik für die Ausgabe der Funktion
public class Aufgabe19b
{
public static double Wurzel(double dZahl, double dEPS)
{ // berechnet die Wurzel der gewünschten Zahl mit angegebener Genauigkeit
// Variablen Deklaration
double dErgebnis, dAbweichung;
// Variablen Initialisierung
dErgebnis = 1;
do
{ // Schleife aktualisiert das Ergebnis mit der gegebenen Formel
double dPrev = dErgebnis;
dErgebnis = (.5 * (dErgebnis+dZahl / dErgebnis));
dAbweichung = (dErgebnis-dPrev) / dPrev;
if (dAbweichung < 0)
dAbweichung *= -1.;
} // end do
while (dAbweichung > dEPS);
return dErgebnis;
} // end Wurzel
public static void main(String[] args)
{
// Variablen Deklaration
Scanner scnEingabe = new Scanner(System.in);
Grafik gfkAusgabe = new Grafik();
// Variablen Initialisierung
double dEPS = .0001;
System.out.print("linke Grenze: ");
double dLinkeGrenze = scnEingabe.nextDouble();
System.out.print("rechte Grenze: ");
double dRechteGrenze = scnEingabe.nextDouble();
// Berechnung aller Werte der Wurzelfunktion im Intervall
for (double d = dLinkeGrenze; d < dRechteGrenze; ++ d)
gfkAusgabe.addLine(d, Wurzel(d, dEPS) * 10, d+1,
Wurzel(d+1, dEPS) * 10);
gfkAusgabe.show("Ausgabe zu Aufgabe 19b");
} // end main
} // end class


