Frage

Ich brauche eine exponentielle Gleichung mit den folgenden Parametern:

Wenn x = 0, y 153.
= Wenn x = 500, y = 53
Y sollte exponentiell zunehmen, wenn X 0 nähert und sollte exponentiell ab, wenn X 500 annähert.

Aus irgendeinem Grund kann ich mich nicht erinnern, wie dies zu tun. Ich bin sicher, sobald ich die Gleichung (oder eine ähnliche) sehe ich den Rest herausfinden können.

Kontext in Programmierung: Dies ist eine Javascript-Funktion, die die Farbe eines div ändert sich, wenn ein Textfeld die Maximallänge fast erreicht werden. Andere Alternativen oder Code-Schnipsel sind sehr willkommen.

UPDATE: Ich weiß nicht, warum, aber -1500 / (x + 15) +153 gibt mir etwas in der Nähe zu dem, was ich suche. So sieht es aus wie das, was ich für bitte ist nicht das, was ich wirklich wollte.

Ich denke, was ich suche ist:
Wenn x = 0, y = 53
Wenn x = 500, y = 153

War es hilfreich?

Lösung

Bearbeiten (nach dem Update):

Mit Änderungen, die Sie für eine aufsteigende Funktion zu fragen und so etwas wie y = 1 / x.

Die Skala Ihrer Funktion kann geändert werden, um Ihre genauen Koordinaten zu passen, obwohl die Kurve viel steiler zu Beginn geneigt ist.

y = 154 bis 10.100 / (20 * x + 100) @ Wolfram Alpha
Plot von 154 bis 10.100 / (20 * x + 100) von x = 0 bis x = 500 @ Wolfram Alpha

die ganzzahligen Lösungen Kenntnis nehmend, wir von der Lösung machen x = 96, y = 149, die Formel zu ändern, diese Werte in Ihren Koordinatenbereich zu skalieren. Dies wird uns etwas näher an Ihre aktualisierte Kurve, die ein wenig mehr sanft abfällt.

y = 158 - 2625 / (x + 25) @ Wolfram Alpha
Plot von 158-2625 / (x + 25) von x = 0 bis x = 500 @ Wolfram Alpha

Hier ist eine grafische Darstellung Ihrer Version zum Vergleich.

y = -1500 / (x + 15) + @ 153 Wolfram Alpha


Original Antwort (vor Ihrer Update)

Ich denke, Sie werden einige seltsame Konvergenzen in Richtung Ihrer Zielfarbe sehen, wenn Sie eine nicht-lineare Skala verwenden, aber dennoch können Sie eine allgemeine Formel verwenden und entscheiden, was Polynom oder Exponent gibt Ihnen die besten Ergebnisse.

Zuerst wird die algebraische / Polynomfunktion.

A * X ^ N + B = Y

Diese allgemeine Formel kann in System gelöst werden Ihnen ein Polynom der Ordnung N zu geben, die eine Kurve zwischen zwei bekannten Punkten passen. In diesem Fall lösen wir für bis .

das erste Koordinatenpaar Substituieren wir B leicht erhalten.

A * (0) ^ N + B = (153)
0 + B = (153)
B = 153

Nun, das zweite Paar ersetzt wird, können wir A finden.

A * (500) ^ N + 153 = (53)
A * (500) ^ N = -100
A = -100 / (500 ^ N)

Wenn Sie eine lineare Skala möchten, ersetzen Sie N = 1, und das gibt uns A = -0,20.

-0.20 * X + 153 = Y

Wenn Sie eine quadratische Skala möchten, ersetzen Sie N = 2, und das gibt uns A = -0,0004.

-0.0004 * X ^ 2 + 153 = Y

Sie können auch einige nicht-ganzzahligen Wert für N, zwischen 1 und 2 (Versuch 1.5 oder 1.6) verwenden, die ich denke, wird wahrscheinlich zu besseren Suchergebnissen. Beachten Sie auch, dass da diese Funktion zunimmt, wird es schließlich unter Null fallen, aber erst nach der Kurve durch den zweiten Punkt passiert hat.

Hier ist die Exponentialfunktion. Ich benutze e als Basis hier, obwohl Sie es noch etwas größer als 1 verändern könnten eine Kurve zwischen zwei Punkten zu passen, werden wir die besten Ergebnisse, wenn beiden Punkte Y-Wert über Null haben. Sonst würden wir einen Offset hinzufügen müssen und bestimmen, wo wir die Grundlinie sein wollen. Für die Zwecke hier nehmen wir an der Basislinie Y = 0. Dies bedeutet, dass X zunimmt, Y schließlich kriechen, aber nicht wirklich erreichen, 0, nachdem es durch den zweiten Punkt passiert hat.

A * e ^ (B * X) = Y

Auch hier löst für die erste Koordinate.

A * e ^ (B * 0) = 153
A * e ^ (0) = 153
A * 1 = 153
A = 153

Ersetzen Sie in B zu bekommen, mit dem zweiten Koordinate.

153 * e ^ (B * 500) = 53
e ^ (B * 500) = 53 / 153
B * 500 = ln(53 / 153)
B = ln(53 / 153) / 500

ln (val) ist der natürliche Logarithmus, die inverse ^ val e ist. Mein Rechner sagt, dass B etwa gleich -0,0021202920156806272577911119053782 ist, oder vielleicht wäre -0,0021 am besten kurz zu arbeiten. Wenn Sie dies für andere Exponenten Basen lösen wollen, verwenden Exponent / Logarithmus Identitäten in der gleichen Art und Weise für jede andere Basis zu lösen, und die Basis des Logarithmus ln zu ändern () [log () in js] oder log () [log () / Math.LOG10E in js].

Andere Tipps

Sie haben präziser zu sein, aber y = 154-x ^ 0,742625 sollte es tun. Hier wird die Dezimalzahl ist log (101) / log (500).

http://www.wolframalpha.com/input/?i=154 -X ^% 28log% 28101% 29% 2Flog% 28599 29% 29%

Ich weiß nicht, was die Kurve genau wäre, aber es wäre wohl in der Familie sein 1/(x^d)  wobei d der Exponent. Schauen Sie hier für eine Vorstellung davon, was die Kurve aussieht. Ist das, was Sie wollen?

Im Grunde wollen Sie wahrscheinlich die logistische Gleichung dy / dx = K y (ymax lösen - y). Die Lösung ist in dem angegebenen Link.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top