MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.

________________________________________________________________________________

 

Inhalt....: Eine Prozedur für Tilgungspläne

Kategorie.: Unterrichtsmaterial

Mathematik: Programmierung, Analysis

MuPAD.....: 3.1.0

Datum.....: 2006-10-24

Autoren...: August Barkhausen <abarkhausen@gmx.de>

Funktionen: ceil, float, matrix, print, for, round, proc, local, if

________________________________________________________________________________

 

Eine Prozedur für Tilgungspläne. 

 

In der Finanzmathematik (Zinseszins, degressive Abschreibung, Rentenrechung und Annuitäten-

tilgung) geht es unter anderem um Anwendungen geometrischer Folgen und Reihen. 

Im folgenden wird eine Prozedur zur Aufstellung eines Tilgungsplans für ein Annuitätendarlehen

definiert und auf einige Standardprobleme angewandt. Letztlich handelt es sich auch um

Probleme, die sich typischerweise mit einer Tabellenkalkulation darstellen lassen. In MuPAD

muss die Funktionalität einer Tabellenkalkulation simuliert werden. In der Prozedur wird diese

Möglichkeit exemplarisch dargestellt.

 

Für die tabellarische Darstellung der Ergebnisse bietet sich die Nutzung von Matrizen als

Speichermedium an, da hier sowohl eine tabellarische Ausgabe als auch eine Wiederver-

wendung der Daten für andere Zwecke möglich ist.

 

Grundkenntnisse über Matrizen sind insofern vorteilhaft, jedoch nicht notwendig, da keinerlei

Rechnungen mit den Matrizen verbunden sind. Ist der Begriff der Matrix nicht geläufig, kann

man Matrizen als die Realisation von Tabellen in MuPAD ansehen. Aus diesem Grund beginnt

das Notebook zunächst mit einer Kurzeinführung in den Umgang mit Matrizen, soweit wie dies

für die Zwecke des Notebooks sinnvoll ist. Wenn man sich nur für die Ergebnisse des

Algorithmus interessiert, kann diese Kurzeinführung übersprungen werden.

 

Grundsätzlich stellt sich die Frage nach dem Sinn des Einsatzes eines CAS für ein konkretes

Problem. Durch die Arbeit mit diesem Notebook können beispielsweise folgende Aspekte

berücksichtigt werden:

 

- Es kann mit verschiedenen Grundannahmen experimentiert werden.

_Auf diese Weise kann ein höherer Realitätsbezug erreicht werden.

_Im übrigen ist das Notebook so auch für private Zwecke nutzbar.

 

- Die Prozedur Tilgungsplan ist um eine Vielzahl von Optionen er-

_weiterbar. Insofern stellt das Notebook ein Bindeglied zwischen

_einer anwendungsorientierten Mathematik und Aspekten der

_Informationsverarbeitung dar.

 

- Die Prozedur Prototyp kann aus dem  Notebook extrahiert werden

_und ebenfalls als Grundlage von Aufgaben zur Erweiterungen der 

_Funktionalität dienen. 

 

- Da in der derzeitigen MuPAD Version keine vollgültige Tabellen-

_kalkulation bereitgestellt wird, wird exemplarisch gezeigt, wie

_Tabellen in MuPAD durch Matrizen simuliert werden können.

 

 

Benötigte Grundlagen zu Matrizen

 

Eine Matrix ist ein rechteckiges Schema aus Zeilen und Spalten. In MuPAD wird eine

Matrix aus zwei Spalten und drei Zeilen wie folgt definiert: 

 

A:=matrix(2,3)

math

Die Elemente der Matrix sind zunächst mit Nullen vorinitalisiert und können wie folgt

überschrieben werden:

 

A:=matrix([[1,2,3],[4,5,6]])

math

Natürlich kann die Matrix A auch direkt wie vorstehend definiert werden. Für die Zwecke

dieses Notebooks ist es erforderlich, Elemente einzeln ein- und auszulesen. Im folgenden

wird das zweite Element der ersten Zeile und zweiten Spalte ausgelesen:

 

A[1,2]

math

Analog lassen sich das Elemente überschreiben. Der Doppelpunkt verhindert die Ausgabe.

 

A[1,2]:=neu:

A[2,3]:=alt:

 

Nun wird die überschriebene Matrix ausgegeben. Offensichtlich ist auch Text darstellbar.

 

A

math

Teilmatrizen können wie folgt ausgelesen werden. Im konkreten Fall werden die ersten zwei

Zeilen und die zweite und dritte Spalte ausgelesen.

 

A[1..2,2..3]

math

Der benutzte Algorithmus

 

Im folgenden wird von folgenden Voraussetzungen ausgegangen:

- Zinsen und Tildung werden jährlich nachschüssig (zum Jahresende) erhoben.

- Die Annuität ist bis auf die Schlussrate jährlich gleichbleibend.

 

Es werden folgende Begriffe und Variablennamen benutzt:

Zi:    Zinsen am Ende des Jahres i

Ti:    Tilgung am Ende des Jahres i

A:     Annuität, es ist A = Zi + Ti

K:     Darlehensbetrag

p:     Prozentzahl

q:     Aufzinsfaktor: q=(1+p/100)

n:     Gesamtlaufzeit in Jahren

RSi: Restschuld nach i, Anfang des (i+1)ten Jahres

 

Für ein Darlehen, das in n Jahren vollständig zurückgezahlt wird, lässt sich der Kreditbetrag

sich wie folgt berechnen:

image

Letztlich handelt es sich um eine endliche geometrische Reihe. Für die Annuität gilt in diesem

Fall:

image

In manuellen Rechnungen wird häufig die Restschuld nach i Jahren bzw. zu Beginn des

(i+1)-ten Jahres mit einer kompakten Formel unter Umgehung eines Tilgungsplans

