8.11 Annuität
Für einen Hypothekenkredit soll die Annuität (d.h. der Ratenbetrag für den Zazhlungszeitraum)
berechnet werden.
Eingabewerte sind :
k = Kapital runde Werte verwenden
z = Zinsatz z.B. 7.25
l = Laufzeit Volle Jahre <= 30
r = Raten/Jahr 12, 6, 4, 2, 1
Die Formel dafür lautet:
Q - 1
a = k * Qlr * ----------------
Qlr - 1
Der Aufzinsungsfaktor Q wird wie folgt berechnet :
z
Q = 1 + ------------
100 * r
Das Script soll die Ausgabewerte in tabellerischer Übersicht in eine Datei schreiben,
damit der Kunde eine Entscheidungsgrundlage hat. Dabei sind Jahre automatisch zu variieren.
Zum besseren Verständnis der I/O-Anweisungen soll mit getline und Umleitung gearbeitet werden
Beachten Sie, daß die Ausgabeumleitung > anders als in der Shell wirkt.
Kapital Zinssatz Laufzeit Raten/Jahr Annuität Gesamtrückzahlung
100000.00 7.25 30 12 682.18 245583.46
100000.00 7.25 25 12 722.81 216842.06
100000.00 7.25 20 12 790.38 189690.24
100000.00 7.25 15 12 912.86 164315.32
100000.00 7.25 10 12 1174.01 140881.25
100000.00 6.50 30 12 632.07 227544.49
100000.00 6.50 25 12 675.21 202562.15
100000.00 6.50 20 12 745.57 178937.55
100000.00 6.50 15 12 871.11 156799.33
100000.00 6.50 10 12 1135.48 136257.57
540000.00 7.75 30 12 3868.63 1392705.41
540000.00 7.75 25 12 4078.78 1223632.59
540000.00 7.75 20 12 4433.12 1063949.34
540000.00 7.75 15 12 5082.89 914920.03
540000.00 7.75 10 12 6480.57 777668.89
8.11.1 Annuität Lösung
#! /bin/ksh
# -------------------------------------------------------------
# Erzeugt : 12.01.97
# Autor : D. Hahn
# Beschreibung : Berechnet Annuität
# -------------------------------------------------------------
# Modif.Log :
#:
# -------------------------------------------------------------
# Mainscript awk_annu
# -------------------------------------------------------------
awk '
BEGIN { print "Annuitätsberechnung" }
{ printf "Kapital : "
getline k
if (cnt % 25 == 0)
{ printf "\f Kapital Zinssatz Laufzeit Raten/Jahr " \
" Annuität Gesamtrückzahlung \n\n" > "awk_annu_list"
cnt = 1
}
printf "Laufzeit : "
getline l
printf "Zinssatz : "
getline z
printf "Raten/Jahr : "
getline r
printf "\nKapital %8.2f \n",k
printf "Zinssatz %7.2f \nRaten/Jahr %2d \n",z,r
q= 1 + z / (100 * r) # aufz_faktor
for ( j = 1; j < 6; j++)
{
nz = l * r # Anzahl der gesamtzahlungen
qnz = q ^ nz
annu = k * qnz * (q - 1) / (qnz -1)
printf "Laufzeit %3d Annuität : %8.2f ",l , annu
ges = annu * nz
printf "Gesamtrückzahlung %9.2f\n", ges
printf " %7.2f %6.2f %3d %2d %8.2f %12.2f\n",
k, z, l,r, annu, ges > "awk_annu_list"
cnt++
l -=5
}
printf "\n" > "awk_annu_list" # In der Shell wäre jetzt alles weg
# hier wird jedoch angehängt
cnt++ # Zeilenzähler erhöhen
}
'
cat awk_annu_list