Wie erstellen Sie eine Formel mit abnehmenden Renditen?

8

Ich denke, das ist eine mathematische Frage und keine Programmierfrage, aber was ist ein guter Weg, um eine Formel mit abnehmenden Renditen zu erstellen?

Hier sind einige Beispiele, wie die Kurve aussehen soll.

%Vor%

Beachten Sie, dass der Prozentsatz schnell abnimmt, wenn die Eingabe höher wird. Gibt es eine Möglichkeit, eine Funktion zu modellieren, die eine sehr glatte und genaue Kurve hat, die das sagt?

Eine andere Möglichkeit, dies zu sagen, ist ein reales Beispiel. Sie wissen, dass sie in Diablo II Magic Find haben? Es gibt abnehmende Erträge für den magischen Fund. Wenn du 100% bekommst, ist der wahre magische Fund immer noch 100%. Aber je mehr, Ihr tatsächlicher magischer Fund geht unter. So viel, dass, wenn Sie 1200 hatten, Ihr wahrer magischer Fund wahrscheinlich 450% ist. Sie haben also eine Funktion wie:

%Vor%     
egervari 11.05.2010, 18:59
quelle

3 Antworten

16

f (x) = f (0) e -rx


Wobei r die Rate der zusammengesetzten abnehmenden Rendite ist

Dies ist nur ein exponentieller Abfall

    
Pierreten 11.05.2010, 19:03
quelle
3
  

f (1) = 1
  f (1.5) = .98
  f (2) = .95
  f (2.5) = .9
  f (3) = .8
  f (4) = .7
  f (5) = .6
  f (10) = .5
  f (20) = .25

Das macht keinen Sinn: Für 3-5 wird jedes Mal, wenn eins hinzugefügt wird, 0,1 subtrahiert. Bei einer echten Kurve wäre die Ausgabe nicht gleichmäßig zwischen gleichmäßigen Eingaben verteilt. Mit anderen Worten, Ihre Kurve ist keine Kurve, wie Sie der Grafik entnehmen können: Ссылка

Also lassen Sie uns einfach Ihre "Kurve" ignorieren; Es gibt mehrere Möglichkeiten, um abnehmende Renditen zu erzielen. Einer meiner Favoriten ist:

f(x) = (x*a) / (x+b) + c

Sie können a , b und c beliebig setzen. Mit diesem Format wird a + c im Wesentlichen * zu Ihrer maximal möglichen Ausgabe, c ist Ihr Minimum und b steuert, wie schnell die Ausgabewerte skaliert werden und ihre Effektivität relativ zum Wert von a ist. Diese Kurve erhöht natürlich die Ausgabe, wenn die Eingabe zunimmt, während Ihr Beispiel die Ausgabe verringern möchte, wenn die Eingabe zunimmt. Um dies zu beheben, können Sie den Zähler und Nenner tauschen:

f(x) = (x+b) / (x*a) + c

Damit wird der minimale Ausgabewert gleich 1/a + c , der maximale Ausgabewert nähert sich unendlich, wenn der Eingabewert sich 0 nähert. b steuert erneut, wie schnell der Ausgabeskalenwert und seine Effektivität relativ zum Wert von% co_de ist %.

Ein anderer Ansatz wäre, etwas zu verwenden, was von @Pierreten erwähnt wurde, obwohl ich nicht sicher bin, warum er a explizit verwendet:

e

Sowohl a^(-bx) als auch a haben einen starken Einfluss darauf, wie schnell die Kurve skaliert. Wenn b größer als 0 und kleiner als 1 ist, wird die Ausgabe mit steigender Eingabe zunehmen, hat aber auch den gegenteiligen Effekt, was bedeutet, dass sie steigende Renditen hat und nicht nachlässt. Wenn a größer als 1 ist, wird der gewünschte Effekt der Ausgabe geringer, wenn die Eingabe mit abnehmenden Renditen steigt. Das Folgende ist das, was ich den von Ihnen beschriebenen Zahlen am nächsten fand:

  

f (x) = 1.01 ^ (- 6.96607x)
  f (0) = 1
  f (1) = 0,933
  f (3) = 0,812
  f (10) = 0,5
  f (20) = 0,25

Es gibt noch einige andere Optionen, aber das ist lang genug.

    
Joe Zim 01.09.2015 18:51
quelle
0

Jede inverse Exponentialfunktion wie f (x) = 1 / (x 2 ) . Ändern Sie den Exponenten, um die Steilheit der Kurve anzupassen.

    
Barry Brown 11.05.2010 19:04
quelle

Tags und Links