berechnet:

image

Anschaulich: Die Restschuld ist die Differenz des Kreditbetrages und der Summe aller

bisherigen Tilgungsbeträge.

 

Definition der Prozedur Prototyp

 

Die Prozedur Prototyp wird definiert. In dieser Prozedur werden bzw. wird:

- die Berechnungen iterativ durchgeführt, um die Basisfunktionalität zu testen.

- die Daten in die Ausgabe geschrieben.

- die Ausgabe ausgelesen und die Ergebnisse für weitere Berechnungen verwendet.

 

Prototyp := proc( Kredit, Prozentzahl, Annuitaet ,Laufzeit)  

local  k,n, Ausgabe, Anz_Zeilen;

save Jahre, Restschuld, Zinsen, Tilgung, Gesamtzahlung;

begin

  n := Laufzeit:                          // hier noch Anzahl der Iterationen                   

  k := 2:                                 // Laufvariable initialisiert

  Ausgabe:=      matrix(Laufzeit+1,5); //Die Matrix wird definiert.

  Ausgabe[1,1]:= Jahre:                 //Die Kopfzeile wird definiert. 

  Ausgabe[1,2]:= Restschuld:

  Ausgabe[1,3]:= Zinsen:

  Ausgabe[1,4]:= Tilgung:

  Ausgabe[1,5]:= Gesamtzahlung:

  

 

  Ausgabe[2,1]:= 1:                    // Die zweite Zeile mit den Startwerten

  Ausgabe[2,2]:= float(Kredit):        // wird beschrieben.

  Ausgabe[2,3]:= float(Kredit*Prozentzahl/100):

  Ausgabe[2,4]:= float(Annuitaet-Ausgabe[2,3]):

  Ausgabe[2,5]:= float(Annuitaet):

   

  k:=2:                               // Durchführung der Iterationen

  Anz_Zeilen:=2:

  for k from 2 to n do   

    Ausgabe[k+1,1]:= k:

    Ausgabe[k+1,2]:= float(Ausgabe[k,2]-Ausgabe[k,4]):

    Ausgabe[k+1,3]:= float(Ausgabe[k+1,2]*Prozentzahl/100):

    Ausgabe[k+1,4]:= float(Ausgabe[k,5]-Ausgabe[k+1,3]):

    Ausgabe[k+1,4]:= float(Ausgabe[k,5]-Ausgabe[k+1,3]):

    Ausgabe[k+1,5]:= float(Ausgabe[k,5]):

  end_for;

  Ausgabe;

end_proc: 

 

Test der Prozedur Prototyp

 

Prototyp(1000,5,400,5)

math

Durch Vergleich mit manuellen Berechnungen stellt man fest, das die Basisfunktionalität

korrekt implementiert ist. Offensichtlich ist der Kredit am Ende des dritten Jahres getilgt.

Allerdings wird der Tilgungsplan weitergeführt, auch wenn der Kredit getilgt ist. Darüber

hinaus wird im dritten Jahr mehr getilgt, als die Restschuld beträgt. Die Funktionalität der

Prozedur muss daher erweitert werden. 

Pflichtenheft für die erweiterte Prozedur Tilgungsplan. 

 

Anforderungen an die Prozedur Tilgungsplan aufgrund der Testergebnisse:

1) Es sollen bei allen Ergebnissen, die Währungen beschreiben, nach Möglichkeit zwei

    Nachkommastellen ausgegeben werden.

2) Die Prozedur soll eine Ausgabe des Tilgungsplans bei vorgegebenem Zinssatz,

    vorgegebener Kreditsumme ermöglichen. Es sollen dabei zwei Variaten berücksichtigt

    werden:

    a) vorgegebene Gesamtlaufzeit

    b) vorgegebene prozentuale Anfangstilgung

2) Die Ausgabe des Tilgungplans soll abgebrochen werden, wenn der Kredit getilgt ist.

3) Der Tilgungsplan soll die Zahlungen des letzten Jahres korrekt verarbeiten.

4) Der Tilgungsplan soll vorzeitig abgebrochen werden können.

5) Es sollen nach vollständiger Rückzahlung des Darlehens ausgegeben werden:

    Gesamtzahlung und Gesamtzinsen.

6) Es sollen bei vorzeitigem Abbruch des Tilgungsplans ausgegeben werden: Die bisherige

    Gesamtzahlung, Gesamttilgung und Gesamtzinsen sowie die Restschuld.

7) Die Prozedur soll grobe Fehleingaben abfangen.

 

Definition von Konstanten für die Programmsteuerung der Prozeduren

 

Nach diesen einleitenden Bemerkungen werden im folgenden einige Konstanten für den

weiteren Gebrauch initialisiert. Diese Daten werden im Verlauf des Notebooks jeweils

für die Zwecke der jeweiligen Probleme überschrieben. Es ist daher bei Änderungen

in Prozeduraufrufen jeweils erforderlich, alle Eingaben des Notebooks zu evaluieren. 

 

Kredit      := 1000:  // Darlehensbetrag

Prozentzahl := 10:

Annuitaet   := 263.70:

Laufzeit    := 35:

 

Die Implementierung der Teilfunktion Rundung

 

Währungen erfordern die Ausgabe der Ergebnisse mit zwei Nachkommastellen.

Da MuPAD keine Funktion für eine feste Anzahl von Nachkommastellen besitzt, muss

man sich behelfen. Man multipliziert die gewünschte Zahl mit 10 hoch Anzahl der

Nachkommastellen, rundet und dividiert dann wieder durch 10 hoch Anzahl der

Nachkommastellen. Dies wird durch die Funktion runde geleistet. Diese wird nun

definiert und ihre Funktionalität an einem Beispiel demonstriert.

 

runde:= (x,Stellen) -> float(round(float(x)*10^Stellen)*10^(-Stellen)):

 

