# Nullstellen Newton



## SaskiaSchmitt (17. Okt 2011)

1.2 Berechnung von Nullstellen mit dem Newtonschen Näherungsverfahren
Entwickeln Sie ein Programm, welches die Nullstellen von rationalen Funktionen (= Polynome) dritten Grades nach dem Newtonschen (Isaac Newton, 1643 - 1727) Näherungsverfahren ermittelt.
Sollte nach einer gewissen Anzahl von Schritten keine Nullstelle gefunden sein, so wird mit einem entprechenden Hinweis auf Divergenz abgebrochen.

Eingabe

    Koeffizienten a, b, c, d des Polynoms f(x) := ax³ + bx² +cx + d
    Erster Schätzwert der Nullstelle Nx
    Abbruchkriterium Δx
    Kriterium für Divergenz




Hier mein Quellcode:


```
public class NewtonApp {
	// Datenfelder
	private double a, b, c, d;

	public NewtonApp(double a, double b, double c, double d) {
		this.a = a;
		this.b = b;
		this.c = c;
		this.d = d;
	}

	private double f(double x) {
		return (a * Math.pow(x, 3)) + (b * Math.pow(x, 2)) + (c * x) + 5;
	}

	private double fs(double x) {
		return (3 * a * Math.pow(x, 2)) - (2 * b * x) + c;
	}

	// Methode
	public double newton(double estimate, double delta) {
		double oldResult = estimate;
		double newResult;

		for (;;) {
			newResult = estimate - f(estimate) / fs(estimate);
			if (Math.abs(newResult - oldResult) < delta)
				break;
			estimate = newResult;
			oldResult = newResult;
		} 
		return newResult;
	}

	@Override
	public String toString() {
		return "[a/b/c/d] = [" + a + "/" + b + "/" + c + "/" + d + "]";
	}

	public static void main(String[] args) {
		NewtonApp calc = new NewtonApp(3.0, -12.4, 2.1, 5.0); // neues Objekt

		System.out.println(calc);
		System.out.println("Nullstelle = " + calc.newton(3.9, 0.000000001));

	}

}
```


Wie bekomme ich aber die Gleiche Ausgabe?


----------



## SaskiaSchmitt (17. Okt 2011)

*
Ausgabe*

   Nullstelle von f(x) := 3,0 x³ - 12,4 x² + 2,1 x + 5,0
   Erster Schätzwert der Nullstelle: 3,9
   Δx := 0,000000000001
   D := 20

   0: Nx = 3,900000000000
   1: Nx = 3,839839129406
   2: Nx = 3,837779413561
   3: Nx = 3,837777033120
   4: Nx = 3,837777033117
   5: Nx = 3,837777033117
   Gefundene Nullstelle Nx = 3,837777033117


----------



## Asgar13 (17. Okt 2011)

@eRaaaa Danke für die Java-Tags



> Wie bekomme ich aber die Gleiche Ausgabe?



-> Verstehe ich nicht ganz.


----------



## stone71 (17. Okt 2011)

Diese Ausgabe möchtest Du haben?


----------



## Asgar13 (17. Okt 2011)

```
if(this.erg != erg){
this.erg = erg;
}
else{System.out.println("Gleiches Ergebnis");}
```

Überprüft das alte mit den neuen Ergebnis.


----------



## SaskiaSchmitt (17. Okt 2011)

@Stone71

Ja, ich möchte diese Ausgabe haben. Weiss nur nicht wie ich das mit in Code machen soll.
Brauche dringend Hilfe..


----------



## Asgar13 (17. Okt 2011)

google:


```
http://www.java-uni.de/forum/viewtopic.php?f=7&t=198
```


----------



## SaskiaSchmitt (17. Okt 2011)

Du bist echt ein Schatz!
Vielen Dank.

Ich habe jetzt nur eine Frage, wie änder ich es denn auf meine Zahlen um?
So das mein Ergebnis rauskommt?

LG
Saskia


----------



## stone71 (17. Okt 2011)

Vielleicht so etwas, wenn ich es verstanden habe???
Hier kommen dann Zwischenergebnisse... ein paar mehr, aber vielleicht hilft dies!?


```
public double newton(double estimate, double delta) {
        double oldResult = estimate;
        double newResult;
        System.out.println(oldResult);
        for (;;) {
            newResult = estimate - f(estimate) / fs(estimate);
            if (Math.abs(newResult - oldResult) < delta)
                break;
            estimate = newResult;
            oldResult = newResult;
            System.out.println(oldResult);
            
        } 
        return newResult;
    }
```


----------



## SaskiaSchmitt (17. Okt 2011)

Und jetzt habe ich nur noch eine Frage 

Hat mir mal jemand seine private EmailAdd?

LG


----------



## stone71 (17. Okt 2011)

private email? Willst Du haben? Du könntest einstellen, dass Du hier Mails empfangen kannst...


----------

