Die $itera()-Funktion in PS-Explore-Datenmasken
und –Makros
am Beispiel
„Liegenschaftszinsberechnung“
Die $itera()-Funktion in
PS-Explore dient der iterativen Berechnung von skalaren Größen.
Die Funktion wird über folgende Parameter gesteuert:
1.
die
Iterationsformel selbst,
2.
den
Startwert für die Iteration,
3.
die
gewünschte Genauigkeit (epsilon),
4.
die
maximale Anzahl der durchzuführenden Iterationsschritte,
5.
die
Angabe, wohin die Ergebnisse der Iteration geleitet werden sollen.
Die Überprüfung der mittels der $Itera()-Funktion
durchgeführten Berechnungen kann über den Ergebnismonitor von PS-Explore
geschehen, welcher via Hauptbefehlsleiste des Autopiloten aktiviert wird.

Die $itera()-Funktion kann als 5.
Parameter eine Steuergröße enthalten, welche angibt, ob und wo die zusätzliche
Ausgabe der Iterationsergebnisse erfolgen soll.
0 bedeutet keine zusätzliche Ausgabe, d.h. es wird lediglich
das reine Iterationsergebnis als numerischer Wert einer entsprechenden Variable
zugewiesen.
1 veranlasst die Ausgabe in den Ergebnismonitor.
2 veranlasst die Ausgabe in den Ergebnismonitor und die
Registerkarte Ergebnisse/Reports des Autopiloten.
Im Beispiel unten erscheint bei Benutzung der $itera()-Funktion in einer Erfassungsmaske automatisch bei
Wahl des 5. Parameters mit 1 oder 2 der Ergebnismonitor auf der
Bildschirmoberfläche.

Die Ausgaben im Ergebnismonitor des Datenerfassungsformulars
enthalten die zugrunde liegende Formel, den Startwert der Iteration ($p$), die
angestrebte Genauigkeit des Iterationsergebnisses, die maximal durchzuführenden
Iterationsschritte, die Iterationsschritte im Detail incl. der für den
jeweiligen Fall in die Formel eingesetzten Werte.
Ferner wird die Differenz zwischen vorletztem und letztem
Iterationsergebnis (delta) ausgegeben und schließlich
der nach der letzten Iteration resultierende Ergebniswert.
Die Ausgabe kann wahlweise auf den Drucker oder in die
Windows-Zwischenablage geleitet werden. Dies geschieht über das per rechter
Maustaste zu aktivierende Popup-Menü der Datenerfassungsmaske über den Punkt
„Ergebnismonitor“.

Nachstehend
findet man ein entsprechendes Beispielergebnis:
Formel=(be_gjahresreinertrag-((be_kgesamtkp_1_1-be_ewzuschlaege+be_ewgabschlaege- be_fzuverzbw)*$p$)/(exp(be_rnd*ln(1+$p$))-1))/(be_kgesamtkp_1_1-be_ewzuschlaege+be_ewgabschlaege)
Startwert = 0.06947459834
Genauigkeit = 0.0001
max. Iterationen = 20
Iteration 1 =
(12000-((172725-0+0-0)*0.06947459834)/(exp(20*ln(1+0.06947459834))-1))/(172725-0+0)
Iteration 2 =
(12000-((172725-0+0-0)*0.04494138269)/(exp(20*ln(1+0.04494138269))-1))/(172725-0+0)
Iteration 3 =
(12000-((172725-0+0-0)*0.03757887914)/(exp(20*ln(1+0.03757887914))-1))/(172725-0+0)
Iteration 4 =
(12000-((172725-0+0-0)*0.03504056105)/(exp(20*ln(1+0.03504056105))-1))/(172725-0+0)
Iteration 5 =
(12000-((172725-0+0-0)*0.03412825671)/(exp(20*ln(1+0.03412825671))-1))/(172725-0+0)
Iteration 6 =
(12000-((172725-0+0-0)*0.0337956328)/(exp(20*ln(1+0.0337956328))-1))/(172725-0+0)
Iteration 7 =
(12000-((172725-0+0-0)*0.033673733)/(exp(20*ln(1+0.033673733))-1))/(172725-0+0)
delta = 0.00004475748
Ergebnis = 0.03362897551
Ebenso wie aus einer Datenerfassungsmaske kann die $itera()-Funktion aus einem Makro heraus aufgerufen werden.
Die Werte zur „Versorgung“ der Iterationsformel stehen hierbei
im Arbeitsblatt und werden per rechne-Befehl in der
Iterationsformel verarbeitet.

Eine kurze Erläuterung der $itera()-Funktion
kann über die Programmierhilfe der Makroregisterkarte angezeigt werden.

Im nachstehenden Beispiel findet man eine Iteration mittels
des rechne-Befehls der Makrosprache von PS-Explore.
Berechnet wird hierbei der Liegenschaftszins gemäß der Formel:
rechne Lzins = $itera((jahresreinertrag -(Kaufpreis-Bodenwert+$p$)/((1+$p$)*Restnutzungsdauer-1))/Kaufpreis,
Jahresreinertrag/Kaufpreis, 0.005, 20, 1)

Wendet man den rechne-Befehl ohne
Angabe des Zeilenbereiches an, erfolgt die Iteration und die Ausgabe der
Einzelergebnisse über alle Fälle. Die letzte Berechnung (letzter Fall)
erscheint im Ergebnismonitor. Will man die Iterationsschritte für alle Fälle
haben, dann wählt man die Ausgabe nach Ergebnisse/Reports durch Setzen des 5.
Parameters der $itera()-Funktion gleich 2.

Es bedarf eigentlich keiner besonderen Erwähnung, dass der
gesamte Iterationsmechanismus selbstverständlich nur funktioniert, wenn man eine
Funktion wählt, die auch tatsächlich nach einer Anzahl von endlichen Schritten
gegen einen Zielwert konvergiert. Auch liegt der mathematische Konvergenzbeweis
natürlich beim Anwender selbst, wenngleich man mittels der neuen Funktionen die
praktische Konvergenz im Einzelfall jederzeit sichtbar überprüfen kann.