Nun wird auf zwei Nachkommastellen gerundet.

 

runde(10000/3,2)

math

Ein neuer Versuch mit der Zahl 1,5

 

runde(3/2,2)

math

Offensichtlich ist es möglich auf zwei Nachkommastellen genau zu runden. Treten

jedoch als letzte Ziffern Nullen hinter dem Komma auf, werden diese nicht mit aus-

gegeben. Bis MuPAD in einer neueren Version die entsprechende Funktionalität für

die Ausgabe von einer fest vorgegebenen Anzahl von Nachkommastellen zur Ver-

fügung stellt, muss man sich mit diesem Kompromiss behelfen.

 

Eine Rundung in der Prozedur Tilgungsplan auf zwei Weisen implementierbar:

1) Man rundet bei jedem Iterationsschritt mit der Funktion runde.

2) Man führt die Iterationen ohne Rundung durch und rundet nur die Ausgaben.

 

In diesem Notebook wird entsprechend Version 1 gerundet, da die Zahlungen des

Kunden jährlich durchgeführt werden. Diese Rundungen sind plausibel, entsprechen

jedoch unter Umständen nicht in allen Details den rechtlichen Vorschriften. Für

Informationen über die rechtlichen Details muss auf die Vorschriften der Banken

verwiesen werden.

 

Definition der Prozeduren

Die Prozedur Tilgungsplan und die Hilfsprozeduren Annuitaet1, Annuitaet2,

Gesamtdauer und Restschulden werden definiert.

 

Definition der Prozedur Annuitaet1

 

In der Prozedur Annuitaet1 wird die Annuität bei vorgegebener Darlehenssumme,

vorgegebener Laufzeit und vorgegebenem Zinssatz entsprechend der oben ange-

gebenen Formel berechnet.

 

Annuitaet1 := proc( Kredit, Laufzeit, Prozentzahl)  

local  n,q,p,K,Annuitaet;

begin

   n:= Laufzeit:

   p:= Prozentzahl:

   q:= 1+p/100:

   K:= Kredit:

   Annuitaet:= K*q^n*(q-1)/(q^n-1):

   runde(Annuitaet,2);

end_proc:

 

Test der Prozedur: Das Ergebnis entspricht dem Ergebnis einer manuellen Be-

rechnung und ist insofern richtig.

 

Annuitaet1(1000,3,5)

math

Definition der Prozedur Annuitaet2

 

In der Prozedur Annuitaet2 wird die Annuität bei vorgegebener Anfangstilgung

in Prozent der Darlehenssumme, vorgegebenem Zinssatz und vorgegebener Dar-

lehenssumme berechnet.

 

Annuitaet2 := proc( Kredit, Anfangstilgung, Prozentzahl)  

local  T1,Z1,p,K,Annuitaet;

begin

   K:=  Kredit:

   p:=  Prozentzahl:

   T1:= Anfangstilgung*K/100:

   Z1:= p*K/100:

   Annuitaet:= Z1+T1:  

   Annuitaet:=runde(Annuitaet,2);

end_proc:

 

Test der Prozedur: Das Ergebnis ist richtig.

 

runde(Annuitaet2(1000,1,5),2)

math

Definition der Prozedur Gesamtdauer

 

Die Prozedur Gesamtdauer berechnet die maximale Laufzeit des Kredites bei vor-

gegebener Darlehenssumme, Annuitaet und Zinssatz. Da im letzten Jahr unter Um-

ständen noch eine Schlussrate fällig ist, die niedriger als die Annuität ist, ergeben

sich bei der Berechnung der Gesamtlaufzeit in der Regel keine natürlichen Zahlen.

Um die Schlussrate korrekt berücksichtigen zu können, muss der Wert der Ge-

samtlaufzeit auf die nächsthöhere natürliche Zahl aufgerundet werden.

 

Gesamtdauer := proc( Kredit, Annuitaet, Prozentzahl)  

local  p,q,A,K,T1;

begin

   K:= Kredit:

   p:= Prozentzahl:

   A:= Annuitaet:

   q:= 1+p/100:   

   Gesamtlaufzeit:= numeric::solve(K*q^n*(q-1)/(q^n-1)=A, n):

   Gesamtlaufzeit:= ceil(Gesamtlaufzeit):         

                    // nächsthöhere natürliche Zahl wegen der Schlussrate

   Gesamtlaufzeit:= Gesamtlaufzeit[1];   

                    // Auslesen aus der Lösungsmenge         

end_proc:

 

Die Gesamtdauer kann wie folgt ausgelesen werden. Eine Rundung ist nicht erforderlich,

da das Ergebnis für die Zwecke des Tilgungsplans auf den nächsthöhere natürliche Zahl

gerundet wurde.

 

Gesamtdauer(1000,100,5)

math

Definition der Prozedur Restschulden

 

Die Prozedur Restschulden berechnet entsprechend der oben angegebenen Formel die

Restschuld nach einer vorgegebenen Anzahl von Jahren. Wenn die gewünschte Laufzeit

größer als die tatsächliche Laufzeit ist, wird eine Fehlermeldung ausgegeben. Die

Prozedur wurde in erster Linie für Testzwecke implementiert und kann zur Ermittlung von

Rundungsfehlern herangezogen werden.

 

Restschulden := proc( Kredit, Annuitaet, Prozentzahl, Laufzeit)  

local  p,q,n,nmax,A,K,T1;

