Potenzieren mit rationalen Potenzen ohne Math.pow

Scha7tenblut

Mitglied
Hi, für ein Berufsschulprojekt möchte ich eine Potenzfunktion schreiben, die 2 Parameter braucht, um das Ergebnis zu berechnen. Dabei soll sie nicht Math.pow verwenden und muss bei ihren Parametern double-Zahlen akzeptieren, also zum Beispiel 1,5 hoch -1,7. Könnt ihr mir da weiterhelfen, weil egal, wie ich versuche, es mir darzustellen, ich komme jedesmal dabei raus, dass Math.pow notwendig ist.
12955
So sieht die Funktion derzeit aus und ich möchte halt double ergebnis ohne Math.pow errechnen können.
Ich danke im Voraus für gute Vorschläge
Scha7tenblut
 
Du könntest das umlagern:
Java:
	static double pow(double x, double y) {
	    return Math.exp(Math.log(x)*y);
	}

jetzt müsstest Du nur noch log und exp umsetzen.
 
So sieht die Funktion derzeit aus und ich möchte halt double ergebnis ohne Math.pow errechnen können
x^y b,x Element aus den reellen Zahlen
e Die Eulersche Zahl
Es gilt:
x = e^ln(x) -> x^y = (e^ln(x))^y = e^(y*ln(x))

Also benötigst Du noch den Logarithmus.
Beachten Sie, dass man mit den Logarithmen zwischen 1 -10
Logarithmen von beliebigen Zahlen berechnen kann, z.B.
lg 123456.78 = lg (1.2345678 * 105) = 5 + lg 1.2345678 oder lg 0.00012345678 = lg (1.2345678 * 10-4) = -4 + lg 1.2345678
Zur Berechnung der Logarithmen zwischen 1 -10 verwendet man z.B. eine Taylorreihe.
https://www.mathematik.ch/anwendungenmath/logarithmen/
 
das hab ich doch weiter oben:
return Math.exp(Math.log(x)*y);
Math.exp(a); ist Folgendes:
Returns Euler's number e raised to the power of a double value. [...]
also braucht er einmal den Logarithmus berechnen und einmal Math.exp...

Das aber auch NUR, wenn es sich um reelle/irrationale/double Zahlen handelt. Wenn der Exponent eine Ganzzahl ist, wäre es ja viel einfacher...
 
Ok ich müsste jetzt die Web browsing history von Vor zwei Tagen hervorkramen und mir 1000 Einträge angucken - dazu hab ich keine Lust. 😛 Wie gesagt es stand irgendwo, aber ich hab es nicht gebookmarked... Wenn ich es gebookmarked hätte, wäre es vielleicht noch schlimmer. 😵
 
Im Grund muss man "nur" (*) herausfinden was die in Java.Math vorgegebene pow-Funktion intern tut: https://docs.oracle.com/javase/8/docs/api/java/lang/Math.html Und man kann durchaus 0^0 rechnen (Ergebnis 1): 0^0 im Google Rechner

(*)leicht gesagt
Math.pow verweist auf VMMAth.pow und dort ist es als native methode ohne weitere information definiert. Und zu dem null hoch null: Du kannst daran aus drei Richtungen rangehen: x hoch 0=1, 0 hoch x = 0 oder direkt undefiniert deklarieren, weil es sonst heißen würde, dass 0=1 und das ist ja, wie wir wissen, totaler Unsinn
 
Also erneutes Edit: Es sollen nicht nur rationale Zahlen, sondern auch reelle Zahlen als Exponenten funktionieren. Die Basis ist in der Hinsicht erstmal egal, da sie ja dann einfach multipliziert wird/mit ihr "nur" gerechnet wird.
 

Zurück
Oben