“The man of knowledge must be able not only to love his enemies but also to hate his friends.” [Friedrich Nietzsche]

Abstract

Alexander W. fand eine Interpolationsformel für Aufgabenstellungen, die häufig bei Steuern oder Provisionsberechnungen auftreten:

=MIN(C6%%*{110;70;35;25}+{0;400;1275;1775};3212,5)

Für das nachfolgende Beispiel wäre das Resultat 2.150 für den Eingabewert 250.000:

MiniMax_Interpolation

Wie berechnet man die Funktionsparameter und welches sind die Voraussetzungen oder Bedingungen unter denen diese Formel angewandt werden kann? Diese Formel kann genau dann verwendet werden, wenn die Funktion y = f(x) monoton ist, d. h. entweder monoton steigend oder monoton fallend:

MiniMax_Interpolation_2

Ein Beispiel, für das diese Formel nicht verwendet werden kann:

MiniMax_Interpolation_3

Wenn dieser Ansatz genutzt werden kann, ist er sehr schnell. Nur falls die Anzahl der Interpolationen und die Zahl der Streckenabschnitte deutlich erhöht wird (z. B. einige hundert), dann ist die Ausführungszeit nicht wesentlich schneller als meine benutzerdefinierte Funktion sbInterp.

Ich empfehle, diesen Minimax Ansatz nicht als manuelle Rechnung zu implementieren, sondern als semi-automatische:

MiniMax_Interpolation_4

Die notwendigen Tabellenblattformeln sind:

C3 =WENN(A3<>"";(B3-B2)/(A3-A2);"") [nach unten kopieren soweit wie nötig]
D3 =WENN(A3<>"";B2-C3*A2;"") [nach unten kopieren]
E2 =ANZAHL(A:A)
E4 =UND(C3:INDEX(C:C;E2)<=C4:INDEX(C:C;E2+1))
E6 =UND(C3:INDEX(C:C;E2)>=C4:INDEX(C:C;E2+1))
F4 =WIEDERHOLEN("=MAX(F2 * {" & TEXTVERKETTEN(","; WAHR; C3:INDEX(C:C; E2 + 1)) & "} + {" & TEXTVERKETTEN(","; WAHR; D3:INDEX(D:D; E2+1)) & "})"; E4)
F6 =WIEDERHOLEN("=MIN(F2 * {" & TEXTVERKETTEN(","; WAHR; C3:INDEX(C:C; E2 + 1)) & "} + {" & TEXTVERKETTEN(","; WAHR; D3:INDEX(D:D; E2 + 1)) & "})" ;E6)
F7 =WIEDERHOLEN("No solution: slopes need to increase or to decrease monotonously!";NICHT(E4+E6))
F9 =WENN(E4;sbEval(F4);WENN(E6;sbEval(F6);"")) [mit der benutzerdefinierten Funktion sbEval:
Function sbEval(s As String) As Variant
    Application.Volatile
    sbEval = Evaluate(s)
End Function

Bitte den Haftungsausschluss im Impressum beachten.

MiniMax_Interpolation.xlsm [73 KB Excel Datei, Download und Nutzung auf eigene Gefahr]

Hinweis: Eine umfassende Dokumentation meiner Excel Implementierungen finden Sie in Excel VBA Eine Sammlung.