begin

   K:=  Kredit:                            //Umkopieren von Variablen

   p:=  Prozentzahl:                       //wegen leichterer

   A:=  Annuitaet:                         //Vergleichbarkeit mit den

   q:=  1+p/100:                           //Formeln

   T1:= A-K*p/100:

   n:=  Laufzeit:                          //eingegebene Laufzeit

                                        

   nmax:= Gesamtdauer(K,A,p):              //theoretische Gesamtlaufzeit

   if nmax <=n                             //Plausibilitätscheck

   then

     print(Unquoted,"Die eingegebene Laufzeit ist länger oder so groß");

     print(Unquoted,"wie die theoretische Gesamtlaufzeit");

     return();

   end_if:

                                         // Ausgabe

   Restschuld:=runde(K-T1*(q^n-1)/(q-1),2):         

   print(Unquoted,"nach ".expr2text(Laufzeit)."Jahren"); 

   print(Unquoted,"bzw. zu Beginn des ".expr2text(Laufzeit+1)."ten Jahres");

   print(Unquoted,"betraegt die Restschuld ".expr2text(Restschuld)." €"); 

end_proc:

 

 

Definition der Prozedur Tilgungsplan

 

Für die Prozedur Tilgungsplan wurde die Prozedur Prototyp um die im Pflichtenheft

angegebenen Aufgaben erweitert. 

 

Tilgungsplan := proc( Kredit, Prozentzahl, Annuitaet ,Laufzeit)  

  local  k, n, p, K, Ausgabe, vorzeitig, Sonderfall;

  save   Jahre, Restschuld, Zinsen, Tilgung, Gesamtzahlung;

begin

  p:= Prozentzahl:                  //Umkopieren wegen leichterer

  K:= Kredit:                       //Vergleichbarkeit mit Formeln

  Gesamtzeit:= Gesamtdauer(Kredit,Annuitaet,Prozentzahl):  

  Sonderfall:= FALSE:

  vorzeitig:=  FALSE:

  if Gesamtzeit > Laufzeit then vorzeitig := TRUE: end_if:

 

  // Sonderfall: Die gewünschte Laufzeit ist um ein Jahr geringer

  //             als die theoretische Gesamtlaufzeit.

 

  if Gesamtlaufzeit = Laufzeit+1 then

    Laufzeit:=   Laufzeit:

    Sonderfall:= TRUE:

  end_if: 

 

  n := min(Laufzeit,Gesamtzeit):

  k := 2:     // Anzahl der Iterationen Laufvariable initialisiert

 

if Prozentzahl <= 0 or Prozentzahl > 20 then // Ausschluss unerlaubter Prozente 

   print(Unquoted,"Es sind Prozentsätze zwischen 0 und 20 % erlaubt. ");

   print(Unquoted,"Ändern Sie den Prozentsatz.");

   return():

end_if:

                                

if Kredit <= 0 then  // Ausschluss unsinniger Kreditbeträge                       

   print(Unquoted,"Sie haben keinen Kredit aufgenommen. ");

   print(Unquoted,"Geben Sie einen Kreditbetrag ein.");

   return():

end_if:

                           // Man sollte vor Rentenbeginn abgezahlt haben.

if n > 45                 // Bei 1 % Anfangstilgung etwas über 30 Jahre

then

   print(Unquoted,"Sie sollten eine größere Annuitaet wählen. ");

   print(Unquoted,"Die Kreditlaufzeit kann maximal 45 Jahre betragen.");

   return():

end_if:

if Annuitaet > Kredit          // Kreditbedingungen so nicht sinnvoll

then

   print(Unquoted,"Die Annuitaet ist größer als der Darlehensbetrag. ");

   print(Unquoted,"Sie sollten Ihre Kreditbedingungen überprüfen.");

   return():

end_if:

 

Ausgabe:=      matrix(n+2,5);        //Die Matrix wird definiert.

Ausgabe[1,1]:= Jahre:           //Die Kopfzeile wird definiert. 

Ausgabe[1,2]:= Restschuld:

Ausgabe[1,3]:= Zinsen:

Ausgabe[1,4]:= Tilgung:

Ausgabe[1,5]:= Gesamtrate:

// Die zweite Zeile mit den Startwerten wird beschrieben.

Ausgabe[2,1]:= 1:       

Ausgabe[2,2]:= runde(Kredit,2):   

Ausgabe[2,3]:= runde(Kredit*Prozentzahl/100,2):

Ausgabe[2,4]:= runde(Annuitaet-Ausgabe[2,3],2):

Ausgabe[2,5]:= runde(Annuitaet,2):

   

Anz_Zeilen:= 2:

for k from 2 to n+1 do  

   if k < n+1

   then

     Ausgabe[k+1,1]:= k:

     Ausgabe[k+1,2]:= runde(Ausgabe[k,2]-Ausgabe[k,4],2):

     Ausgabe[k+1,3]:= runde(Ausgabe[k+1,2]*Prozentzahl/100,2):

     Ausgabe[k+1,4]:= runde(Ausgabe[k,5]-Ausgabe[k+1,3],2):

     Ausgabe[k+1,5]:= runde(Ausgabe[k,5],2):

   else

     Ausgabe[k+1,1]:= k:

     Ausgabe[k+1,2]:= runde(Ausgabe[k,2]-Ausgabe[k,4],2):

     if Ausgabe[k+1,2] < 0 then

       Ausgabe[k+1,2]:=0:

     end_if:  

   end_if:

 

   // Korrektur der letzen Zeile bei zu hoher Annuitaet

   if Ausgabe[k,5]-Ausgabe[k+1,2]*Prozentzahl/100 > Ausgabe[k+1,2] then

     Ausgabe[k+1,3]:=runde(Ausgabe[k+1,2]*Prozentzahl/100,2):

     Ausgabe[k+1,4]:=runde(Ausgabe[k+1,2],2):

     Ausgabe[k+1,5]:=runde(Ausgabe[k+1,2]+Ausgabe[k+1,3],2):

   end_if: 

end_for;

 

// Sonderfallbehandlung für die letzte Zeile: Ohne die Korrektur

