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.