n = 80;
h = 10/n;

ynull = 1;

yexp   = zeros(n+1,1);
yimp   = zeros(n+1,1);
yexact = zeros(n+1,1);
yexp(1)   = ynull;
yimp(1)   = ynull;
yexact(1) = ynull;

for i=2:n+1
  yexp(i)   = yexp(i-1) - h * 10 * yexp(i-1)^2;
  yimp(i)   = (-1 + sqrt(1+4*10*h*yimp(i-1)))/(20*h);
  yexact(i) = 1 / (10*(h*(i-2))+1);
end

x = 0:h:10;
plot2d(x, [yexp yimp yexact], rect=[0, 0, 10, 1]);

// Anmerkung:
//
// Anstatt von Hand auf Papier die quadratische Gleichung
// mit der Mitternachtsformel zu loesen und die fertige
// Formel einzuprogrammieren, kann man auch das Newton-Verfahren
// implementieren.
//
// Das hat folgende Vor- und Nachteile:
//
// Vorteil: Man muss selbst weniger denken, insbesondere
// muss man sich nicht ueberlegen, welche der beiden Loesungen
// der Loesungsformel man verwenden muss: Das Newton-Verfahren
// startet man ja naemlich mit dem alten Wert von y_k als
// Startwert, Newton findet dann die naechstgelegende Nullstelle.
//
// Nachteil: Es ist nicht garantiert, dass das Newton-Verfahren
// konvergiert; und es ist auch nicht garantiert, dass es gegen
// die naechstgelegende Nullstelle konvergiert. (Das steht oben
// zwar, ist aber nur eine Erwartung, die man haben sollte,
// und die auch meistens zutrifft, aber die man eben nicht
// garantiert bekommt.)
//
// Nachteil: Das Verfahren benoetigt insgesamt mehr Zeit,
// da das Newton-Verfahren mehr Zeit benoetigt, als die
// Fliesskommawurzelziehoperation, die direkt im Prozessor
// in Hardware gegossen ist.
//
// Allgemeine Faustregel: Es ist immer gut, moeglichst
// viel noch selbst auf Papier zu vereinfachen,
// damit der Computer dann weniger rechnen muss.
// (Und somit effizienter und genauer, da weniger
// Rundungsfehler, ist.)