// werden in der letzten Zeile unnötige Tilgungen und Zinsen

// ausgegeben.

if Sonderfall = TRUE then

   Ausgabe[n+1,2]:= runde(Ausgabe[n,2]-Ausgabe[n,4],2):

   Ausgabe[n+2,3]:= 0:

   Ausgabe[n+2,4]:= 0:

   Ausgabe[n+2,5]:= 0:

end_if:

    

// Berechnung der Gesamtsummen

Gesamtzins:=    Ausgabe[2,3]:

Gesamttilgung:= Ausgabe[2,4]:

Gesamtzahlung:= Ausgabe[2,5]:

 

for k from 3 to n+1 do  

   Gesamtzins:=    runde(Gesamtzins+Ausgabe[k,3],2):

   Gesamttilgung:= runde(Gesamttilgung+Ausgabe[k,4],2):

   Gesamtzahlung:= runde(Gesamtzahlung+Ausgabe[k,5],2): 

end_for;

 

//Ausgabe der Gesamtsummen

print(Unquoted,"Die Kreditsumme betraegt: ".expr2text(K)." €");

print(Unquoted,"Der Zinssatz betraegt: ".expr2text(p)."%");

print(Unquoted,"Die Gesamtzinsen betragen: ".expr2text(Gesamtzins)." €");

print(Unquoted,"Die Gesamttilgung beträgt: ".expr2text(Gesamttilgung)." €");

print(Unquoted,"Die Gesamtzahlung beträgt: ".expr2text(Gesamtzahlung)." €");

print(Unquoted,"");

print(Unquoted,"Die Laufzeit beträgt: ".expr2text(n)." Jahre");

print(Unquoted,"");

if vorzeitig = TRUE then

   print(Unquoted,"bei vorzeitigem Abbruch");

else

   print(Unquoted,"bei vollständiger Rückzahlung");

end_if:

print(Unquoted,"Nun folgt der Tilgungsplan");

print(Unquoted,"");

Ausgabe;

end_proc:

 

Test der Prozeduren

Nun werden einige Tests der Prozeduren durchgeführt. Für Testzwecke werden die

Laufzeiten so kurz gewählt, dass Kontrollen durch manuelle Rechnungen möglich sind.

Zu Beginn werden einige Konstanten definiert.

 

Kredit      := 1000:  // Darlehensbetrag

Prozentzahl := 5:

Laufzeit    := 40:

 

1. Fall: Der Kredit wird vollständig zurückgezahlt.

 

Für die Laufzeit (vierter Parameter) ist in der Prozedur Tilgungsplan ein Wert auszu-

geben, der größer ist als die tatsächliche Laufzeit des Kredites ist. Es bietet sich hier

der hohe Wert 40 an. Zunächst wird die Annuitaet bestimmt. Bei einer Laufzeit von

3 Jahren soll der Kredit vollständig zurückgezahlt werden. Dazu wird mit der Prozedur

Annuitaet1 die Annuitaet berechnet und dann in der Prozedur Tilgungsplan benutzt.  

 

Annuitaet:= runde(Annuitaet1( Kredit, 3, Prozentzahl),2)

math

Tilgungsplan (Kredit,Prozentzahl, Annuitaet,40)

Die Kreditsumme betraegt: 1000 €

Der Zinssatz betraegt: 5%

Die Gesamtzinsen betragen: 101.63 €

Die Gesamttilgung beträgt: 1000.0 €

Die Gesamtzahlung beträgt: 1101.63 €

Die Laufzeit beträgt: 3 Jahre

bei vollständiger Rückzahlung

Nun folgt der Tilgungsplan

math

Es wird ein kurzer Test der Prozedur Restschuld durchgeführt.

 

Restschulden(Kredit,Annuitaet,Prozentzahl,2)

nach 2Jahren

bzw. zu Beginn des 3ten Jahres

betraegt die Restschuld 349.72 €

 

Manuelle Rechnungen bestätigen die Richtigkeit der Ergebnisse. Da in der letzten Zeile

Nullen stehen, ist erkennbar, dass der Kredit zurückgezahlt ist. Die Richtigkeit der Er-

gebnisse wird auch durch die Konsistenz der Ergebnisse der Prozeduren Tilgungsplan

und Restschuld sichergestellt, da beide unabhängig voneinander programmiert sind.

 

2. Fall: Die eingegebene Laufzeit ist kürzer als die theoretische Gesamtlaufzeit.

 

Tilgungsplan (Kredit,Prozentzahl, Annuitaet,1)

Die Kreditsumme betraegt: 1000 €

Der Zinssatz betraegt: 5%

Die Gesamtzinsen betragen: 50.0 €

Die Gesamttilgung beträgt: 317.21 €

Die Gesamtzahlung beträgt: 367.21 €

Die Laufzeit beträgt: 1 Jahre

bei vorzeitigem Abbruch

Nun folgt der Tilgungsplan

math

Auch hier bestätigen manuelle Rechnungen bzw. ein Vergleich mit den Ergebnissen des

ersten Testfalls die Ergebnisse des Tilgungsplans.

 

3. Fall: Die eingegebene Laufzeit entspricht der theoretischen Gesamtlaufzeit.

 

Tilgungsplan (Kredit,Prozentzahl, Annuitaet,3)

Die Kreditsumme betraegt: 1000 €

Der Zinssatz betraegt: 5%

Die Gesamtzinsen betragen: 101.63 €

Die Gesamttilgung beträgt: 1000.0 €

Die Gesamtzahlung beträgt: 1101.63 €

Die Laufzeit beträgt: 3 Jahre

bei vollständiger Rückzahlung

Nun folgt der Tilgungsplan

math

Auch hier bestätigen manuelle Rechnungen die Ergebnisse.

 

