Allgemeine Informatik II SoSe 2001
Prof. Dr. H. Neumann $\bullet$ Dr. K. Murmann $\bullet$ S. Geschwentner $\bullet$ Dr. F. Schwenker

1. Aufgabenblatt (bis zum 10.05.2001)



1. Aufgabe:
Schreiben Sie eine Modula-2-Funktionsprozedur, die die größte Nullstelle (es kann mehrere geben) einer stetigen reellwertigen Funktion $f(x)$ in einem Intervall $[a,b]$ näherungsweise berechnet und diese Näherung als Ergebnis zurückliefert. Verwenden Sie für die Nullstellenberechnung die regula falsi:

\begin{displaymath}
x_{n+1} = x_n - \frac{x_n-x_{n-1}} {f(x_n)-f(x_{n-1})} f(x_n) \;\;\;\; n\ge 1
\end{displaymath}

mit Startwerten $x_0$ und $x_1$.

Der Prozedur sollen als Parameter eine beliebige Funktion $f(x)$, die Intervallgrenzen $a$ und $b$ sowie zwei Startwerte $x_0$ und $x_1$ übergeben werden. Die Iteration soll beendet werden, wenn $\vert x_{n+1} - x_n\vert <
10^{-6}$ ist. Insgesamt sollen höchstens 100 Iterationen durchgeführt werden.

Schreiben Sie ein Modula-2 Programm zum Testen dieser Prozedur und berechnen Sie für die folgenden Funktionen $f$ jeweils die größte Nullstelle des angegebenen Intervalls:

  1. $f(x)=\cos x - \sin x$ in $[0,\pi/2]$
  2. $f(x) = x^2 - 3$ in $[0,3]$
  3. $f(x) = \prod_{i=0}^{10} (x-2i)$ in $[19,21]$.
Verwenden Sie als Startwerte jeweils $x_0=b$ und $x_1=x_0-0.5$.


2. Aufgabe:
Führen Sie für das folgende Modula-2 Programmstück eine Handsimulation durch. Geben Sie dabei für jede Anweisung die Speicherbelegung an, die sich nach Ausführung dieser Anweisung ergibt. Bezeichnen Sie unbestimmte Inhalte mit '?'. Geben Sie für etwaig auftretende Effekte, wie Daten- oder Zugriffsverluste, entsprechende Kommentare für die jeweilige Anweisungszeile an!
TYPE
   IntegerPointer = POINTER TO INTEGER;
VAR
   p, q, r : IntegerPointer;
   x, y    : INTEGER;
BEGIN
   p  := NIL;
   x  := 10;
   y  :=  3;
   NEW(p);
   q  := p;
   q^ := x;
   NEW(q);
   q^ := y;
   r  := q;
   NEW(r);
   r^ := q^ + p^;
   q  := r;
   y  := p^ + q^ - r^;
   DISPOSE(q);
END





Stefan Geschwentner 2001-04-26