// Implementierung des Newton-Verfahrens
// Betrifft die Präsenzaufgaben 3 und 4 und die schriftlichen Aufgaben 6 und 7
// von Blatt 2.

// In jeder der Aufgaben suchen wir eine Lösung x der Gleichung
//
//     y = f(x),
//
// wobei y und f jeweils unterschiedlich sind.
//
// Für P3: y = 2,        f(x) = x^2
// Für P4: y = 3.141592, f(x) = x^2
// Für A6: y = 2,        f(x) = x^3
// Für A7: y = 0,        f(x) = 8x^3 - 12x - 1

// Für P3:
y = 2;

// Iterationsanfang: Erste Vermutung für die Lösung.
// Für A7 muss diese auf -0.5 angepasst werden.
x = 1;

// Newton-Iteration, zehn Schritte
for i = 1:10
    // Für P3 und P4:
    x = 1/2 * (x + y/x);

    // Für A6:
    //x = 1/3 * (2*x + y/x^2);

    // Für A7:
    //x = x - (8*x^3 - 12*x - 1 - y) / (24*x^2 - 12);

    printf('nach Iteration %2d: %.20f\n', i, x);
end

// Es ist interessant, das Verhalten des Newton-Verfahrens in Abhängigkeit des
// Startwerts zu untersuchen. Macht man das nicht für Funktionen von R nach R,
// sondern von C nach C, kann man die Ergebnisse in einem zweidimensionalen
// Koordinatensystem festhalten; man erhält dann fraktale Gebilde.
//
// Siehe beispielsweise:
// * http://de.wikipedia.org/wiki/Newton-Fraktal
// * http://didaktik.mathematik.hu-berlin.de/files/2011_fraktale.pdf
// * J. Hubbard, D. Schleicher und Scott Sutherland.
//   How to Find All Roots of Complex Polynomials by Newton's Method.
//   In: Inventiones Mathematicae 146 (2000), S. 1--33.
//   http://mathlab.mathlab.sunysb.edu/~scott/Papers/Newton/Published.pdf