4. Fall: Die vorgegebene Laufzeit ist um ein Jahr geringer als die theoretische Gesamt-

laufzeit. Bei der derzeitigen Implementierung war für die Ausgabe in der letzten Zeile

des Tilgungsplans eine Sonderfallbehandlung nötig, die in der Prozedur Tilgungsplan

entsprechend gekennzeichnet ist.  

 

Tilgungsplan (Kredit,Prozentzahl, Annuitaet,2)

Die Kreditsumme betraegt: 1000 €

Der Zinssatz betraegt: 5%

Die Gesamtzinsen betragen: 84.14 €

Die Gesamttilgung beträgt: 650.28 €

Die Gesamtzahlung beträgt: 734.42 €

Die Laufzeit beträgt: 2 Jahre

bei vorzeitigem Abbruch

Nun folgt der Tilgungsplan

math

Anwendungen der Prozeduren auf konkrete Probleme

Für die folgenden Anwendungen werden einige Konstanten definiert, die im weiteren

Verlauf benutzt und teilweise überschrieben werden. 

 

Kredit         := 100000:  // Darlehensbetrag

Prozentzahl    :=      5:

Laufzeit       :=     39:

Anfangstilgung :=      1:

 

1. Problem

Ein Kredit über 100 000,00 € soll in 10 Jahren komplett getilgt werden. Die Annuität

wird mit Hilfe der Prozedur Annuität1 berechnet. 

 

Annuitaet:=Annuitaet1(Kredit, 10,Prozentzahl)

math

Nun wird die Prozedur Tilgungsplan aufgerufen. Für die Laufzeit wird die maximal

mögliche Laufzeit angenommen. Die Prozedur Tilgungsplan berechnet automatisch

die richtige Laufzeit von 10 Jahren mit Hilfe der Prozedur Laufzeit.

 

Tilgungsplan (Kredit,Prozentzahl, Annuitaet,Laufzeit)

Die Kreditsumme betraegt: 100000 €

Der Zinssatz betraegt: 5%

Die Gesamtzinsen betragen: 29504.57 €

Die Gesamttilgung beträgt: 100000.0 €

Die Gesamtzahlung beträgt: 129504.57 €

Die Laufzeit beträgt: 10 Jahre

bei vollständiger Rückzahlung

Nun folgt der Tilgungsplan

math

Offensichtlich ist die gesamte Zinslast einigermaßen niedrig. Die jährliche Belastung ist

allerdings recht hoch.

 

2. Problem

Ein Kredit über 100 000,00 € soll bei 1 % Anfangstilgung komplett getilgt werden. Die

Annuität wird mit Hilfe der Prozedur Annuitaet2 berechnet.

 

Kredit         := 100000:  // Darlehensbetrag

Prozentzahl    :=      7:

Laufzeit       :=     40:

Anfangstilgung :=      1:

 

Annuitaet:= Annuitaet2( Kredit, Anfangstilgung, Prozentzahl) 

math

Nun wird die Prozedur Tilgungsplan aufgerufen. Für die Laufzeit wird die maximal

mögliche Laufzeit angenommen. Die Prozedur Tilgungsplan berechnet automatisch

die richtige Laufzeit von 10 Jahren mit Hilfe der Prozedur Laufzeit.

 

Tilgungsplan (Kredit,Prozentzahl, Annuitaet,Laufzeit)

Die Kreditsumme betraegt: 100000 €

Der Zinssatz betraegt: 7%

Die Gesamtzinsen betragen: 145927.03 €

Die Gesamttilgung beträgt: 100000.0 €

Die Gesamtzahlung beträgt: 245927.03 €

Die Laufzeit beträgt: 31 Jahre

bei vollständiger Rückzahlung

Nun folgt der Tilgungsplan

math

Zum Vergleich wird die Restschuld nach 30 Jahren bzw. zu Beginn des 31. Jahres

berechnet.

 

Restschulden(Kredit,Annuitaet,Prozentzahl,30)

 

nach 30Jahren

bzw. zu Beginn des 31ten Jahres

betraegt die Restschuld 5539.21 €

 

Die Rundungsdifferenz bei der Restschuld nach 30 Jahren beträgt hier 0,07 € und ist

im Vergleich zur Gesamtsumme gering, jedoch möglicherweise aus juristischen Gründen

relevant.

 

3. Problem

Ein Kredit über 100 000,00 € soll bei 2 % Anfangstilgung komplett getilgt werden. Die

Annuität wird mit Hilfe der Prozedur Annuitaet2 berechnet. Die Ausgabe kann durch

einen Doppelpunkt unterdrückt werden.

 

Kredit         := 100000:  // Darlehensbetrag

Prozentzahl    :=      7:

Laufzeit       :=     39:

Anfangstilgung :=      2:

 

Annuitaet:= Annuitaet2( Kredit, Anfangstilgung, Prozentzahl) 

math

Nun wird die Prozedur Tilgungsplan aufgerufen. Für die Laufzeit wird die maximal

mögliche Laufzeit angenommen. Die Prozedur Tilgungsplan berechnet automatisch

die richtige Laufzeit von 10 Jahren mit Hilfe der Prozedur Laufzeit.

 

Tilgungsplan(Kredit, Prozentzahl, Annuitaet, Laufzeit)

Die Kreditsumme betraegt: 100000 €

Der Zinssatz betraegt: 7%

Die Gesamtzinsen betragen: 100127.75 €

Die Gesamttilgung beträgt: 100000.0 €

Die Gesamtzahlung beträgt: 200127.75 €

Die Laufzeit beträgt: 23 Jahre

bei vollständiger Rückzahlung

Nun folgt der Tilgungsplan

math

4. Problem

Ein Kredit über 100 000,00 € soll bei 1 % Anfangstilgung komplett getilgt werden. Die

