2017-08-12 15 views
-2

Ich versuche eine Exponentialfunktion zu verwenden, um den Abstand zu berechnen, den die z-Koordinate auf dem Bildschirm von der grundlegenden z-Koordinate des Objekts ist, je weiter das Objekt entfernt ist Je langsamer sich das Objekt bewegt und umgekehrt, wenn das Objekt näher kommt, wird es schneller. aber die Berechnung einbezogen dabei eine negative Doppelbasis erfordert Energie doppelt so hoch kann oder auch nicht ein negativesJava Negativ doppelt auf die Potenz eines pos/neg double

Math.pow(-1.1, -(z-25))+10.8347 

sein, wenn ich Zahlen verwenden, um zwischen -10 und 20 all 1,5, es gibt diesen Antworten

-10.0 = -17.26773684806433 
-8.5 = NaN 
-7.0 = 31.948476745352608 
-5.5 = NaN 
-4.0 = -5.028392971714952 
-2.5 = NaN 
-1.0 = 22.752876537727232 
0.5 = NaN 
2.0 = 1.8803975674476092 
3.5 = NaN 
5.0 = 17.56219994932561 
6.5 = NaN 
8.0 = 5.780229715007055 
9.5 = NaN 
11.0 = 14.632198335832413 
12.5 = NaN 
14.0 = 7.981583293889997 
15.5 = NaN 
17.0 = 12.978288810000002 
18.5 = NaN 
20.0 = 9.22419 

Wenn ich Desmos benutze, sollte ich eine schöne langsame Exponentialfunktion mit einer Antwort für alle bekommen. aber hier wird die Berechnung nur funktionieren die Eingabe ist eine gerade ganze Zahl, Dezimalzahlen geben NaN und ungerade Zahlen scheinen ihr eigenes Ding zu tun, so dass die einzigen richtigen Zahlen hier sind -10, -4, 2, 8, 14, 20, setzen Diese Antworten in Excel mit ihrer Antwort zeigt die exponentielle, aber ich würde diese Gleichung für so ziemlich alle Zahlen arbeiten müssen.

+2

Haben Sie [die javadocs für Math lesen. pow] (https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html#pow-double-double-)? "Wenn das erste Argument endlich und kleiner als Null ist ... [und] wenn das zweite Argument endlich ist und keine ganze Zahl, dann ist das Ergebnis NaN." – yshavit

+0

dann gibt es einen Weg, wo ich meine Berechnung von woanders beziehen kann? –

+0

Mit Doppel, nein. Zum Beispiel ist 'Pow.math (x, 1.5)' 'Pow.math (x, 3./2.)'. Das bedeutet die Quadratwurzel von x, gewürfelt. Wenn x negativ ist, ist seine Quadratwurzel eine imaginäre Zahl - und Doppel kann diese nicht ausdrücken. – yshavit

Antwort

2

Eine Formel, die eine Entfernung angeben soll, sollte ein reales, nicht imaginäres Ergebnis für alle anwendbaren Eingaben haben.

Das Erhöhen einer negativen Zahl zu einer Bruchteilleistung hat ein imaginary number Ergebnis. Java Double ist eine Annäherung an die reellen Zahlen. Java Math-Funktionen geben NaN immer dann zurück, wenn das Ergebnis imaginär ist.

Das Erhöhen einer negativen Zahl zu einer geraden ganzzahligen Potenz ergibt ein positives Ergebnis. Das Erhöhen einer negativen Zahl auf eine ungerade ganzzahlige Potenz ergibt ein negatives Ergebnis.

Sie bevorzugen die Ergebnisse für die geraden ganzzahligen Werte von z, die ungeraden ganzzahligen Werten von z-25 entsprechen. Die besser benannte Formel -Math.pow(1.1, -(z - 25)) + 10.8347 stimmt für diese Eingaben überein, aber Sie müssen die Ihrer Formel zugrunde liegende Theorie überdenken.

-10.0 : -17.26773684806433 
-8.5 : -13.524047455696502 
-7.0 : -10.279076745352606 
-5.5 : -7.466387494888428 
-4.0 : -5.028392971714952 
-2.5 : -2.91517790750445 
-1.0 : -1.0834765377272344 
0.5 : 0.5042132175022935 
2.0 : 1.8803975674476092 
3.5 : 3.0732523797913576 
5.0 : 4.107200050674389 
6.5 : 5.00340952651492 
8.0 : 5.780229715007055 
9.5 : 6.453565158914292 
11.0 : 7.037201664167585 
12.5 : 7.543088549146725 
14.0 : 7.981583293889997 
15.5 : 8.36166359815682 
17.0 : 8.691111189999997 
18.5 : 8.976671148126837 
20.0 : 9.22419 
0

ich es herausgefunden, indem sie die Negative aus

Ändern
Math.pow(-1.1, -(z-25))+10.8347 

zu

-(Math.pow(1.1, -(z-25))-10.8347) 

es alle Antworten arbeiten irgendwie lassen

+0

Ich stimme zu, dass die geänderte Formel für die Werte übereinstimmt, die Sie mögen, aber verstehen Sie, warum es in Bezug auf die Theorie, die Sie zu Ihrer ursprünglichen Formel geführt hat? Wenn nicht, können Sie in anderen Fällen Probleme bekommen. –