\documentclass{bschlangaul-aufgabe}
\bLadePakete{java,vollstaendige-induktion}

\begin{document}
\bAufgabenMetadaten{
  Titel = {Aufgabe 4},
  Thematik = {Methode „sumOfSquares()“},
  Referenz = 66115-2017-F.T1-A4,
  RelativerPfad = Examen/66115/2017/03/Thema-1/Aufgabe-4.tex,
  ZitatSchluessel = sosy:ab:8,
  ZitatBeschreibung = {Aufgabe 4},
  BearbeitungsStand = mit Lösung,
  Korrektheit = korrekt und überprüft,
  Ueberprueft = {Mit Dozentenlösung abgeglichen},
  Stichwoerter = {Vollständige Induktion},
  EinzelpruefungsNr = 66115,
  Jahr = 2017,
  Monat = 03,
  ThemaNr = 1,
  AufgabeNr = 4,
}

\let\m=\bInduktionMarkierung
\let\e=\bInduktionErklaerung

Sie\index{Vollständige Induktion} \footcite[Aufgabe 4]{sosy:ab:8} dürfen im
Folgenden davon ausgehen, dass keinerlei Under- oder Overflows
auftreten.
\footcite{examen:66115:2017:03}

\bigskip

\noindent
Gegeben sei folgende rekursive Methode für $n \geq 0$:

\begin{bJavaAngabe}
long sumOfSquares (long n) {
  if (n == 0)
    return 0;
  else
    return n * n + sumOfSquares(n - 1);
}
\end{bJavaAngabe}

\begin{enumerate}

%%
% (a)
%%

\item Beweisen Sie formal mittels vollständiger Induktion:

\begin{displaymath}
\forall n \in \mathbb{N} : \texttt{sumOfSquares(n)} =
\frac{n(n + 1)(2n + 1)}{6}
\end{displaymath}

\begin{bAntwort}
Sei $f(n): \frac{n(n + 1)(2n + 1)}{6}$

%%
%
%%

\bInduktionAnfang

Für $n = 0$ gilt:

$\texttt{sumOfSquares(0)} \overset{\texttt{if}}{=} 0 = f(0)$

%%
%
%%

\bInduktionVoraussetzung

Für ein festes $n \in \mathbb{N}$ gelte:

$\texttt{sumOfSquares(n)} = f(n)$

%%
%
%%

\bInduktionSchritt

$n \rightarrow n + 1$

\begin{align*}
f(n + 1)
& = \texttt{sumOfSquares(n+1)}
& \e{Java-Methode eingesetzt}\\
%
& \overset{\texttt{else}}{=} \texttt{(n+1)*(n+1) + sumOfSquares(n)}
& \e{Java-Code der else-Verzweigung verwendet}\\
%
& \overset{\texttt{I.H.}}{=} (n + 1) (n + 1) + f(n)
& \e{mathematisch notiert}\\
%
& = (n + 1) (n + 1) + \m{\frac{n(n + 1)(2n + 1)}{6}}
& \e{Formel eingesetzt}\\
%
& = \m{(n + 1)^2} + \frac{n(n + 1)(2n + 1)}{6}
& \e{potenziert}\\
%
& = \frac{\m{6}(n + 1)^2}{\m{6}} + \frac{n(n + 1)(2n + 1)}{6}
& \e{$(n + 1)^2$ in Bruch umgewandelt}\\
%
& = \frac{6(n + 1)^2 + n(n + 1)(2n + 1)}{\m{6}}
& \e{Addition gleichnamiger Brüche}\\
%
& = \frac{\m{(n + 1)} 6 (n + 1) + \m{(n + 1)}n(2n + 1)}{\m{6}}
& \e{$n + 1$ ausklammern vorbereitet}\\
%
%
& = \frac{\m{(n + 1)(}6(n + 1) + n(2n + 1)\m{)}}{6}
& \e{$n + 1$ ausgeklammert}\\
%
& = \frac{(n + 1)(\m{6n + 6 + 2n^2 + n}))}{6}
& \e{Klammern ausmultipliziert / aufgelöst}\\
%
& = \frac{(n + 1)(2n^2 + \m{7n} + 6)}{6}
& \e{umsortiert, addiert $6n + n = 7n$}\\
%
& = \frac{(n + 1)(2n^2 + \m{3n + 4n} + 6)}{6}
& \e{Ausklammern vorbereitet}\\
%
& = \frac{(n + 1)\m{(n + 2)} (2n + 3)}{6}
& \e{$(n + 2)$ ausgeklammert}\\
%
& = \frac{\m{(n + 1)}(\m{(n + 1)} + 1) (2\m{(n + 1)} + 1))}{6}
& \e{$(n + 1)$ verdeutlicht}\\
\end{align*}
\bFussnoteUrl{https://mathcs.org/analysis/reals/infinity/answers/sm_sq_cb.html}
\end{bAntwort}

%%
% (b)
%%

\item Beweisen Sie die Terminierung von \bJavaCode{sumOfSquares(n)} für alle
$n \geq 0$.

\begin{bAntwort}
Sei $T (n) = n$. Die Funktion $T (n)$ ist offenbar ganzzahlig. In jedem
Rekursionsschritt wird $n$ um eins verringert, somit ist $T (n)$ streng
monoton fallend. Durch die Abbruchbedingung \bJavaCode{n==0} ist $T (n)$
insbesondere nach unten beschränkt. Somit ist $T$ eine gültige
Terminierungsfunktion.
\end{bAntwort}

\end{enumerate}
\end{document}