Annuität wird mit Hilfe der Prozedur Annuitaet2 berechnet. Die Ausgabe kann durch

einen Doppelpunkt unterdrückt werden. Der Zinssatz ist im Vergleich zu oben um 2 %

erhöht.

 

Kredit         := 100000:  // Darlehensbetrag

Prozentzahl    :=      9:

Laufzeit       :=     39:

Anfangstilgung :=      1:

 

Annuitaet:= Annuitaet2( Kredit, Anfangstilgung, Prozentzahl) 

math

Nun wird die Prozedur Tilgungsplan aufgerufen. Für die Laufzeit wird die maximal

mögliche Laufzeit angenommen. Die Prozedur Tilgungsplan berechnet automatisch

die richtige Laufzeit von 10 Jahren mit Hilfe der Prozedur Laufzeit.

 

Tilgungsplan (Kredit,Prozentzahl, Annuitaet,Laufzeit)

Die Kreditsumme betraegt: 100000 €

Der Zinssatz betraegt: 9%

Die Gesamtzinsen betragen: 167276.91 €

Die Gesamttilgung beträgt: 100000.0 €

Die Gesamtzahlung beträgt: 267276.91 €

Die Laufzeit beträgt: 27 Jahre

bei vollständiger Rückzahlung

Nun folgt der Tilgungsplan

math

Offensichtlich verkürzt sich die Gesamtlaufzeit im Vergleich im Vergleich zu Fall 2 bei

höherer Annuität und höherem Gesamtzins.

 

5. Problem

Ein Kredit über 100 000,00 € 5 Jahre lang bei 1 % Anfangstilgung und einem Zinssatz von

5 % teilrückgezahlt werden. Anschließend wird der Zinssatz auf 6 % heraufgesetzt und

der Kredit soll nun in 15 Jahren vollständig getilgt werden. Die Rückzahlung des Kredites

soll dokumentiert werden. 

 

a) 1. Zeitraum: 

Annuität wird mit Hilfe der Prozedur Annuitaet2 berechnet. Die Ausgabe kann durch

einen Doppelpunkt unterdrückt werden.

 

Kredit         := 100000:  // Darlehensbetrag

Prozentzahl    :=      5:

Laufzeit       :=     39:

Anfangstilgung :=      1:

 

Annuitaet:= Annuitaet2( Kredit, Anfangstilgung, Prozentzahl) 

math

Nun wird die Prozedur Tilgungsplan aufgerufen. Für die Laufzeit wird die maximal

mögliche Laufzeit angenommen. Die Prozedur Tilgungsplan berechnet automatisch

die richtige Laufzeit von 10 Jahren mit Hilfe der Prozedur Laufzeit.

 

Tilgungsplan(Kredit,Prozentzahl, Annuitaet,5)

Die Kreditsumme betraegt: 100000 €

Der Zinssatz betraegt: 5%

Die Gesamtzinsen betragen: 24474.37 €

Die Gesamttilgung beträgt: 5525.63 €

Die Gesamtzahlung beträgt: 30000.0 €

Die Laufzeit beträgt: 5 Jahre

bei vorzeitigem Abbruch

Nun folgt der Tilgungsplan

math

b) 2. Zeitraum

Die Annuität wird wird aus dem obigen Tilgungsplan abgelesen. Alternativ hätte

man die Restschuld auch ohne Ausgabe eines Tilgungsplan mit Hilfe der Prozedur

Restschulden berechnen können.

Kredit      := 94474.37:  // neuer Darlehensbetrag

Prozentzahl :=     6:

Laufzeit    :=    15:

 

Annuitaet:= Annuitaet1(Kredit, Laufzeit,Prozentzahl)

math

Nun wird die Prozedur Tilgungsplan erneut aufgerufen. 

 

Tilgungsplan(Kredit,Prozentzahl, Annuitaet,Laufzeit)

Die Kreditsumme betraegt: 94474.37 €

Der Zinssatz betraegt: 6%

Die Gesamtzinsen betragen: 51435.77 €

Die Gesamttilgung beträgt: 94474.33 €

Die Gesamtzahlung beträgt: 145910.1 €

Die Laufzeit beträgt: 15 Jahre

bei vorzeitigem Abbruch

Nun folgt der Tilgungsplan

math

Offensichtlich ergibt sich auch hier eine geringe Rundungsdifferenz bezogen auf die

ganze Laufzeit. Aus diesem Grund gibt die Prozedur Tilgungsplan das mathematisch

korrekte Ergebnis "vorzeitiger Abbruch" an, obwohl die Rundungsdifferenz aus

praktischer Sicht belanglos ist.

 

Bei der derzeitigen Implementierung des Notebooks ist es nicht möglich, die beiden

Tilgungspläne kompakt als als Einzeltilgungsplan darzustellen.

Die Beträge von Gesamtzinsen und Gesamtzahlung müssen mit Hilfe der Ergebnisse

der beiden Durchläufe der Prozedur Tilgungsplan manuell berechnet werden. Diese

Berechnungen werden hier nicht durchgeführt.

 

 

Bewertung der bisherigen Ergebnisse:

1) Bei gleichbleibender Anfangstilgung verkürzt sich die Laufzeit des Kredites, wenn

    der Zinssatz ansteigt. Andererseits wird dabei aber die Gesamtzahlung höher.

2) Bei gleichbleibendem Zinssatz verringern sich sowohl Gesamtlaufzeit als auch

    die Gesamtzahlung erheblich, wenn man die Anfangstilgung von 1 % auf 2 %  der

    Kreditsumme vergrößert oder noch größere Anfangstilgungen wählt. 

3) Die Gesamtzinsen vergrößern sich mit wachsender Laufzeit und können bei

    niedrigen Anfangstilgungen erheblich über dem Kreditbetrag liegen.

4) Das Darlehen ist erst zu einem sehr spätern Zeitpunkt bis zur Hälfte getilgt. Während

    der ersten Jahre erhöhen sich die Tilgungbeträge bei niedrigen Anfangstilgungen nur

    unwesentlich.

 

Einige Anregungen zur selbstständigen Weiterarbeit:

 

1. Teil: Verbesserungen der Prozedur:

a) Man sollte den Tilgungsplan auf nachschüssige monatliche (vierteljährliche) Tilgung

    und Verzinsung mit monatlicher (vierteljährlicher) Ausgabe der Daten umstellen.

    Die Wahl des Zeitraums sollte vom Benutzer in der Prozedursteuerung wählbar sein. 

b) Man sollte eine zweite Rundungsvariante implementieren und die Ergebnisse in

    verschiedenen Fällen mit den hier erzielten Ergebnissen vergleichen. Bei Benutzung

    der oben erwähnten Restschuldformel wird mit maximaler Genauigkeit gerechnet.

    Ein sinnvoller Vergleich ist beispielsweise möglich, wenn man die Ergebnisse der

    Restschuldberechnung mit der bisherigen Methode und die Ergebnisse, die man mit

    Hilfe der Restschuldformel erzielt, in einer gemeinsamen Tabelle einander

    gegenüberstellt.   

c) Man sollte bei monatlicher (vierteljährlicher) Abrechnung die Daten nur noch jährlich

    ausgeben. In diesem Fall sollten die monatlich bzw. vierteljährlich erhobenen Daten

    zum Jahresende zum Zweck der Ausgabe addiert werden.

d) Üblicherweise bleiben Zinssätze nur für vertraglich festgeschriebene Zeiträume konstant.

    Man sollte die Prozedur so ändern, dass nach einer vorgegebenen Anzahl von Jahren

    ein neuer Zinssatz eingeführt werden kann. Der Tilgungsplan soll die Änderungen des

    Zinssatzes berücksichtigen und den Verlauf von der Kreditaufnahme bis zur

    vollständigen Tilgung kompakt in einem Tilgungsplan darstellen. 

e) In einigen Verträgen werden Sondertilgungsmöglichkeiten eingeräumt. Sehen Sie auch

    in der Prozedur eine Sondertilgungsmöglichkeit bis zu einer vorgegebenen Höhe nach

    einer vorgegebenen Laufzeit vor.

f) Bislang sind alle bisherigen Rechnungen prinzipiell auch ohne EDV-Unterstützung

   durchführbar. Es sollte eine Prozedur zur Effektivzinsberechnung erstellt werden. Zu

   diesem Zweck sollte ein Algorithmus zur Berechnung des Effektivzinssatzes aus der

   Literatur beschafft werden.  

g) Sehen Sie die Möglichkeit für ein Danum vor.

h) Man sollte den Verlauf von Zinsen und Tilgung und Restschuld graphisch darstellen.

 

2. Teil: Experimente mit der Prozedur

 

Experimentieren Sie bei selbstgewählten Ausgangssituationen die Auswirkungen auf

den Tilungsplan.

 

Beispiele:

a) Wie wirken sich Änderungen des Zinssatzes auf die Laufzeit, die Annuität und die

     Gesamtzahlung aus?

b) Welche durchschnittlichen Laufzeiten ergeben sich bei aktuellen Zinssätzen bei

     Anfangstilgungen von 1%, 2%, 3% etc.

c)  Vergleichen Sie Auswirkungen von jährlichen, monatlichen und vierteljährlichen

     Abrechnungszeiträumen auf Gesamtzahlung, Effektivzinssatz und Laufzeit, nachdem

     Sie die entsprechenden Optionen implementiert haben.   

d)  Welche Laufzeit ergibt sich, wenn man einen Kredit mit 1 % Anfangstilgung bei einem

     Zinssatz von 5 % nach einer Laufzeit von 5 Jahren beeendet und dann einen

    Anschlusskredit über einen Zinssatz von 6 % ebenfalls bei 1 % Anfangstilgung aufnimmt?  

________________________________________________________________________________

 

Anmerkungen:

 

1.  Weitere Anregungen finden Sie in der Unterrichsmaterialsammlung unter schule.mupad.de. In diesen

     Notebooks werden eine Vielzahl unterschiedlichster mathematischer Probleme mit MuPAD Pro gelöst.

 

2. In der Materialsammlung des MuPAD Servers findet sich ein Notebook des Autors zum Newtonverfahren,

    bei dem ebenfalls Matrizen zur Datenausgabe und Datenspeicherung benutzt werden. Sie finden dies

    Notebook beispielsweise, indem Sie in der Volltextsuche nach dem Namen des Autors suchen.

 

3. MuPAD stellt auch Funktion für Tabellen und Arrays zur Verfügung. Informationen über diese Funktion finden

    sich unter anderem im MuPAD Tutorium oder in der Hilfe zu MuPAD. Die Möglichkeiten der Nutzung

    dieser Funktionen für die tabellarische Darstellung eines Tilgungsplans werden hier nicht untersucht.

 

4. Es soll hervorgehoben werden, dass Abweichungen zu von Banken oder anderen Institutionen  herausgegebenen

   Tilgungsplänen möglich sind. Diese können unter anderem begründet sein durch

   a) andere als jährliche Abrechnungszeiträume. In diesem Fall sind die Abweichungen unter Umständen

       erheblich.

   b) andere Zahlungszeitpunkte (vorschüssig oder mittelschüssig statt nachschüssig)

   c) andere Rundungsverfahren. 

   Für die Ergebnisse der oben dargestellten Prozeduren kann keine Gewähr übernommen werden.

   Im Abweichungsfall gelten die von Banken oder anderen Institutionen herausgegebenen Tilgungspläne.

________________________________________________________________________________

 

 

 

MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.